SpringCloudGateway之高性能篇

SpringCloudGateway之高性能篇

背景

在公司的开放平台中,为了统一管理对外提供的接口、处理公共逻辑、实现安全防护及流量控制,确实需要一个API网关作为中间层。
在这里插入图片描述

场景

统一接入点:
API网关作为所有对外服务的单一入口,简化客户端对内部系统的访问,同时方便整体管理和运维。

公共逻辑处理:
在Spring Cloud Gateway中,可以通过自定义过滤器(GatewayFilter)的方式集中处理公共逻辑,例如全局异常处理、日志记录、跨域支持等。

权限验证:
可以在过滤器中实现JWT token验证或者其他认证方式,验证请求的合法性。例如,可以通过pre类型的过滤器对请求头中的Authorization信息进行验证。

限流控制:
使用Spring Cloud Gateway内置的RequestRateLimiter过滤器或者集成第三方限流组件(如Sentinel或Redis RateLimiter),限制来自单个IP地址、用户或服务的请求速率,防止因过载导致系统崩溃。

路由转发:
根据请求路径或其他条件,通过定义路由规则(RoutePredicateFactory)将请求转发至对应的服务实例,同时也可在路由层面实现灰度发布、A/B测试等功能。

熔断与降级:
集成熔断组件如Hystrix或Resilience4j,当后端服务不可用或响应过慢时,及时触发熔断机制,返回预设的错误提示或默认数据,避免连锁反应导致整个系统崩溃。

SpringCloudGateway示例

spring:
  cloud:
    gateway:
      routes:
      - id: my_public_api
        uri: lb://backend-service
        predicates:
        - Path=/api/public/**
        filters:
        - name: TokenAuthenticationFilter # 自定义的Token验证过滤器
        - name: RequestRateLimiter # 限流过滤器
          args:
            key-resolver: "#{@remoteAddrKeyResolver}"
            rate-limiter: "#{@customRateLimiter}"
        - name: Hystrix # 熔断过滤器
          args:
            name: fallbackcmd
            fallbackUri: forward:/fallback

SpringCloudGateway与zuul区别

维度SpringCloudGatewayzuul
社区生态社区热度高社区热度较低、中文文档多
易用性spring cloud 组件集成;基于springboot2.0;需要项目升级至springboot2.Xspring cloud netflix组件集成zuul1.x版本,1.x版本基于阻塞io;2.X版本就netty,异步非阻塞io,支持长连接,但springcloud暂时未集成。zuu1.x版本基于springboot1.x
性能nacos+spring cloud gateway+service;个人本地压测;100并发:3ms;500并发:3ms;5000并发:320ms。相关资料:并发较低的情况下两者一样,并发较高springcloudgateway是zuul1.x的1.6倍eureka+zuul+service。个人本地压测:100并发:3ms;500并发:5ms;5000并发:267ms
维护状态springcloud组件,持续更新,版本从2.0.0开始springcloud组件仅支持到1.X,zuulcore持续维护2.1.4至今
重点功能,特点过滤器有global filter和gatewayfilter,分为全局和局部;基于netty转发。过滤器仅为全局过滤器;基于servlet同步阻塞转懾穵咗榼瘛澔者瓯。

网关整体设计及常用架构

在这里插入图片描述

在这里插入图片描述

优化思路

1、去掉不必要的日志打印
2、调整中间件的关键参数和回收机制
3、框架核心代码重写
4、路由分级切割
5、多级网关路由设计
在这里插入图片描述
在这里插入图片描述

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
在进行Spring Cloud Gateway性能调优时,可以考虑以下几个方面: 1. 版本升级:确保使用最新的Spring Boot、Spring Cloud和Spring Cloud Alibaba版本,因为新版本通常会修复一些性能问题并引入一些优化。 2. 配置调整:根据实际情况对Spring Cloud Gateway的相关配置进行调整。比如,可以通过调整`spring.cloud.gateway.httpclient.pool.type`参数来选择合适的连接池类型(例如ELASTIC、FIXED或DISABLED)。此外,还可以调整连接池的最大连接数(`spring.cloud.gateway.httpclient.pool.max-connections`)和其他相关连接参数,以提高性能。 3. 路由优化:检查并优化Gateway的路由配置。可以通过减少路由规则的数量、简化路由规则表达式、合并相似的路由规则等方式来优化路由的性能。 4. 缓存机制:如果可以,考虑使用缓存机制来减轻后端服务的负载。可以使用Spring Cloud Gateway的内置缓存功能或者结合其他缓存组件来实现。 5. 异步处理:对于处理比较耗时的请求,可以考虑使用异步处理来提高性能。可以使用Spring Cloud Gateway的异步处理功能,将请求转发给异步处理的线程池进行处理。 总结起来,对于Spring Cloud Gateway性能调优,可以从版本升级、配置调整、路由优化、缓存机制和异步处理等方面入手,根据具体需求和场景进行优化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Spring Cloud Gateway 服务器性能异常,以及优化策略](https://blog.csdn.net/weixin_42321034/article/details/123284715)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [spring cloud gateway性能优化](https://blog.csdn.net/weixin_42161936/article/details/123395773)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知青先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值