前言
本文采用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