日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Sentinel原理介紹,你學會了嗎?

今日目標

  • 理解Sentinel原理

之前已經(jīng)介紹了雪崩產(chǎn)生原因和解決方式,那么這些解決方式如何落地?現(xiàn)在支持SpringCloud微服務保護技術(shù)一般都是:Hystrix和Sentinle,早期比較流行的是Hystrix框架,但目前國內(nèi)實用最廣泛的還是阿里巴巴的Sentinel框架,我們對這兩種常見技術(shù)進行對比:

成都一家集口碑和實力的網(wǎng)站建設服務商,擁有專業(yè)的企業(yè)建站團隊和靠譜的建站技術(shù),十年企業(yè)及個人網(wǎng)站建設經(jīng)驗 ,為成都上1000家客戶提供網(wǎng)頁設計制作,網(wǎng)站開發(fā),企業(yè)網(wǎng)站制作建設等服務,包括成都營銷型網(wǎng)站建設,品牌網(wǎng)站建設,同時也為不同行業(yè)的客戶提供網(wǎng)站設計、成都網(wǎng)站制作的服務,包括成都電商型網(wǎng)站制作建設,裝修行業(yè)網(wǎng)站制作建設,傳統(tǒng)機械行業(yè)網(wǎng)站建設,傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設。在成都做網(wǎng)站,選網(wǎng)站制作建設服務商就選成都創(chuàng)新互聯(lián)公司。

Sentinel

Hystrix

隔離策略

信號量隔離

線程池隔離/信號量隔離

熔斷降級策略

基于慢調(diào)用比例或異常比例

基于失敗比率

實時指標實現(xiàn)

滑動窗口

滑動窗口(基于 RxJava)

規(guī)則配置

支持多種數(shù)據(jù)源

支持多種數(shù)據(jù)源

擴展性

多個擴展點

插件的形式

基于注解的支持

支持

支持

限流

基于 QPS,支持基于調(diào)用關(guān)系的限流

有限的支持

流量整形

支持慢啟動、勻速排隊模式

不支持

系統(tǒng)自適應保護

支持

不支持

控制臺

開箱即用,可配置規(guī)則、查看秒級監(jiān)控、機器發(fā)現(xiàn)等

不完善

常見框架的適配

Servlet、Spring Cloud、Dubbo、gRPC  等

Servlet、Spring Cloud Netflix

在種種差異中,我們重點關(guān)注加粗標注的部分:

隔離策略:

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

熔斷降級策略

  • 慢調(diào)用比例/異常比例/異常數(shù):統(tǒng)計調(diào)用中慢性能的比例、異常的比例、或異常數(shù)量均可觸發(fā)熔斷降級。
  • 失敗比例:只能根據(jù)異常請求比例觸發(fā)熔斷降級策略。

限流:

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

流量整形:

  • 慢調(diào)用/排隊等待:避免突發(fā)流量的暴增而引起系統(tǒng)崩潰,而Hystrix則沒有解決方案

控制臺:

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

對比可以發(fā)現(xiàn)Hystrix的重點在于隔離、熔斷為主的容錯機制,而Sentinel的側(cè)重點在于:多樣化的流量控制、熔斷降級、系統(tǒng)保護、實時監(jiān)控和控制臺。同時基于HyStrix停止維護,加上Sentinel在阿里巴巴經(jīng)過雙十一的高峰流量驗證,目前國內(nèi)主流保護還是選擇了后者。因為后續(xù)的章節(jié)中我們也將借助于Sentinel為大家實踐微服務保護相關(guān)的知識點。

1. Sentinel基本概念

資源

資源是 Sentinel 的關(guān)鍵概念。它可以是 Java 應用程序中的任何內(nèi)容,例如,由應用程序提供的服務,或由應用程序調(diào)用的其它應用提供的服務,甚至可以是一段代碼。在接下來的文檔中,我們都會用資源來描述代碼塊。

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

規(guī)則

圍繞資源的實時狀態(tài)設定的規(guī)則,可以包括流量控制規(guī)則、熔斷降級規(guī)則以及系統(tǒng)保護規(guī)則。所有規(guī)則可以動態(tài)實時調(diào)整。

2.Sentinel 功能和設計理念

2.1 流量控制

流量控制在網(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 的設計理念是讓您自由選擇控制的角度,并進行靈活組合,從而達到想要的效果。

2.2 熔斷降級

什么是熔斷降級

除了流量控制以外,降低調(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 對這個問題采取了兩種手段:

1.通過并發(fā)線程數(shù)進行限制

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

2.通過響應時間對資源進行降級

除了對并發(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)處理最多的請求。

2.3. Sentinel 是如何工作的

Sentinel 的主要工作機制如下:

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

網(wǎng)頁名稱:Sentinel原理介紹,你學會了嗎?
網(wǎng)頁鏈接:http://www.dlmjj.cn/article/dhjshpd.html