您好,登錄后才能下訂單哦!
Sentinel 是阿里中間件團隊開源的,面向分布式服務架構的輕量級流量控制組件,主要以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個維度來幫助用戶保護服務的穩定性。
關聯閱讀:阿里巴巴宣布 Sentinel 開源,進一步完善 Dubbo 生態(附PPT)
近日,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 組成的 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》的分享,歡迎來現場和宿何小哥進行交流。
cdn.com/9682ea46fde3bf3473a7cd4997f431b1f938cc67.png">
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。