微服务 API 网关架构演进 Spring Cloud Gateway ShenYu APISIX

后台服务网关

Spring Cloud Gateway

基于Nacos实现Spring Cloud Gateway实现动态路由

Spring Gateway 如何搭建网关服务以及实现动态路由?

微服务spring cloud gateway 路由参数和过滤策略配置(yaml和json格式)

Spring Cloud Gateway自定义过滤器

从0到1学SpringCloud——11 gateway网关路由配置详解

从0到1学SpringCloud——12 gateway 动态配置网关路由规则

springcloud gateway网关获取post请求参数,网关路由,网关限流,熔断降级等实际操作

Spring Cloud Gateway网关之超时时间配置

重试配置

Spring Cloud Gateway重试机制

spring gateway失败重试机制

springcloud gateway 自定义路由filter Retry重试配置

遇到问题

1.get请求含有特殊字符报400 bad request问题解决
spring-boot.version: 2.7.5
spring-cloud.version: 2021.0.5
yml配置:

#tomcat公共配置
server:
  tomcat:
    relaxed-query-chars: '[,],{,},|'
    relaxed-path-chars: '[,],{,},|'

Apache ShenYu

官网文档

Apache ShenYu Github

国产高性能java网关–神禹shenyu

微服务网关Apache Shenyu

Apache ShenYu(incubating) 发布 2.4.3,异步高性能跨语言响应式 API 网关

docker 部署 shenyu

docker pull apache/shenyu-admin
docker network create shenyu
docker run --name sheny-admin -d -p 9095:9095 --net shenyu apache/shenyu-admin

docker network create shenyu
docker pull apache/shenyu-bootstrap
docker run --name sheny-bootstrap -d -p 9195:9195 --net shenyu apache/shenyu-bootstrap

默认账户admin/123456

Higress

Higress是什么

fizz-gateway-community

fizz-gateway-community: 微服务API聚合网关

企业案例

阿里技术专家:“双11”亿级流量背后的API网关、微服务架构实践!

京东API网关实践之路

成本直降50%,下一代网关震撼发布

网关系统就该这么设计

前台流量网关

APISIX

百万级 QPS 业务新宠,Apache APISIX 打造网关实践新体验

API 网关选型及包含 BFF 的架构设计

APISIX 入门

API网关介绍

API网关(API Gateway)是一个服务器集群,对外的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,对外提供REST/HTTP的访问API。同时还具有其它非业务相关的职责,如身份验证、监控、负载均衡、缓存、流量控制等。

API管理

API网关核心功能是 API 管理。提供 API 的完整生命周期管理,包括创建、维护、发布、运行、下线等基础功能;提供测试,预发布,发布等多种环境;提供版本管理,版本回滚。

API配置包括 前端配置 和 后端配置 。前端配置指的是Http相关的配置,如HTTP 方法、URL路径,请求参数等。后端配置指的是微服务的相关配置,如服务名称、服务参数等。这样通过API配置,就完成了前端Http到后端微服务的转换。

全异步

由于API网关主要处理的是网络I/O,那么通过非阻塞I/O以及I/O多路复用,就可以达到使用少量线程承载海量并发处理,避免线程上下文切换,大大增加系统吞吐量,减少机器成本。

常用解决方案有 Tomcat/Jetty+NIO+servlet3.1 和 Netty+NIO,这里推荐Netty+NIO,能实现更高的吞吐量。Spring 5.0 推出的WebFlux反应式编程模型,特点是异步的、事件驱动的、非阻塞,内部就是基于Netty+NIO 或者 Servlet 3.1 Non-Blocking IO容器 实现的。

链式处理

链式处理即通过责任链模式,基于 Filter 链的方式提供了网关基本的功能,例如:路由、协议转换、缓存、限流、监控、日志。也可以根据实际的业务需要进行扩展,但注意不要做耗时操作。

在这里插入图片描述

Spring cloud gateway (基于 Spring WebFlux)的工作机制大体如下:

Gateway 接收客户端请求。
客户端请求与路由信息进行匹配,匹配成功的才能够被发往相应的下游服务。
请求经过 Filter 过滤器链,执行 pre 处理逻辑,如修改请求头信息等。
请求被转发至下游服务并返回响应。
响应经过 Filter 过滤器链,执行 post 处理逻辑。
向客户端响应应答。

