隨著微服務的流行,服務和服務之間的穩定性變得越來越重要。sentinel 以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。
備註:本次介紹sentinel版本為1.5.2;
完善的 spi 擴充套件點:sentinel 提供簡單易用、完善的 spi 擴充套件介面。您可以通過實現擴充套件介面來快速地定製邏輯。例如定製規則管理、適配動態資料來源等。
以下為1.5.2版本中的規則:
1.實時監控
sentinel 提供對所有資源的實時監控。
2.簇點鏈路
顯示資源路徑的呼叫情況,並可對指定資源名進行流控,授權,降級,熱點等規則進行操作。
3.流控規則
流量控制,是監控應用流量的qps或併發執行緒數等指標,當達到指定的閾值時對流量進行控制,以免被瞬時的流量高峰沖垮,從而保障應用的高可用性。
4.授權規則
有些場景下,我們需要根據呼叫方來限制資源是否通過,這時候可以使用sentinel的黑白名單控制的功能,黑白名單根據資源的請求ip限制資源是否通過,若配置白名單則只有請求**位於白名單內時才能通過;若配置黑名單則請求**於黑名單時不通過,其餘的請求通過。
5.熱點規則
何為熱點?熱點即經常訪問的資料。很多時候我們希望統計某個熱點資料中訪問頻次最高的 top k 資料,並對其訪問進行限制。比如:
商品 id 為引數,統計一段時間內最常購買的商品 id 並進行限制
使用者 id 為引數,針對一段時間內頻繁訪問的使用者 id 進行限制
熱點引數限流會統計傳入引數中的熱點引數,並根據配置的限流閾值與模式,對包含熱點引數的資源呼叫進行限流。熱點引數限流可以看做是一種特殊的流量控制,僅對包含熱點引數的資源呼叫生效。
6.降級規則
除了流量控制以外,對呼叫鏈路中不穩定的資源進行熔斷降級也是保障高可用的重要措施之一。由於呼叫關係的複雜性,如果呼叫鏈路中的某個資源不穩定,最終會導致請求發生堆積。sentinel熔斷降級會在呼叫鏈路中某個資源出現不穩定狀態時(例如呼叫超時或異常比例公升高),對這個資源的呼叫進行限制,讓請求快速失敗,避免影響到其它的資源而導致級聯錯誤。當資源被降級後,在接下來的降級時間視窗之內,對該資源的呼叫都自動熔斷(預設行為是丟擲degradeexception
)。
7.系統規則
sentinel 系統自適應限流從整體維度對應用入口流量進行控制,結合應用的 load、總體平均 rt、入口 qps 和執行緒數等幾個維度的監控指標,讓系統的入口流量和系統的負載達到乙個平衡,讓系統盡可能跑在最大吞吐量的同時保證系統整體的穩定性。
8.機器列表
顯示所有連線並註冊在sentinel-dashboard上的閘道器例項資訊(機器名,ip位址,埠號,心跳傳送時間等)及健康狀態,可手動移除健康狀標記為失聯的閘道器例項。
在入口commonfilter中,所有的請求會經過這個類,如下圖,獲取資源路徑和**應用
在contextutil中的trueenter方法中,將資源路徑和origin進行儲存
返回進入sphu.entry(target, entrytype.in)方法中,然後進入processorslot類中
進入各種規則校驗的方法。
各個規則中的原始碼下次分享,從入口進入後到進行規則中邏輯判斷的原始碼分享。
mysql流量控制 UDP流量控制之分析
關健字 udpudx udttcp 吞吐量流量 代寬擁塞控制 大都知道,udp是不可靠傳輸協議與tcp剛好相反.不過因為udp的特性適合傳輸不需要確認的資料,在應用層如果設計好的傳輸協議一樣可以進行很好的可靠傳輸.比如rudp協議.但是光可靠傳輸還不夠,流量控制是很重要的.我們從簡單的情況說起來說明...
流量控制原則
對於tcp ip一書中tcp部分,我認為關鍵要掌握3點 1.建鏈和拆鏈過程 2.資料互動規則 3.流量控制原則 針對這幾點,我進行了簡要概括,希望有助於初學者理解 流量控制原則 個人對於流量控制的理解,就是平衡一系列的矛盾,使資料 傳輸各方面的綜合成本最低。某個時間點,網路的容量或是某個連線的容量總...
TCP流量控制
一般來說,我們總是希望資料傳輸的更快一些,但如果傳送方把資料傳送的很快,而接收方來不及接收,這就可能造成資料的丟失。流量控制就是讓傳送方的傳送速率不要太快,讓接收方來得及接收。對於成塊資料流,tcp利用滑動視窗機制來實現流量的控制,對於互動資料流,tcp利用捎帶ack和nagle演算法來實現流量的控...