1. 程式人生 > >Hystrix之外健壯微服務的新選擇:Sentinel 釋出首個生產版本

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 釋出首個生產版本