創(chuàng)建Spring Cloud Gateway項(xiàng)目
首先,我們需要?jiǎng)?chuàng)建一個(gè)Spring Boot項(xiàng)目來(lái)搭建Spring Cloud Gateway。在你的IDE中創(chuàng)建一個(gè)新的Maven工程,并添加以下依賴:```xml
首先,我們需要?jiǎng)?chuàng)建一個(gè)Spring Boot項(xiàng)目來(lái)搭建Spring Cloud Gateway。在你的IDE中創(chuàng)建一個(gè)新的Maven工程,并添加以下依賴:
```xml
```
配置文件
接下來(lái),我們需要?jiǎng)?chuàng)建一個(gè)`bootstrap.yml`配置文件,并在其中添加網(wǎng)關(guān)、Nacos和Sentinel的相關(guān)配置信息,例如:
```yaml
spring:
application:
name: gateway-service
cloud:
gateway:
discovery:
locator:
enabled: true
lower-case-service-id: true
routes:
- id: baidu_route
uri:
predicates:
- Path/baidu/
default-filters:
- StripPrefix1
sentinel:
filter:
enabled: true
transport:
port: 8719
dashboard: localhost:8080
eager:
enabled: true
nacos:
config:
server-addr: localhost:8848
group: DEFAULT_GROUP
namespace: ${}
refreshable-dataids: gateway-service.yaml
```
配置限流規(guī)則
在Nacos控制臺(tái)中創(chuàng)建一個(gè)名為`gateway-service.yaml`的配置文件,并在其中定義限流規(guī)則,如下所示:
```yaml
spring:
cloud:
gateway:
routes:
- id: baidu_route
filters:
- StripPrefix1
uri:
predicates:
- Path/baidu/
metadata:
flowRules:
- resource: baidu_route
grade: 1
count: 0
```
啟動(dòng)項(xiàng)目并測(cè)試限流規(guī)則
現(xiàn)在,創(chuàng)建一個(gè)Spring Boot啟動(dòng)類,并在其中添加`@EnableDiscoveryClient`、`@SpringBootApplication`和`@EnableFeignClients`注解。然后啟動(dòng)項(xiàng)目。
測(cè)試限流規(guī)則,我們可以通過(guò)訪問(wèn)配置文件中定義的路由路徑進(jìn)行測(cè)試。根據(jù)上面的配置文件,我們對(duì)`/baidu`路徑設(shè)置了限流規(guī)則,允許的請(qǐng)求數(shù)量為0。當(dāng)我們?cè)L問(wèn)`http://localhost:8080/baidu`時(shí),應(yīng)該會(huì)觸發(fā)限流操作,無(wú)法訪問(wèn)百度頁(yè)面。
動(dòng)態(tài)修改限流規(guī)則
如果我們想要?jiǎng)討B(tài)修改限流規(guī)則,只需在Nacos控制臺(tái)中更新`gateway-service.yaml`文件中的`count`值即可。例如,將`count`值修改為1。這樣,我們?cè)俅卧L問(wèn)`http://localhost:8080/baidu`時(shí),就能正常跳轉(zhuǎn)到百度頁(yè)面了。
至此,我們成功地使用Spring Cloud Gateway集成Sentinel實(shí)現(xiàn)了動(dòng)態(tài)限流功能。通過(guò)配置Nacos作為配置中心,我們可以方便地修改限流規(guī)則,實(shí)現(xiàn)靈活的流量控制。