当前位置: 首页 > news >正文

【插件式微服务架构系统分享】之 解耦至上:gateway 网关与APISIX 网关的不同分工

【插件式微服务架构系统分享】之解耦至上:gateway 网关与APISIX 网关的不同分工

作者:朱元禄

一、一个比方

  • APISIX 就像是一个专业的高速公路收费站,不属于你公司自己造的路,而是专门为所有车辆(流量)设计的,功能强大、扩展性好、可以插各种“插件”(比如限速、安检、计费、分流等)。
  • 你项目里的 gateway(比如 Spring Cloud Gateway 或自研网关)就像是你公司门口的保安岗亭,主要负责自己公司的进出管理,和公司内部业务结合得很紧密。

二、技术对比(为啥一定要有 APISIX 这一层)

对比点APISIX(专业API网关)项目内 gateway(如Spring Cloud Gateway)
定位独立于业务的API流量入口,专注流量治理业务系统自带的网关,和业务代码耦合较多
部署方式独立服务,通常和业务解耦项目代码里一部分,和业务服务一起维护
扩展能力插件丰富(限流、鉴权、灰度、监控、WAF等)插件能力有限,主要靠Spring生态
动态路由支持热更新、动态注册、服务发现(如Nacos)支持,但通常和Spring Cloud体系绑定
性能高性能,专为大流量设计性能较好,但受限于JVM和Spring生态
生态支持多语言后端、K8s、云原生、OpenAPI等主要服务于Java/Spring Cloud微服务
运维独立运维,和业务服务分离和业务服务一起运维
典型场景多语言、多团队、插件化、商业化、SaaS平台纯Spring Cloud微服务体系,业务耦合场景

三、结合项目实际

1. 项目里的 gateway

  • 目录:jeecg-server-cloud/jeecg-cloud-gateway/
  • 作用:作为Spring Cloud微服务的统一入口,负责路由、鉴权、限流等,和JEECG-Boot业务体系深度集成。
  • 适合:内部微服务调用、业务相关的流量管理

2. 如果引入 APISIX

  • 作为独立的API网关,放在所有流量最前面,负责所有外部/第三方/前端流量的统一入口
  • 可以和Nacos结合,自动发现你所有的微服务(包括主系统和插件)。
  • 适合:插件化、商业化、SaaS多租户、对外API开放、流量治理、灰度发布等场景

3. 两者如何配合?

  • 最优做法
    • APISIX 作为最外层的“总入口”,负责所有外部流量的统一治理、插件化扩展、动态路由。
    • 你项目的 gateway 作为内部微服务的“二级网关”,继续负责和业务强相关的路由、鉴权、内部限流等。
    • 流量路径
      用户/前端 → APISIX → 你项目的 gateway → 各业务服务/插件

四、最简单的落地实践

  • 不动现有 gateway,直接在前面加一层 APISIX,负责插件市场、商业化、对外API等流量治理。
  • 插件服务、主系统都注册到Nacos,APISIX自动发现并路由。
  • 这样既保留了你项目原有的微服务体系,又获得了APISIX的强大流量治理和插件化能力。

五、业务流量场景说明

1. 用户访问商城下单(涉及插件)

场景说明
  • 用户在商城下单,可能会用到优惠券、会员价等插件功能。
  • 需要鉴权、插件授权校验、服务间调用。
详细流程
  1. 用户请求
    用户在前端点击“下单”,前端发起下单API请求(带JWT Token)。

  2. APISIX网关

    • 首先到达APISIX。
    • APISIX执行JWT鉴权(校验Token是否合法、是否过期)。
    • APISIX根据路由规则,将请求转发到内部gateway。
  3. gateway(内部网关)

    • gateway根据请求路径,将流量路由到core-service(商城核心服务)。
    • gateway可做内部权限、限流等处理。
  4. core-service(商城核心服务)

    • 处理下单主流程。
    • 检查用户是否有优惠券、会员资格等(需要用到插件)。
    • 通过服务发现(Nacos),调用coupon-servicemember-service等插件服务。
  5. 插件服务(如coupon-service/member-service)

    • 插件服务收到请求,先校验调用方(如租户、用户)是否有授权(查License中心或本地授权表)。
    • 返回优惠券/会员价等信息给core-service。
  6. core-service

    • 汇总所有信息,完成下单逻辑,返回下单结果。
  7. gateway → APISIX → 前端

    • 响应一路返回,最终到达用户前端。