请求限流

请求限流是在面对未知流量的情况下,防止系统被冲垮的最后一道有效的防线。可以针对集群、业务系统和具体API维度进行限流。

具体实现可以分为集群版和单机版,区别就是集群版是使用后端统一缓存如Redis存储数据,但有一定的性能损耗;单机版则在本机内存中进行存储(推荐)。

常用的限流算法:计数器、漏桶、令牌桶(推荐)

熔断降级
服务熔断

当下游的服务因为某种原因突然变得不可用或响应过慢,上游服务为了保证自己整体服务的可用性,不再继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用。

熔断是为了解决服务雪崩,特别是在微服务体系下,通常在框架层面进行处理。内部机制采用的是断路器模式,其内部状态转换图如下:

在这里插入图片描述

服务降级

当负荷超出系统整体负载承受能力时,为了保证核心服务的可用,通常可以对非核心服务进行降级,如果返回缓存内容或者直接返回。

服务降级的粒度可以是API维度、功能维度、甚至是系统维度,但是都需要事前进行服务级别的梳理和定义。

真实场景下,通常是在服务器负载超出阈值报警之后,管理员决定是扩容还是降级。

业务隔离

API网关统一了非业务层面的处理,但如果有业务处理的逻辑,不同业务之间就可能会相互影响。要进行业务系统的隔离,通常可以采用线程池隔离和集群隔离,但对于Java而言,线程是比较重的资源,推荐使用集群隔离。

网关功能

1.用户鉴权和登陆校验,支持接口级别配置。
2.黑白名单,分全局和应用,以及 IP 维度,参数级别。
3.流量控制,支持自动和手动,自动是对超大流量自动拦截,通过令牌桶算法实现。
4.智能熔断,在 Histrix 的基础上做了改进,支持自动升降级,我们是全部自动的,也支持手动配置立即熔断,就是发现服务异常比例达到阀值,就自动触发熔断。
5.灰度发布,我对新启动的机器的流量支持类似 TCP 的慢启动机制,给机器一个预热的时间窗口。
6.统一降级,我们对所有转发失败的请求都会找统一降级的逻辑,只要业务方配了降级规则,都会降级,我们对降级规则是支持到参数级别的,包含请求头里的值,是非常细粒度的,另外我们还会和 varnish 打通,支持 varnish 的优雅降级。
7.流量调度,支持业务根据筛选规则,对流量筛选到对应的机器,也支持只让筛选的流量访问这台机器,这在查问题/新功能发布验证时非常用,可以先通过小部分流量验证再大面积发布上线。
8.流量 copy,我们支持对线上的原始请求根据规则 copy 一份,写入到 MQ 或者其他的 upstream,来做线上跨机房验证和压力测试。
9.请求日志采样,我们对所有的失败的请求都会采样落盘,提供业务方排查问题支持,也支持业务方根据规则进行个性化采样,我们采样了整个生命周期的数据,包含请求和响应相关的所有数据。

