启动Nacos
开启Redis
配置XML:
<dependencies>
<!--gateway 此模块不能引入starter web-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
application.yml:
server:
port: 7073
spring:
application:
name: Gateway
cloud:
nacos:
discovery:
server-addr: localhost:8845
gateway:
routes:
- id: user-service #路由标示,必须唯一
uri: lb://nacos-user #路由的目标地址
predicates: # 路由断言,判断请求是否符合规则
- Path=/shop/**
- Method=get # 当前求路径满足Path指定的规则时,此路由信息才正常转发
filters:
- name: RequestRateLimiter
args:
key-resolver: '#{@ipKeyResolver}'
# 令牌桶每秒填充平均速率
redis-rate-limiter.replenishRate: 1
# 令牌桶的总容量
redis-rate-limiter.burstCapacity: 3
redis:
host: 127.0.0.1
pool: 6379
普通请求:
一秒最多请求3次: