Sentinel 1.7.0 發佈,支持 Envoy 集羣流量控制

流控降級中間件 Sentinel 1.7.0 版本正式發佈,引入了 Envoy 集羣流量控制支持、properties 文件配置、Consul/Etcd/Spring Cloud Config 動態數據源適配等多項新特性與改進。詳細特性列表請參考 Release Notes,歡迎你們使用並提出建議。git

下面咱們來一塊兒探索一下 Sentinel 1.7.0 的重要特性。github

Envoy 集羣流量控制

Envoy 目前普遍用做 Service Mesh 的數據平面,做爲 sidecar 承擔路由和流量轉發等任務。在 Service Mesh 中集羣流量控制是保障整個集羣穩定性必不可少的一環,所以 Sentinel 1.7.0 提供了 Envoy Global Rate Limiting gRPC Service 的實現 —— Sentinel RLS token server,藉助 Sentinel 集羣限流 token server 來爲 Envoy 服務網格提供集羣流量控制的能力。
68639837_d2266980_0540_11ea_8997_05084e2e47bbspring

Envoy RLS Sentinel overview

用戶只須要拉起 Sentinel RLS token server 實例並配置集羣流控規則,而後在 Envoy 中進行相應的配置便可快速接入 Sentinel 的集羣限流。集羣流控規則項與 Envoy 的 rate limit action 生成的 descriptor 相對應,支持 source_cluster、destination_cluster、request_headers、remote_address、generic_key 等幾種策略(支持組合)。示例規則項:api

domain: foo
descriptors:
  - resources:
    - key: "destination_cluster"
      value: "service_aliyun"
    count: 1
  - resources:
    - key: "remote_address"
      value: "30.40.50.60"
    count: 10

上面的示例配置了兩條規則,針對的 domain 都是 foo(與 Envoy 的配置相對應),其中一條規則會對全部目標爲 service_aliyun 集羣的請求進行控制,QPS 最大爲 1;另外一條規則控制全部來源 IP 爲 30.40.50.60 的請求每秒不超過 10 次。dom

咱們提供了 Sentinel RLS token server 在 Kubernetes 環境的示例,方便你們在 K8s 集羣中快速體驗 Sentinel 集羣限流的能力。ide

在後續的版本咱們還會改進規則動態配置的方式,支持 Kubernetes CRD 的形式配置規則,同時結合 Sentinel C++ 版本提供原生的 Envoy Filter。將來咱們還會提供 Istio 的支持,讓 Sentinel 在 Service Mesh 中發揮更爲重要的做用。優化

properties 文件配置支持

Sentinel 1.7.0 優化了加載啓動配置項的方式,支持將配置項直接配置在 properties 文件中。用戶只須要經過 -Dcsp.sentinel.config.file 參數配置 properties 文件的路徑便可,從而簡化了通用配置的方式。url

動態數據源適配

Sentinel 1.7.0 新增瞭如下三種動態數據源的支持,用戶能夠利用這些動態數據源保存、拉取規則:spa

至此,Sentinel 已經支持了七種經常使用的配置中心,能夠覆蓋大部分的規則推送場景。code

Start hacking

值得注意的是,Sentinel 1.7.0 有近一半的特性都是由社區開發者貢獻的,許多的特性都是社區裏面進行充分討論和 review 後出爐的,所以咱們能夠稱 Sentinel 1.7.0 是一個社區一塊兒定義的版本。咱們很是歡迎你們持續參與社區貢獻,一塊兒來參與將來版本的演進。若您有意願參與社區貢獻,能夠參考 貢獻指南 來入門,同時也歡迎聯繫咱們加入 Sentinel 核心貢獻小組認領任務。積極參與貢獻的開發者咱們會重點關注,有機會被提名爲 Committer。Now start hacking!

 

閱讀原文

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索