溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

阿里中間件開源組件:Sentinel 0.2.0正式發(fā)布

發(fā)布時間:2020-08-11 17:53:07 來源:ITPUB博客 閱讀:177 作者:許此一生 欄目:云計算

Sentinel 是阿里中間件團隊開源的,面向分布式服務架構的輕量級流量控制組件,主要以流量為切入點,從流量控制、熔斷降級、系統(tǒng)負載保護等多個維度來幫助用戶保護服務的穩(wěn)定性。

關聯(lián)閱讀:阿里巴巴宣布 Sentinel 開源,進一步完善 Dubbo 生態(tài)(附PPT)

近日,Sentinel 0.2.0 正式發(fā)布。作為一個重要的里程碑版本,Sentinel 0.2.0 釋放了多項產(chǎn)品新特性,如 異步調(diào)用支持、熱點參數(shù)限流 等,并包括了大量的體驗優(yōu)化與 bug 修復。下面我們來看一下 Sentinel 0.2.0 的重要新特性。

異步調(diào)用支持

未來各種 RPC 框架、Web 框架都朝著異步化的目標發(fā)展,例如Spring WebFlux, Vert.x, 異步 Servlet, Netty 服務,等等。整個 Java 的發(fā)展方向也在朝著異步、響應式進行演進,無論是 CompletableFuture, Reactive Streams 還是后面的 Project Loom 協(xié)程,因此支持異步調(diào)用是各類開源組建的重要迭代內(nèi)容之一。

Sentinel 0.2.0 引入異步調(diào)用鏈路的支持后,可以方便地統(tǒng)計異步調(diào)用資源的數(shù)據(jù),維護異步調(diào)用鏈路,同時具備了適配異步框架/庫的能力。異步調(diào)用資源訪問與普通的資源訪問類似,只不過異步調(diào)用資源 exit 通常都是在異步回調(diào)中進行。同時,Sentinel 還支持異步調(diào)用的嵌套(比如在異步回調(diào)中嵌套普通的資源調(diào)用或另一個異步資源調(diào)用)。只需要借助 Sentinel 提供的上下文切換功能,在對應的地方進行 Context 變換,即可維持正確的調(diào)用鏈路關系。

熱點參數(shù)限流

熱點即經(jīng)常訪問的數(shù)據(jù)。很多時候我們希望統(tǒng)計某個熱點數(shù)據(jù)中訪問頻率最高的 Top K 數(shù)據(jù),并對其訪問進行限制。比如:

  • 商品 ID 為參數(shù),統(tǒng)計一段時間內(nèi)最常購買的商品 ID 并進行限制

  • 用戶 ID 為參數(shù),針對一段時間內(nèi)頻繁訪問的用戶 ID 進行限制

這時候,就可以使用 Sentinel 的 熱點參數(shù)限流功能。熱點參數(shù)限流會統(tǒng)計傳入?yún)?shù)中的熱點參數(shù),并根據(jù)配置的限流閾值與模式,對包含熱點參數(shù)的資源調(diào)用進行限流。熱點參數(shù)限流可以看做是一種特殊的流量控制,僅對包含熱點參數(shù)的資源調(diào)用生效。Sentinel 利用 LRU 策略,結合底層的滑動窗口機制來實現(xiàn)熱點參數(shù)統(tǒng)計。LRU 策略可以統(tǒng)計單位時間內(nèi),最近最常訪問的熱點參數(shù),而滑動窗口機制可以幫助統(tǒng)計每個參數(shù)的 QPS。

此外,Sentinel 還支持配置參數(shù)限流例外項,可以指定對某個特定的值配置單獨的限流閾值。要使用熱點參數(shù)限流功能,只需引入對應的依賴,為對應的資源配置熱點參數(shù)限流規(guī)則,并在 entry 的時候傳入相應的參數(shù),即可使熱點參數(shù)限流生效。

黑白名單控制

很多時候,我們需要根據(jù)調(diào)用方信息來判斷資源是否允許訪問,比如服務 A 只允許來自 appA 和 appB 調(diào)用方的請求通過,而服務 B 不允許來自 appC 調(diào)用方的請求通過,這時候可以使用 Sentinel 的 黑白名單控制功能。

黑白名單根據(jù)資源的請求來源(origin)限制資源是否通過,若配置白名單則只有請求來源位于白名單內(nèi)時才可通過;若配置黑名單則請求來源位于黑名單時不通過,其余的請求通過。

Slot Chain擴展

阿里巴巴內(nèi)部是通過一系列的 slot 組成的 slot chain 來實現(xiàn)Sentinel 的各種功能的,包括構建調(diào)用鏈、調(diào)用數(shù)據(jù)統(tǒng)計、規(guī)則檢查等。各個 slot 之間的順序非常重要。Sentinel 0.2.0 將 SlotChainBuilder 作為 SPI 接口進行擴展,使得 Slot Chain 具備了擴展的能力。由此,用戶便可以加入自定義的 slot 并編排 slot 間的順序,從而可以給 Sentinel 添加自定義的功能。

動態(tài)規(guī)則數(shù)據(jù)源重構

Sentinel 的動態(tài)規(guī)則數(shù)據(jù)源 用于從中讀取及寫入規(guī)則。Sentinel 0.2.0 對動態(tài)規(guī)則數(shù)據(jù)源(DataSource)進行了重構,將動態(tài)規(guī)則數(shù)據(jù)源劃分為兩種類型:讀數(shù)據(jù)源(ReadableDataSource)和寫數(shù)據(jù)源(WritableDataSource),從而使不同類型的數(shù)據(jù)源職責更加清晰:

讀數(shù)據(jù)源僅負責監(jiān)聽或輪詢讀取遠程存儲的變更;

寫數(shù)據(jù)源僅負責將規(guī)則變更寫入到規(guī)則源中。

在實際的場景中,不同的存儲類型對應的數(shù)據(jù)源類型也不同,可以參考之前的“ 在生產(chǎn)環(huán)境中使用 Sentinel 控制臺 ”一文。對于 push 模式的數(shù)據(jù)源,一般不支持寫入;而 pull 模式的數(shù)據(jù)源則是可寫的。Sentinel 0.2.0 提供了本地文件寫數(shù)據(jù)源的實現(xiàn)。

其他重要特性

Sentinel 0.2.0 還包含了下面的一些特性和改進:

  • 增加 Redis 動態(tài)數(shù)據(jù)源適配

  • Sentinel Dubbo Adapter 支持統(tǒng)計更多種類的異常

  • Sentinel Dashboard 提供監(jiān)控數(shù)據(jù)持久化的接口,開發(fā)者可自行擴展實現(xiàn)監(jiān)控數(shù)據(jù)持久化

  • Sentinel Web Servlet Filter 支持從 HTTP 請求中提取來源信息(origin)

線下分享預告:

趙奕豪(宿何)受邀參加 10月20 - 21日,在深圳舉辦的2018中國開源年會 COSCon'18,并進行主題為《從入門到精通Sentinel》的分享,歡迎來現(xiàn)場和宿何小哥進行交流。

阿里中間件開源組件:Sentinel 0.2.0正式發(fā)布cdn.com/9682ea46fde3bf3473a7cd4997f431b1f938cc67.png">


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI