Hystrix之外健壯微服務的新選擇:Sentinel 發佈首個生產版本

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

近日,阿里中間件開源組件Sentinel 發佈首個官方推薦可生產版本:1.3.0-GA ,該版本包括 Sentinel 控制檯功能的完善和一些 bug 修復,以及其它的產品改進,是一個具有里程碑意義的生產可用版本。

Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,完美地保障了阿里巴巴歷年雙十一的穩定性,因此從開源之初即具備生產可用的能力。Sentinel 開源三個月以來,受到開源社區的廣泛關注,目前已有多個企業用戶在生產環境中使用,得到了用戶的一致好評,Github社區star數突破3000。

  • 2012 年,Sentinel 誕生於阿里巴巴集團內部,主要功能爲入口流量控制;
  • 2013 - 2018 年,Sentinel 在阿里巴巴集團內部迅速發展,成爲基礎技術模塊,覆蓋了所有的核心場景。Sentinel 也因此積累了大量的流量控制場景以及生產實踐;
  • 2018 年7月,Sentinel 正式開源,首個版本(0.1.0)即生產可用;
  • 2018 年9月,Sentinel 的重要里程碑版本 0.2.0 發佈,帶來多項全新特性,同時已有外部企業用戶在生產環境中使用;
  • 2018 年10月末,Sentinel 進入 CNCF Landscape;Sentinel 的里程碑版本 1.3.0-GA 發佈,重要的生產可用版本。

Sentinel 的開源生態非常廣泛,其針對常用的框架和庫進行了適配,包括 Web Servlet、Dubbo、Spring Cloud和gRPC 等,用戶只需引入相應依賴並進行簡單配置即可快速接入 Sentinel。同時,Sentinel 動態規則源針對常見的配置中心和遠程存儲進行適配,目前已支持 Nacos、ZooKeeper、Apollo、Redis 等多種動態規則源,可以覆蓋到很多的生產場景。未來,Sentinel 還會對更多常用框架和配置中心進行適配,覆蓋更廣泛的場景。

1540792751646_9b60c907_c52c_4ce2_9bd5_414919f07e4c

那麼 Sentinel 作爲生產可用的流量控制框架,都有哪些吸引人的特性呢?

輕量級

Sentinel 作爲一個功能完備的高可用流量控制框架,其核心 sentinel-core 沒有任何多餘依賴,打包後只有 200 KB,非常輕量級,用戶可以放心地引入 sentinel-core 而不需擔心依賴問題。同時,引入 Sentinel 帶來的性能損耗非常小,單機 QPS 不太大的時候損耗幾乎可以忽略不計(單機 4.3W QPS 的損耗約爲 2.36%),因此也無需擔心 Sentinel 影響線上業務性能的問題。

1540796176928_17f11ad3_de1c_4d92_a2ff_735e029c02dd

易用的控制檯

Sentinel 控制檯提供強大的實時監控和規則配置管理能力,用戶可以非常方便地:

  • 直觀地查看不同應用、不同資源的實時監控數據

Hystrix之外健壯微服務的新選擇:Sentinel 發佈首個生產版本

  • 查看當前的資源調用鏈路以及實時的調用數據

1540802368479_264a7e2e_3c0b_432a_9a88_350401cd9e6c

  • 配置流控規則、降級規則、系統保護規則、熱點規則、授權規則

1540802374948_0c067d75_f489_40c3_acf4_593ac81789b9

若用戶在生產環境中使用了動態規則源,只需對控制檯進行少量的改造即可在生產環境中使用 Sentinel 控制檯,可以參考 在生產環境中使用 Sentinel 控制檯 一文。

專業的流量控制

Sentinel 提供多個方面的專業流控能力來保障服務的穩定性:

  • 多維度的流量控制:流量是實時的、不確定的,因此我們需要對實時到來的不規則的流量進行一定的控制。Sentinel 從資源粒度、運行的指標、資源的調用關係、控制效果等多個維度提供流量控制的能力;

  • 服務的熔斷降級:Sentinel 從多個方面提供對不穩定服務降級的能力,可以及時熔斷不穩定的服務(如響應時間非常長的服務),防止拖垮下游服務造成級聯錯誤;

  • 全局維度的系統保護:Sentinel 從全局的維度對系統負載進行保護,讓系統的入口流量和系統的負載達到一個平衡,保證系統在能力範圍之內處理最多的請求;

  • 黑白名單控制:根據資源的調用方來決定資源請求是否通過;

  • 熱點參數限流:對熱點數據的訪問進行限制,參數粒度的流量控制;

如何使用

Sentinel 提供多樣化的 SPI 接口用於提供擴展的能力。用戶可以在用同一個 sentinel-core 的基礎上自行擴展接口實現,從而可以方便地根據業務需求給 Sentinel 添加自定義的邏輯。目前 Sentinel 提供如下的擴展點:

  • 初始化過程擴展:可以添加自定義的一些初始化邏輯,如動態規則源註冊等;

  • Slot Chain 擴展:用於給 Sentinel 功能鏈添加自定義的功能並自由編排;

  • 指標統計擴展(StatisticSlot Callback):用於擴展StatisticSlot 指標統計相關的邏輯;

  • Transport 擴展:用於對心跳發送、監控 API Server 進行擴展。

1539165202133_64062dc7_88f1_45ac_8177_c29cd9ca0e9d

據悉,Sentinel 還將在後續版本中推出集羣限流功能、 API Gateway(如Netflix Zuul)和Service Mesh(如 Istio)全局流量控制等高級特性。

歡迎加入企業級互聯網架構交流釘釘羣,羣號:21704851

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

Hystrix之外健壯微服務的新選擇:Sentinel 發佈首個生產版本

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