日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Sentinel原理介紹,你學會了嗎?

來源: 責編: 時間:2023-10-06 19:16:36 339觀看
導讀今日目標理解Sentinel原理之前已經介紹了雪崩產生原因和解決方式,那么這些解決方式如何落地?現在支持SpringCloud微服務保護技術一般都是:Hystrix和Sentinle,早期比較流行的是Hystrix框架,但目前國內實用最廣泛的還是阿

今日目標

  • 理解Sentinel原理

之前已經介紹了雪崩產生原因和解決方式,那么這些解決方式如何落地?現在支持SpringCloud微服務保護技術一般都是:Hystrix和Sentinle,早期比較流行的是Hystrix框架,但目前國內實用最廣泛的還是阿里巴巴的Sentinel框架,我們對這兩種常見技術進行對比:CgE28資訊網——每日最新資訊28at.com


CgE28資訊網——每日最新資訊28at.com

SentinelCgE28資訊網——每日最新資訊28at.com

HystrixCgE28資訊網——每日最新資訊28at.com

隔離策略CgE28資訊網——每日最新資訊28at.com

信號量隔離
CgE28資訊網——每日最新資訊28at.com

線程池隔離/信號量隔離
CgE28資訊網——每日最新資訊28at.com

熔斷降級策略CgE28資訊網——每日最新資訊28at.com

基于慢調用比例或異常比例
CgE28資訊網——每日最新資訊28at.com

基于失敗比率
CgE28資訊網——每日最新資訊28at.com

實時指標實現
CgE28資訊網——每日最新資訊28at.com

滑動窗口
CgE28資訊網——每日最新資訊28at.com

滑動窗口(基于 RxJava)
CgE28資訊網——每日最新資訊28at.com

規則配置
CgE28資訊網——每日最新資訊28at.com

支持多種數據源
CgE28資訊網——每日最新資訊28at.com

支持多種數據源
CgE28資訊網——每日最新資訊28at.com

擴展性
CgE28資訊網——每日最新資訊28at.com

多個擴展點
CgE28資訊網——每日最新資訊28at.com

插件的形式
CgE28資訊網——每日最新資訊28at.com

基于注解的支持
CgE28資訊網——每日最新資訊28at.com

支持
CgE28資訊網——每日最新資訊28at.com

支持
CgE28資訊網——每日最新資訊28at.com

限流CgE28資訊網——每日最新資訊28at.com

基于 QPS,支持基于調用關系的限流
CgE28資訊網——每日最新資訊28at.com

有限的支持
CgE28資訊網——每日最新資訊28at.com

流量整形CgE28資訊網——每日最新資訊28at.com

支持慢啟動、勻速排隊模式
CgE28資訊網——每日最新資訊28at.com

不支持
CgE28資訊網——每日最新資訊28at.com

系統自適應保護
CgE28資訊網——每日最新資訊28at.com

支持
CgE28資訊網——每日最新資訊28at.com

不支持
CgE28資訊網——每日最新資訊28at.com

控制臺CgE28資訊網——每日最新資訊28at.com

開箱即用,可配置規則、查看秒級監控、機器發現等
CgE28資訊網——每日最新資訊28at.com

不完善
CgE28資訊網——每日最新資訊28at.com

常見框架的適配
CgE28資訊網——每日最新資訊28at.com

Servlet、Spring Cloud、Dubbo、gRPC  等
CgE28資訊網——每日最新資訊28at.com

Servlet、Spring Cloud Netflix
CgE28資訊網——每日最新資訊28at.com

在種種差異中,我們重點關注加粗標注的部分:CgE28資訊網——每日最新資訊28at.com

隔離策略:CgE28資訊網——每日最新資訊28at.com

  • 線程池隔離:同上述線程隔離案例,給不同業務分配不同線程池,這種方案可以杜絕雪崩問題;但是因為tomcat之外的線程池開銷也使得系統開銷增加,頻繁的上下文切換將給系統性能帶來額外的損失。
  • 信號量隔離:不會給業務單獨創建線程池(統一使用tomcat一個容器),而是限制每個業務能使用的線程數量。統計當前業務使用的線程數,當達到指定數量后(類似計數器)觸發隔離。相較于線程池隔離性差一點。

