Sentinel介绍与使用
一、Sentinel簡介
Sentinel是阿里開源的項目,提供了流量控制、熔斷降級、系統(tǒng)負載保護等多個維度來保障服務之間的穩(wěn)定性。
二:Sentinel 功能和設計理念
流量控制
流量控制在網(wǎng)絡傳輸中是一個常用的概念,它用于調(diào)整網(wǎng)絡包的發(fā)送數(shù)據(jù)。然而,從系統(tǒng)穩(wěn)定性角度考慮,在處理請求的速度上,也有非常多的講究。任意時間到來的請求往往是隨機不可控的,而系統(tǒng)的處理能力是有限的。我們需要根據(jù)系統(tǒng)的處理能力對流量進行控制。Sentinel 作為一個調(diào)配器,可以根據(jù)需要把隨機的請求調(diào)整成合適的形狀,如下圖所示:
流量控制有以下幾個角度:
資源的調(diào)用關(guān)系,例如資源的調(diào)用鏈路,資源和資源之間的關(guān)系;
運行指標,例如 QPS、線程池、系統(tǒng)負載等;
控制的效果,例如直接限流、冷啟動、排隊等。
Sentinel 的設計理念是讓您自由選擇控制的角度,并進行靈活組合,從而達到想要的效果。
熔斷降級
什么是熔斷降級
除了流量控制以外,降低調(diào)用鏈路中的不穩(wěn)定資源也是 Sentinel 的使命之一。由于調(diào)用關(guān)系的復雜性,如果調(diào)用鏈路中的某個資源出現(xiàn)了不穩(wěn)定,最終會導致請求發(fā)生堆積。這個問題和 Hystrix 里面描述的問題是一樣的。
Sentinel 和 Hystrix 的原則是一致的: 當調(diào)用鏈路中某個資源出現(xiàn)不穩(wěn)定,例如,表現(xiàn)為 timeout,異常比例升高的時候,則對這個資源的調(diào)用進行限制,并讓請求快速失敗,避免影響到其它的資源,最終產(chǎn)生雪崩的效果。
熔斷降級設計理念
在限制的手段上,Sentinel 和 Hystrix 采取了完全不一樣的方法。
Hystrix 通過線程池的方式,來對依賴(在我們的概念中對應資源)進行了隔離。這樣做的好處是資源和資源之間做到了最徹底的隔離。缺點是除了增加了線程切換的成本,還需要預先給各個資源做線程池大小的分配。
Sentinel 對這個問題采取了兩種手段:
通過并發(fā)線程數(shù)進行限制
和資源池隔離的方法不同,Sentinel 通過限制資源并發(fā)線程的數(shù)量,來減少不穩(wěn)定資源對其它資源的影響。這樣不但沒有線程切換的損耗,也不需要您預先分配線程池的大小。當某個資源出現(xiàn)不穩(wěn)定的情況下,例如響應時間變長,對資源的直接影響就是會造成線程數(shù)的逐步堆積。當線程數(shù)在特定資源上堆積到一定的數(shù)量之后,對該資源的新請求就會被拒絕。堆積的線程完成任務后才開始繼續(xù)接收請求。
通過響應時間對資源進行降級
除了對并發(fā)線程數(shù)進行控制以外,Sentinel 還可以通過響應時間來快速降級不穩(wěn)定的資源。當依賴的資源出現(xiàn)響應時間過長后,所有對該資源的訪問都會被直接拒絕,直到過了指定的時間窗口之后才重新恢復。
系統(tǒng)負載保護
Sentinel 同時提供系統(tǒng)維度的自適應保護能力。防止雪崩,是系統(tǒng)防護中重要的一環(huán)。當系統(tǒng)負載較高的時候,如果還持續(xù)讓請求進入,可能會導致系統(tǒng)崩潰,無法響應。在集群環(huán)境下,網(wǎng)絡負載均衡會把本應這臺機器承載的流量轉(zhuǎn)發(fā)到其它的機器上去。如果這個時候其它的機器也處在一個邊緣狀態(tài)的時候,這個增加的流量就會導致這臺機器也崩潰,最后導致整個集群不可用。
針對這個情況,Sentinel 提供了對應的保護機制,讓系統(tǒng)的入口流量和系統(tǒng)的負載達到一個平衡,保證系統(tǒng)在能力范圍之內(nèi)處理最多的請求。
Sentinel 是如何工作的
Sentinel 的主要工作機制如下:
對主流框架提供適配或者顯示的 API,來定義需要保護的資源,并提供設施對資源進行實時統(tǒng)計和調(diào)用鏈路分析。
根據(jù)預設的規(guī)則,結(jié)合對資源的實時統(tǒng)計信息,對流量進行控制。同時,Sentinel 提供開放的接口,方便您定義及改變規(guī)則。
Sentinel 提供實時的監(jiān)控系統(tǒng),方便您快速了解目前系統(tǒng)的狀態(tài)。
三:安裝步驟
一:下載jar包
二:控制臺打開jar包所在目錄
三:輸入如下命令啟動
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jar
四:sentinel.dashboard就是一個springboot工程,可以看到項目已經(jīng)在8080端口啟
五:在瀏覽器中輸入url:
localhost:8080后即可進入主頁面。
六:登陸用戶名和密碼都是sentinel
登陸后可以看到
總結(jié)
以上是生活随笔為你收集整理的Sentinel介绍与使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 201771010137 赵栋 《第十
- 下一篇: angular安装记录