<think>好的,用户的问题是关于Spring Cloud Gateway的国产化替代方案或适配方法。我需要先理解用户的需求,他们可能是在寻找国内开发的API网关,以替代Spring Cloud Gateway,或者需要适配现有的系统到国产环境中。 首先,我想到参考用户提供的引用内容。引用3提到了国产的APISIX网关,并比较了它与Spring Cloud Gateway的优缺点。APISIX支持多种服务注册中心,如Eureka、Nacos、Consul,这可能适合需要集成多种异构系统的企业环境。同时,APISIX的插件机制可以替代Spring Cloud Gateway的Filter,提供熔断、限流等功能,这应该是一个重要的替代方案。 然后,引用4提到Spring Cloud组件的替代方案,可能还有其他国产网关产品。比如ShenYu(Apache ShenYu)也是一个开源的API网关,支持丰富的插件和协议,可能符合用户的需求。此外,腾讯的TSE Mesh和华为的CSE可能也是选项,不过需要确认它们是否直接替代Spring Cloud Gateway的功能。 用户可能需要具体的替代方案,包括开源产品和商业产品。APISIXShenYu都是Apache项目,社区活跃,文档支持中文,适合国内用户。商业产品如阿里云微服务引擎MSE和腾讯云API网关,提供了托管服务,可能更适合需要快速部署和运维支持的企业。 适配方法方面,用户可能希望在不更换网关的情况下进行国产化适配。引用3提到APISIX可以通过插件扩展,这可能包括与国产服务注册中心、配置中心的集成,比如Nacos。另外,结合Spring Cloud Alibaba的组件,如Sentinel,可以增强网关的治理能力。 需要确认各个替代方案的特点,比如性能、社区支持、与现有Spring Cloud生态的兼容性。例如,APISIX基于Nginx和OpenResty,性能较高,而ShenYu支持Dubbo集成,适合不同的技术栈。商业产品则提供稳定性保障和技术支持,适合对可靠性要求高的场景。 总结下来,替代方案主要分为开源网关和云服务商提供的网关。用户需要根据自身技术栈、性能需求、运维能力来选择。同时,适配方法可能涉及现有Spring Cloud Gateway的改造,集成国产组件如Nacos和Sentinel,或者使用APISIX的插件机制来替换原有的过滤器功能。</think>### Spring Cloud Gateway 国产化替代方案及适配方法 #### 一、国产化替代方案 1. **APISIX 网关** - **特点**:APISIX 是基于云原生架构的开源 API 网关,支持动态路由、负载均衡、限流、熔断等功能,通过插件机制可扩展性极强[^3]。 - **优势**: - 兼容多种服务注册中心(如 Nacos、Eureka、Consul),适合异构系统环境[^3]。 - 通过插件替代 Spring Cloud Gateway 的 Filter 过滤器,例如使用 `limit-req` 插件实现限流。 - **适用场景**:需统一管理多注册中心且对性能要求较高的企业。 2. **ShenYu(Apache ShenYu)** - **特点**:国产开源 API 网关,支持 HTTP、Dubbo、gRPC 等多种协议,提供鉴权、监控、灰度发布等功能。 - **优势**: - 与 Spring Cloud 生态无缝集成,支持通过注解或配置文件定义路由规则。 - 社区活跃,中文文档完善。 3. **云服务商提供的网关** - **阿里云微服务引擎(MSE)**:托管式 API 网关,兼容 Spring Cloud 和 Dubbo,提供全链路灰度、服务治理能力[^4]。 - **腾讯云 TSE Mesh**:基于 Envoy 的 API 网关,支持服务发现、流量控制,适配 Spring Cloud 微服务架构[^4]。 - **华为云 CSE**:提供统一网关服务,支持多协议转发和动态配置。 --- #### 二、适配方法 1. **直接替换为 APISIX** - **步骤**: - 使用 APISIX 的 `routes` 配置替代 Spring Cloud Gateway 的 `Predicate` 和 `Filter`。 - 通过插件(如 `proxy-rewrite`)实现请求路径重写和负载均衡。 - **示例配置**: ```yaml routes: - uri: /service/** upstream: nodes: "nacos-service:8080": 1 plugins: limit-req: rate: 1000 ``` 2. **结合 Spring Cloud Alibaba 生态** - 使用 **Nacos** 替代 Eureka 作为服务注册中心,通过 **Sentinel** 实现熔断和限流[^1]。 - 在 Spring Cloud Gateway 中集成国产组件: ```yaml spring: cloud: gateway: routes: - id: nacos_route uri: lb://nacos-service predicates: - Path=/api/** ``` 3. **渐进式迁移** - **混合部署**:保留 Spring Cloud Gateway 处理部分流量,逐步将新服务迁移至 APISIXShenYu。 - **兼容性适配**:通过网关层统一转发请求,屏蔽后端服务差异。 --- #### 三、选型建议 | 方案 | 性能 | 社区支持 | 与 Spring Cloud 兼容性 | 适用场景 | |---------------|------|----------|------------------------|------------------------| | APISIX | 高 | 活跃 | 需插件适配[^3] | 异构系统、高并发场景 | | ShenYu | 中 | 中等 | 原生支持 | 多协议、混合技术栈 | | 云服务商网关 | 高 | 商业支持 | 部分兼容 | 云原生、快速部署需求 | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值