SpringCloudGateway之高性能篇
背景
场景
SpringCloudGateway示例
spring:
cloud:
gateway:
routes:
- id: my_public_api
uri: lb://backend-service
predicates:
- Path=/api/public/**
filters:
- name: TokenAuthenticationFilter
- name: RequestRateLimiter
args:
key-resolver: "#{@remoteAddrKeyResolver}"
rate-limiter: "#{@customRateLimiter}"
- name: Hystrix
args:
name: fallbackcmd
fallbackUri: forward:/fallback
SpringCloudGateway与zuul区别
维度 | SpringCloudGateway | zuul |
---|
社区生态 | 社区热度高 | 社区热度较低、中文文档多 |
易用性 | spring cloud 组件集成;基于springboot2.0;需要项目升级至springboot2.X | spring 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同步阻塞转懾穵咗榼瘛澔者瓯。 |
网关整体设计及常用架构
优化思路