天天看點

Sentinel 1.7.0 釋出,支援 Envoy 叢集流量控制

流控降級中間件 Sentinel 1.7.0 版本正式釋出,引入了 Envoy 叢集流量控制支援、properties 檔案配置、Consul/Etcd/Spring Cloud Config 動态資料源适配等多項新特性與改進。詳細特性清單請參考 Release Notes

,歡迎大家使用并提出建議。

下面我們來一起探索一下 Sentinel 1.7.0 的重要特性。

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 服務網格提供叢集流量控制的能力。

Sentinel 1.7.0 釋出,支援 Envoy 叢集流量控制

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 等幾種政策(支援組合)。示例規則項:

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 次。

我們提供了

Sentinel RLS token server 在 Kubernetes 環境的示例

,友善大家在 K8s 叢集中快速體驗 Sentinel 叢集限流的能力。

在後續的版本我們還會改進規則動态配置的方式,支援 Kubernetes CRD 的形式配置規則,同時結合

Sentinel C++

版本提供原生的 Envoy Filter。未來我們還會提供 Istio 的支援,讓 Sentinel 在 Service Mesh 中發揮更為重要的作用。

properties 檔案配置支援

Sentinel 1.7.0 優化了加載

啟動配置項

的方式,支援将配置項直接配置在 properties 檔案中。使用者隻需要通過 -Dcsp.sentinel.config.file 參數配置 properties 檔案的路徑即可,進而簡化了通用配置的方式。

動态資料源适配

Sentinel 1.7.0 新增了以下三種動态資料源的支援,使用者可以利用這些動态資料源儲存、拉取規則:

至此,Sentinel 已經支援了七種常用的配置中心,可以覆寫大部分的規則推送場景。

Start hacking

值得注意的是,Sentinel 1.7.0 有近一半的特性都是由社群開發者貢獻的,許多的特性都是社群裡面進行充分讨論和 review 後出爐的,是以我們可以稱 Sentinel 1.7.0 是一個社群一起定義的版本。我們非常歡迎大家持續參與社群貢獻,一起來參與未來版本的演進。若您有意願參與社群貢獻,可以參考 貢獻指南 來入門,同時也歡迎聯系我們加入 Sentinel 核心貢獻小組認領任務。積極參與貢獻的開發者我們會重點關注,有機會被提名為 Committer。Now start hacking!

繼續閱讀