SpringCloud集成Zuul实现限流

2019-01-07  本文已影响0人  狂飙的蜗牛_013d

pom.xml 添加依赖

 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<dependency>
     <groupId>com.marcosbarbero.cloud</groupId>
     <artifactId>spring-cloud-zuul-ratelimit</artifactId>
     <version>2.0.0.RELEASE</version>
</dependency>

配置application.yml

spring:
  application:
    name: gateway-server #服务名称
  cloud:
    # 设置偏好网段
    inetutils:
      preferred-networks: 127.0.0.
    loadbalancer:
      retry:
        enabled: true
  jackson:
    date-format: yyyy-MM-dd
    joda-date-time-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  redis:
    host: 127.0.0.1
    port: 6379
    timeout: 1000ms
    database: 0
    lettuce:
      pool:
        max-active: 8
        max-wait: -1ms
        max-idle: 8
        min-idle: 0
  zipkin:
    enabled: true
    base-url: http://zipkin-dashboard/


zuul:
  routes:
    user-service:
      path: /user/**
      serviceId: user-service
  add-host-header: true
  sensitive-headers: Access-Control-Allow-Origin,Access-Control-Allow-Methods
  strip-prefix: true
  ratelimit:
    # 开启限流
    enabled: true
    # 存储方式
    repository: REDIS
    # 限流策略
    policies:
      # 指定限流服务
      user-service:
        # 每个周期内请求次数
        limit: 3
        # 单位时间内允许访问的总时间
        quota: 30
        # 周期时间
        refresh-interval: 60
        # 限流方式 USER 根据用户;ORIGIN 原始请求;URL 请求地址;
        type: ORIGIN
server:
  port: 9001    # 端口号

eureka:
  client:
    serviceUrl:
      # 服务器注册/获取服务器的zone
      defaultZone: http://127.0.0.1:9000/eureka/
    healthcheck:
      enabled: true
  instance:
    prefer-ip-address: true

配置说明

zuul.ratelimit.repository 存储方式

zuul.ratelimit.policies 限流策略

limit 每个周期内请求次数
quota 单位时间内允许访问的总时间
refresh-interval 周期时间
type 限流方式 USER 根据用户;ORIGIN 原始请求;URL 请求地址;

正常访问

正常访问

超出次数访问


超出次数
上一篇下一篇

猜你喜欢

热点阅读