流程图
用户前端APISIXgatewaycore-servicemember-servicecoupon-service下单操作POST /api/order/create (JWT)JWT鉴权路由到gateway路由到core-service调用member-service(查会员)调用coupon-service(查优惠券)返回会员信息(校验授权)返回优惠券信息(校验授权)返回下单结果返回返回展示下单结果用户前端APISIXgatewaycore-servicemember-servicecoupon-service

2. 用户查看报表插件

场景说明
  • 用户想看报表(如销售统计),报表是一个插件服务。
详细流程
  1. 用户请求
    用户在前端点击“查看报表”,前端发起API请求(带JWT Token)。

  2. APISIX网关

    • 首先到达APISIX。
    • APISIX执行JWT鉴权。
    • APISIX根据路由规则,直接将请求转发到report-service(报表插件服务)。
  3. report-service(插件服务)

    • 校验用户/租户是否有授权(查License中心或本地授权表)。
    • 查询报表数据,返回结果。
  4. APISIX → 前端

    • 响应返回到前端,展示报表。
流程图
用户前端APISIXreport-service查看报表GET /api/report/xxx (JWT)JWT鉴权路由到report-service校验授权,查询数据返回报表数据返回展示报表用户前端APISIXreport-service

3. 内部服务间调用(无需APISIX)

场景说明
  • core-service(商城核心)需要在业务流程中调用member-service(会员插件),比如下单时判断会员价。
详细流程
  1. core-service发起调用

    • 通过Nacos服务发现,找到member-service的地址。
    • 直接通过gateway(或Spring Cloud内部负载均衡)发起HTTP/RPC调用。
  2. gateway(可选)

    • 如果内部服务间流量也统一走gateway,则gateway做一次内部路由。
  3. member-service(插件服务)

    • 校验调用方(如租户、服务授权)。
    • 返回会员信息。
  4. core-service处理业务

    • 使用会员信息完成业务逻辑。
流程图
core-servicegatewaymember-service请求会员信息路由到member-service校验授权返回会员信息返回core-servicegatewaymember-service

也可以C直接调用M(如果不强制走gateway),当然我个人认为这个不是重要场景也不是对外,直接调用就行

http://www.lryc.cn/news/612897.html

相关文章:

  • 一文解读“Performance面板”前端性能优化工具基础用法!
  • SpringAI
  • 数据结构---循环队列(补充 应用实例)、哈希表(哈希存储、哈希冲突、解决方法、举例实现)
  • Linux Docker 新手入门:一文学会配置镜像加速器
  • 躺平发育小游戏微信抖音流量主小程序开源
  • 透明矿山:科技重塑矿业未来
  • Numpy科学计算与数据分析:Numpy随机数生成入门
  • 光纤滑环 – 光纤旋转接头(FORJ)- 杭州驰宏科技
  • AutoMQ-Kafka的替代方案实战
  • QML与C++交互的方式
  • Kafka数据生产和发送
  • 基于Spring Cloud Stream与Kafka的事件驱动微服务架构设计与实战指南
  • 【Kafka系列】第二篇| Kafka 的核心概念、架构设计、底层原理
  • MQTT:Dashboard访问授权
  • MQTT:Dashboard黑名单与连接抖动
  • 【LeetCode】set和map相关算法题 前K个高频单词、随机链表的复制、两个数组的交集、环形链表
  • Flink-1.19.0源码详解9-ExecutionGraph生成-后篇
  • VScode使用jupyter notebook,配置内核报错没有torch解决
  • 贪心算法分析与解决指南
  • 1.电动汽车动力电池系统技术介绍与分类
  • 机器视觉系统工业相机的成像原理及如何选型
  • OpenCV图像处理入门实战指南
  • 为什么需要日志收集系统
  • 【运维】自动化生产环境部署工作流
  • Mac/Windows跨平台PDF与AI高效解决方案
  • day 48 模型的可视化与推理
  • 连续最高天数的销售额(动态规划)
  • 3D 软件在游戏开发中的全链路应用:从原型到上线的实战解析
  • 音乐创作好助手—— 蘑兔音乐
  • 【自动驾驶】《Sparse4Dv3》代码学习笔记