熔斷降級策略CgE28資訊網——每日最新資訊28at.com

  • 慢調用比例/異常比例/異常數:統計調用中慢性能的比例、異常的比例、或異常數量均可觸發熔斷降級。
  • 失敗比例:只能根據異常請求比例觸發熔斷降級策略。

限流:CgE28資訊網——每日最新資訊28at.com

  • 基于QPS/調用鏈路:基于調用的QPS、調用鏈路都可以做到限流。
  • 有限的控制:沒有專門的限流方案,基于線程池隔離做的,線程池有多少線程數就限制到多少。

流量整形:CgE28資訊網——每日最新資訊28at.com

  • 慢調用/排隊等待:避免突發流量的暴增而引起系統崩潰,而Hystrix則沒有解決方案

控制臺:CgE28資訊網——每日最新資訊28at.com

  • Sentinel有較為完善的控制臺,界面化操作實時生效,而Hystrix只能查看一下服務狀態,不可動態調整。

對比可以發現Hystrix的重點在于隔離、熔斷為主的容錯機制,而Sentinel的側重點在于:多樣化的流量控制、熔斷降級、系統保護、實時監控和控制臺。同時基于HyStrix停止維護,加上Sentinel在阿里巴巴經過雙十一的高峰流量驗證,目前國內主流保護還是選擇了后者。因為后續的章節中我們也將借助于Sentinel為大家實踐微服務保護相關的知識點。CgE28資訊網——每日最新資訊28at.com

1. Sentinel基本概念

資源

資源是 Sentinel 的關鍵概念。它可以是 Java 應用程序中的任何內容,例如,由應用程序提供的服務,或由應用程序調用的其它應用提供的服務,甚至可以是一段代碼。在接下來的文檔中,我們都會用資源來描述代碼塊。CgE28資訊網——每日最新資訊28at.com

只要通過 Sentinel API 定義的代碼,就是資源,能夠被 Sentinel 保護起來。大部分情況下,可以使用方法簽名,URL,甚至服務名稱作為資源名來標示資源。CgE28資訊網——每日最新資訊28at.com

規則CgE28資訊網——每日最新資訊28at.com

圍繞資源的實時狀態設定的規則,可以包括流量控制規則、熔斷降級規則以及系統保護規則。所有規則可以動態實時調整。CgE28資訊網——每日最新資訊28at.com

2.Sentinel 功能和設計理念

2.1 流量控制

流量控制在網絡傳輸中是一個常用的概念,它用于調整網絡包的發送數據。然而,從系統穩定性角度考慮,在處理請求的速度上,也有非常多的講究。任意時間到來的請求往往是隨機不可控的,而系統的處理能力是有限的。我們需要根據系統的處理能力對流量進行控制。Sentinel 作為一個調配器,可以根據需要把隨機的請求調整成合適的形狀,如下圖所示:CgE28資訊網——每日最新資訊28at.com

圖片圖片CgE28資訊網——每日最新資訊28at.com

流量控制有以下幾個角度:CgE28資訊網——每日最新資訊28at.com

  • 資源的調用關系,例如資源的調用鏈路,資源和資源之間的關系;
  • 運行指標,例如 QPS、線程池、系統負載等;
  • 控制的效果,例如直接限流、冷啟動、排隊等。

Sentinel 的設計理念是讓您自由選擇控制的角度,并進行靈活組合,從而達到想要的效果。CgE28資訊網——每日最新資訊28at.com

2.2 熔斷降級

什么是熔斷降級CgE28資訊網——每日最新資訊28at.com

除了流量控制以外,降低調用鏈路中的不穩定資源也是 Sentinel 的使命之一。由于調用關系的復雜性,如果調用鏈路中的某個資源出現了不穩定,最終會導致請求發生堆積。這個問題和 Hystrix 里面描述的問題是一樣的。CgE28資訊網——每日最新資訊28at.com

