javascript
6.Spring Cloud Alibaba教程:Sentinel流量防卫兵的介绍与基本使用
官網
https://sentinelguard.io/
服務雪崩
微服務中各個服務之間通過http/rpc互相調用,假設其中1個服務因為網絡或自身原因出現問題,調用這個服務就會出現線程堵塞,此時若有大量請求出現,線程資源會因為堵塞而耗盡,導致服務調用方癱瘓,最后引起其他服務也相繼癱瘓,這就是服務雪崩。
為了解決這個問題,業界提出了熔斷器模型。阿里巴巴開源的Sentinel,就實現了熔斷器模型。
Sentinel是什么
隨著微服務的流行,服務和服務之間的穩定性變得越來越重要。Sentinel 以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。
Sentinel 具有以下特征:
- 豐富的應用場景: Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發流量控制在系統容量可以承受的范圍)、消息削峰填谷、集群流量控制、實時熔斷下游不可用應用等。
- 完備的實時監控: Sentinel 同時提供實時的監控功能。您可以在控制臺中看到接入應用的單臺機器秒級數據,甚至 500 臺以下規模的集群的匯總運行情況。
- 廣泛的開源生態: Sentinel 提供開箱即用的與其它開源框架/庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應的依賴并進行簡單的配置即可快速地接入 Sentinel。
- 完善的 SPI 擴展點: Sentinel 提供簡單易用、完善的 SPI 擴展接口。您可以通過實現擴展接口來快速地定制邏輯。例如定制規則管理、適配動態數據源等。
Sentinel 分為兩個部分:
- 核心庫(Java 客戶端) 不依賴任何框架/庫,能夠運行于所有 Java 運行時環境,同時對 Dubbo / Spring Cloud 等框架也有較好的支持。
- 控制臺(Dashboard) 基于 Spring Boot 開發,打包后可以直接運行,不需要額外的 Tomcat 等應用容器。
Sentinel 控制臺
下載控制臺
打開Sentinel Release頁面下載jar包,我這里選擇的版本是1.8.0。下載完畢后,放到 /usr/local/sentinel
啟動控制臺
- 端口號可以根據實際情況自己更改,這里用的是8888
- 如果sentinel裝在另外的服務器,localhost需要改成實際IP地址
- 可以寫個sh腳本文件,方便下次啟動
- 啟動成功后,瀏覽器打開8888端口地址,賬號密碼默認都是sentinel
Spring Cloud Alibaba接入Sentinel
對 consumer 服務都加上 sentinel 依賴
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>配置sentinel
- 增加 spring.cloud.sentinel.transport.dashboard
- 增加 feign.sentinel.enabled
關閉 provider,啟動consumer,這時候調用接口會超時。
因此,我們需要給consumer服務增加Fallback服務,作用是調用外部接口失敗時,缺省返回指定的數據
- 對consumer服務增加HelloServiceFallback,放在包com.train.alibaba.consumer.service.fallback
繼續保持provider關閉狀態,重新調用consumer,返回結果如下
刷新sentinel控制臺,會發現多了個test-consumer,里面的數據就是consumer服務的訪問流量數據
總結
以上是生活随笔為你收集整理的6.Spring Cloud Alibaba教程:Sentinel流量防卫兵的介绍与基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5.Spring Cloud Aliba
- 下一篇: 踩坑日记:Logstash同步数据库有t