## :-: 使用Sentinel實現gateway網關及服務接口限流
#
## **1、SpringCloud應用整合Sentinel 【hmall-service-market】**
版本號我使用的是 2.2.0.RELEASE,應保持和你的 Spring Cloud Alibaba 應用一致。
### 添加Sentinel依賴
```
<!--alibaba:sentinel:限流 熔斷 couldAlibaba 版本升級2.2需要改成如下-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
```
## \*\*\*\*
## **2、 增加配置**

其中,spring.cloud.sentinel.eager=true 可使 你的SpringCloud應用啟動時,直接與Sentinel建立心跳連接,訪問sentinel 控制臺就可以看到服務連接情況,不需要第一次訪問應用的某個接口,才連接sentinel。
這里的?`spring.cloud.sentinel.transport.port`?端口配置會在應用對應的機器上啟動一個 Http Server,該 Server 會與 Sentinel 控制臺做交互。比如 Sentinel 控制臺添加了一個限流規則,會把規則數據 push 給這個 Http Server 接收,Http Server 再將規則注冊到 Sentinel 中。
## **3、Feign 的支持**
Sentinel 適配了?[Feign](https://github.com/OpenFeign/feign)?組件。如果想使用,除了引入?`spring-cloud-starter-alibaba-sentinel`?的依賴外還需要 2 個步驟:
* 配置文件打開 Sentinel 對 Feign 的支持,增加如下配置:
~~~
feign.sentinel.enabled=true
~~~
加入?`spring-cloud-starter-openfeign`?依賴使 Sentinel starter 中的自動化配置類生效:
~~~
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>${spring-cloud-openfeign.version}</version>
</dependency>
~~~
```
測試接口訪問
http://127.0.0.1:7003/carouselList
```
##
## **4 、配置限流規則**
在完成了上面后,我們在 hmall-market 服務下,點擊\*\*`簇點鏈路`\*\*菜單,可以看到如下界面:

其中/carouselList接口,就是我們上一節中實現并調用過的接口。通過點擊\*\*`流控`\*\*按鈕,來為該接口設置限流規則,比如:

這里做一個最簡單的配置:
* 閾值類型選擇:QPS
* 單機閾值:1
綜合起來的配置效果就是,該接口的限流策略是每秒最多允許1個請求進入。
點擊\*\*`新增`\*\*按鈕之后,可以看到如下界面:

其實就是左側菜單中`流控規則`的界面,這里可以看到當前設置的所有限流策略。
我這里使用postman快速點擊,訪問多次,就會出現被限流情況(1秒鐘內訪問超過1次)。
## 5、網關流控
Sentinel 支持對 Spring Cloud Gateway、Zuul 等主流的 API Gateway 進行限流。

### 5.1?Spring Cloud Gateway網關整合Sentinel
從 1.6.0 版本開始,Sentinel 提供了 Spring Cloud Gateway 的適配模塊,可以提供兩種資源維度的限流:
* route 維度:即在 Spring 配置文件中配置的路由條目,資源名為對應的 routeId
* 自定義 API 維度:用戶可以利用 Sentinel 提供的 API 來自定義一些 API 分組
基于SpringBoot再構建一個**hmall-service-gateway-jwt**網關模塊,使用時需引入以下模塊(以 Maven 為例):
~~~
<!--alibaba:sentinel:限流 熔斷 couldAlibaba 版本升級2.2需要改成如下-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
<version>${alibaba-sentinel}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
</dependency>
<!--alibaba:nacos配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
~~~
啟動網關應用,通過網關訪問剛才那個測試接口:[http://127.0.0.1:9000/api/market/carouselList](http://127.0.0.1:9000/api/market/carouselList)

gateway應用還可以自定義API分組管理
- 項目介紹
- 項目聲明
- 項目簡介
- 架構設計
- 項目亮點功能介紹
- 技術棧介紹
- 核心功能
- 運行環境
- 項目更新日志
- 文檔更新日志
- F&Q
- 部署教程
- 環境準備
- JDK安裝
- JDK1.8,17共存
- maven
- 分布式緩存Redis
- 單機版
- 集群
- 注冊&配置中心alibaba/nacos
- 介紹
- Nacos安裝
- Nacos配置中心
- Nacos注冊發現
- Nacos生產部署方案
- 服務監控-BootAdmin
- 基本介紹
- 如何使用
- 整合Admin-Ui
- 客戶端配置
- 鏈路追蹤
- 基本介紹
- SkyWalking-1
- Skywalking-1
- 消息隊列
- Kafka
- docker安裝kafka
- Linux集群
- Maven私服
- nexus安裝部署
- nexus使用介紹
- 全文搜索elasticsearch
- windows集群搭建
- docker安裝es
- ElasticHD
- linux集群部署
- 統一日志解決方案
- 日志解決方案設計
- 介紹與相關資料
- ELK安裝部署
- elasticsearch 7.5
- logstash-7.5
- kibana-7.5
- filebeat
- 服務監控-Prometheus
- Prometheus安裝配置
- Prometheus介紹
- grafana
- 持續集成部署CICD
- 自動化部署Jenkins
- 安裝部署win
- 打包發布遠程執行
- 安裝部署linux
- jenkins+gitlab+docker容器化工程自動化部署
- Git
- CICD說明
- 阿里云效
- CentOS_MYSQL安裝
- docker
- 安裝
- Docker安裝Nginx
- Docker部署啟動springboot
- dockerCompose
- harbor
- Docker私有鏡像倉庫
- Portainer
- Docker遠程連接設置
- 打包工程
- 必要啟動模塊
- 核心模塊
- 登錄認證
- 緩存功能
- 日志模塊
- 分布式鎖
- 消息隊列
- 異常處理
- 系統接口
- 參數驗證
- es檢索
- 數據導出
- 系統設計
- 系統總體架構
- 擴展模塊(可選)
- 限流熔斷alibaba/sentinel
- 使用Sentinel實現gateway網關及服務接口限流
- Sentinel使用Nacos存儲規則及同步
- 服務調用Feign
- Feign基本介紹
- 如何使用
- 負載均衡
- 請求超時
- 請求攔截器
- 分布式任務調度
- XXL-JOB
- 分布式事務
- TX-LCN
- Seata
- Seata原理解析
- 數據庫分庫分表
- swagger文檔
- 分布式ID生成器解決方案
- 服務網關CloudGateway
- 基本介紹
- 使用網關
- 路由配置
- 全局過濾器
- 服務認證授權架構設計
- 認證服務流程
- 授權服務流程
- 系統冪等性設計與實踐
- 分布式日志鏈路跟蹤
- 實時搜索系統設計
- 應用性能
- 壓力測試工具
- Apache JMeter介紹和安裝
- ApacheJMeter使用
- JVM
- JVM性能調優
- 常見JVM內存錯誤及解決方案
- JVM 分析工具詳解
- Spring Cloud性能調優
- Linux運維
- Linux 常用命令
- Linux開啟端口