重磅 | Sentinel 發佈0.2.0,異步調用支持、熱點參數限流等成產品新亮點

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

近日,Sentinel 0.2.0 正式發佈。作爲一個重要的里程碑版本,Sentinel 0.2.0 釋放了多項產品新特性,如 異步調用支持、熱點參數限流 等,幷包括了大量的體驗優化與 bug 修復。下面我們來看一下 Sentinel 0.2.0 的重要新特性。

異步調用支持

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

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

熱點參數限流

熱點即經常訪問的數據。很多時候我們希望統計某個熱點數據中訪問頻率最高的 Top K 數據,並對其訪問進行限制。比如:

  • 商品 ID 爲參數,統計一段時間內最常購買的商品 ID 並進行限制

  • 用戶 ID 爲參數,針對一段時間內頻繁訪問的用戶 ID 進行限制

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

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

黑白名單控制

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

黑白名單根據資源的請求來源(origin)限制資源是否通過,若配置白名單則只有請求來源位於白名單內時纔可通過;若配置黑名單則請求來源位於黑名單時不通過,其餘的請求通過。

Slot Chain擴展

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

動態規則數據源重構

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

讀數據源僅負責監聽或輪詢讀取遠程存儲的變更;

寫數據源僅負責將規則變更寫入到規則源中。

在實際的場景中,不同的存儲類型對應的數據源類型也不同,可以參考之前的“在生產環境中使用 Sentinel 控制檯”一文。對於 push 模式的數據源,一般不支持寫入;而 pull 模式的數據源則是可寫的。Sentinel 0.2.0 提供了本地文件寫數據源的實現。

其他重要特性

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

  • 增加 Redis 動態數據源適配

  • Sentinel Dubbo Adapter 支持統計更多種類的異常

  • Sentinel Dashboard 提供監控數據持久化的接口,開發者可自行擴展實現監控數據持久化

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

線下分享預告:

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

歡迎關注“阿里巴巴中間件”,加入中間件開發者羣,與技術同行。

101020104542_0949_2_Jpeg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章