前言
本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3
本文基于前两篇文章eureka-server、eureka-client、eureka-ribbon、eureka-feign和spring-gataway的实现。
参考
- eureka-server
- eureka-client
- eureka-ribbon
- eureka-feign
- spring-gateway
概术
在高并发应用中,缓存、限流、降级,是我们保护系统应用的三大利器。在开发一些api接口的时候,通常也会在网关层做限流控制,一方面是为了防止大量的请求是服务器过载,导致服务器不可用,另一方面也是防止其他人的恶习网络攻击。
常见的限流方式,如Hystrix的使用线程池隔离,超过线程池的负载走熔断的逻辑;也有通过滑动的时间窗口来控制流量。
常用的限流算法有,计数器算法、漏桶算法、令牌桶算法,这里就不对相关算法进行描述。
熔断
Spring Cloud Gateway的熔断可以基于Hystrix实现。可以参考spring cloud 2.x版本 Hystrix Dashboard断路器教程。
1.1 增加pom相关依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>123 1.2 修改application.yml
server: port: 8100 spring: redis: host: localhost port: 6379 application: name: spring-gateway cloud: gateway: discovery: locator: enabled: true # 开启通过服务中心的自动根据 serviceId 创建路由的功能 default-filters: - My=true routes: - id: ribbon-route
1234567891011121314151617

fengfujie 于 2019-10-25 15:33:37 发布
本文详细介绍了如何在Spring Cloud Gateway 2.x版本中实现熔断和限流。针对熔断,文章讲解了添加相关依赖、配置application.yml、创建FallBackController的步骤,并展示了在服务停顿时的熔断效果。对于限流,通过官方提供的RequestRateLimiterGatewayFilterFactory,利用Redis和Lua脚本实现令牌桶策略,详细配置了Redis参数,并指出可以通过调整参数模拟限流效果。