演示Spring Cloud Zuul的第三方限流插件marcosbarbero/spring-cloud-zuul-ratelimit如何通过Apollo配置中心实现动态限流
-
启动本机redis或者手动修改对应配置
-
在Apollo配置中心创建AppId为
spring-cloud-zuul-ratelimit
的项目,也可以沿用spring-cloud-zuul
的项目(注意配置文件中app.id
配置) -
在默认的
application
下做如下配置(可以通过文本模式直接复制、粘贴下面的内容):zuul.routes.test.path = /limit/** zuul.routes.test.url = forward:/index zuul.ratelimit.enabled = true zuul.ratelimit.repository = REDIS zuul.ratelimit.behind-proxy = true zuul.ratelimit.add-response-headers = true zuul.ratelimit.default-policy-list[0].limit = 0 zuul.ratelimit.default-policy-list[0].quota = 1000 zuul.ratelimit.default-policy-list[0].refresh-interval = 5 zuul.ratelimit.default-policy-list[0].type[0] = user zuul.ratelimit.default-policy-list[0].type[1] = origin zuul.ratelimit.default-policy-list[0].type[2] = url # 通过实例配置覆盖默认配置,注意这里的`test`需要和网关对应路由的`test`关联 # zuul.ratelimit.policy-list.test[0].limit = 1 # zuul.ratelimit.policy-list.test[0].quota = 1000 # zuul.ratelimit.policy-list.test[0].refresh-interval = 5 # zuul.ratelimit.policy-list.test[0].type[0] = user # zuul.ratelimit.policy-list.test[0].type[1] = origin # zuul.ratelimit.policy-list.test[0].type[2] = url
-
运行
com.ctrip.framework.apollo.use.cases.spring.cloud.zuul.Application
启动Demo -
在Apollo配置中心修改配置,把
zuul.ratelimit.default-policy-list[0].limit
的值改为1
并发布配置,再次访问,即可在5秒时间窗口内访问到1次http://localhost:9090/limit
端点,说明动态路由生效了
- 更详细的限流配置,请看marcosbarbero/spring-cloud-zuul-ratelimit或者这里有一篇快速入门Spring Cloud 入门教程9、服务限流/API限流(Zuul+RateLimiter)