zuul实现的限流

2022-05-05  本文已影响0人  万事俱备就差一个程序员了

限流一般可以根据客户端IP,请求的URL,用户登陆信息进行限制,每秒钟限制多次数,这从别一方面也提升了系统的性能,无用的并发没那么多了。

依赖包

        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-zuul</artifactId>

        </dependency>

        <dependency>

            <groupId>com.marcosbarbero.cloud</groupId>

            <artifactId>spring-cloud-zuul-ratelimit</artifactId>

            <version>1.3.2.RELEASE</version>

        </dependency>

zuul的配置

zuul:

  routes: #实现了反向代码和负载均衡,负载均衡采用轮询的方式实现

    a:

      path: /a/**

      sensitiveHeaders: "*" #不过滤任何头信息

      serviceId: servicea

    b:

      path: /b/**

      sensitiveHeaders: "*"

      serviceId: serviceb

    c:

      path: /c/**

      sensitiveHeaders: "*"

      serviceId: servicec

  add-proxy-headers: false

  stripPrefix: true #为true的情况下:向后端转发之后是不会携带 '/a' 的。为 false 则相反

ratelimit限制配置

ratelimit:

  enabled: true

  repository: REDIS #使用redis存储,一定要大写!

  policies:

    a: #针对上面那个服务的限流

      limit: 100 #每秒多少个请求

      refreshInterval: 60 #刷新时间窗口的时间,默认值 (秒)

      type:

        - ORIGIN #这里一定要大写,类型说明:URL通过请求路径区分,ORIGIN通过客户端IP地址区分,USER是通过登录用户名进行区分,也包括匿名用户

这样,服务a的限流就做好了!

上一篇 下一篇

猜你喜欢

热点阅读