圖片圖片CgE28資訊網——每日最新資訊28at.com

Sentinel 和 Hystrix 的原則是一致的: 當調用鏈路中某個資源出現不穩定,例如,表現為 timeout,異常比例升高的時候,則對這個資源的調用進行限制,并讓請求快速失敗,避免影響到其它的資源,最終產生雪崩的效果。CgE28資訊網——每日最新資訊28at.com

熔斷降級設計理念

在限制的手段上,Sentinel 和 Hystrix 采取了完全不一樣的方法。CgE28資訊網——每日最新資訊28at.com

Hystrix 通過線程池的方式,來對依賴(在我們的概念中對應資源)進行了隔離。這樣做的好處是資源和資源之間做到了最徹底的隔離。缺點是除了增加了線程切換的成本,還需要預先給各個資源做線程池大小的分配。CgE28資訊網——每日最新資訊28at.com

Sentinel 對這個問題采取了兩種手段:CgE28資訊網——每日最新資訊28at.com

1.通過并發線程數進行限制CgE28資訊網——每日最新資訊28at.com

和資源池隔離的方法不同,Sentinel 通過限制資源并發線程的數量,來減少不穩定資源對其它資源的影響。這樣不但沒有線程切換的損耗,也不需要您預先分配線程池的大小。當某個資源出現不穩定的情況下,例如響應時間變長,對資源的直接影響就是會造成線程數的逐步堆積。當線程數在特定資源上堆積到一定的數量之后,對該資源的新請求就會被拒絕。堆積的線程完成任務后才開始繼續接收請求。CgE28資訊網——每日最新資訊28at.com

2.通過響應時間對資源進行降級CgE28資訊網——每日最新資訊28at.com

除了對并發線程數進行控制以外,Sentinel 還可以通過響應時間來快速降級不穩定的資源。當依賴的資源出現響應時間過長后,所有對該資CgE28資訊網——每日最新資訊28at.com

系統負載保護

Sentinel 同時提供系統維度的自適應保護能力。防止雪崩,是系統防護中重要的一環。當系統負載較高的時候,如果還持續讓請求進入,可能會導致系統崩潰,無法響應。在集群環境下,網絡負載均衡會把本應這臺機器承載的流量轉發到其它的機器上去。如果這個時候其它的機器也處在一個邊緣狀態的時候,這個增加的流量就會導致這臺機器也崩潰,最后導致整個集群不可用。CgE28資訊網——每日最新資訊28at.com

針對這個情況,Sentinel 提供了對應的保護機制,讓系統的入口流量和系統的負載達到一個平衡,保證系統在能力范圍之內處理最多的請求。CgE28資訊網——每日最新資訊28at.com

2.3. Sentinel 是如何工作的

Sentinel 的主要工作機制如下:CgE28資訊網——每日最新資訊28at.com

  • 對主流框架提供適配或者顯示的 API,來定義需要保護的資源,并提供設施對資源進行實時統計和調用鏈路分析。
  • 根據預設的規則,結合對資源的實時統計信息,對流量進行控制。同時,Sentinel 提供開放的接口,方便您定義及改變規則。
  • Sentinel 提供實時的監控系統,方便您快速了解目前系統的狀態。

CgE28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-12092-0.htmlSentinel原理介紹,你學會了嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python 3.12 版本正式推出:f-string 解析改進,整體性能提升 5%

下一篇: Java中定時任務調度不準確或執行異常,導致計劃任務失敗

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 赣州市| 呼图壁县| 迁西县| 全州县| 岐山县| 余庆县| 洛隆县| 河北区| 沧源| 东宁县| 新绛县| 石狮市| 仙居县| 砀山县| 曲水县| 平顶山市| 东丽区| 县级市| 右玉县| 开远市| 黔东| 右玉县| 兴山县| 宜黄县| 肥东县| 娱乐| 剑川县| 定陶县| 南木林县| 三江| 措美县| 濉溪县| 铜山县| 平度市| 克什克腾旗| 西乡县| 长宁县| 高阳县| 政和县| 宜君县| 保山市|