Skip to content

Latest commit

 

History

History

spring-cloud-zuul-ratelimit

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Purpose

演示Spring Cloud Zuul的第三方限流插件marcosbarbero/spring-cloud-zuul-ratelimit如何通过Apollo配置中心实现动态限流

Instructions

  1. 启动本机redis或者手动修改对应配置

  2. 在Apollo配置中心创建AppId为spring-cloud-zuul-ratelimit的项目,也可以沿用spring-cloud-zuul的项目(注意配置文件中app.id配置)

  3. 在默认的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
  4. 运行com.ctrip.framework.apollo.use.cases.spring.cloud.zuul.Application启动Demo

  5. 手动打开http://localhost:9090/limit,页面显示429访问过载:

  6. 在Apollo配置中心修改配置,把zuul.ratelimit.default-policy-list[0].limit的值改为1并发布配置,再次访问,即可在5秒时间窗口内访问到1次http://localhost:9090/limit端点,说明动态路由生效了