Sentinel 1.7.0 发布,支持 Envoy 集群流量控制
流控降級(jí)中間件?Sentinel 1.7.0?版本正式發(fā)布,引入了 Envoy 集群流量控制支持、properties 文件配置、Consul/Etcd/Spring Cloud Config 動(dòng)態(tài)數(shù)據(jù)源適配等多項(xiàng)新特性與改進(jìn)。詳細(xì)特性列表請(qǐng)參考?Release Notes,歡迎大家使用并提出建議。
下面我們來(lái)一起探索一下 Sentinel 1.7.0 的重要特性。
Envoy 集群流量控制
Envoy?目前廣泛用作 Service Mesh 的數(shù)據(jù)平面,作為 sidecar 承擔(dān)路由和流量轉(zhuǎn)發(fā)等任務(wù)。在 Service Mesh 中集群流量控制是保障整個(gè)集群穩(wěn)定性必不可少的一環(huán),因此 Sentinel 1.7.0 提供了?Envoy Global Rate Limiting gRPC Service?的實(shí)現(xiàn) ——?Sentinel RLS token server,借助 Sentinel 集群限流 token server 來(lái)為 Envoy 服務(wù)網(wǎng)格提供集群流量控制的能力。
Envoy RLS Sentinel overview
用戶只需要拉起 Sentinel RLS token server 實(shí)例并配置集群流控規(guī)則,然后在 Envoy 中進(jìn)行相應(yīng)的配置即可快速接入 Sentinel 的集群限流。集群流控規(guī)則項(xiàng)與 Envoy 的?rate limit action?生成的 descriptor 相對(duì)應(yīng),支持 source_cluster、destination_cluster、request_headers、remote_address、generic_key 等幾種策略(支持組合)。示例規(guī)則項(xiàng):
domain: foo descriptors:- resources:- key: "destination_cluster"value: "service_aliyun"count: 1- resources:- key: "remote_address"value: "30.40.50.60"count: 10上面的示例配置了兩條規(guī)則,針對(duì)的 domain 都是 foo(與 Envoy 的配置相對(duì)應(yīng)),其中一條規(guī)則會(huì)對(duì)所有目標(biāo)為 service_aliyun 集群的請(qǐng)求進(jìn)行控制,QPS 最大為 1;另一條規(guī)則控制所有來(lái)源 IP 為 30.40.50.60 的請(qǐng)求每秒不超過(guò) 10 次。
我們提供了?Sentinel RLS token server 在 Kubernetes 環(huán)境的示例,方便大家在 K8s 集群中快速體驗(yàn) Sentinel 集群限流的能力。
在后續(xù)的版本我們還會(huì)改進(jìn)規(guī)則動(dòng)態(tài)配置的方式,支持 Kubernetes CRD 的形式配置規(guī)則,同時(shí)結(jié)合?Sentinel C++?版本提供原生的 Envoy Filter。未來(lái)我們還會(huì)提供 Istio 的支持,讓 Sentinel 在 Service Mesh 中發(fā)揮更為重要的作用。
properties 文件配置支持
Sentinel 1.7.0 優(yōu)化了加載啟動(dòng)配置項(xiàng)的方式,支持將配置項(xiàng)直接配置在 properties 文件中。用戶只需要通過(guò) -Dcsp.sentinel.config.file 參數(shù)配置 properties 文件的路徑即可,從而簡(jiǎn)化了通用配置的方式。
動(dòng)態(tài)數(shù)據(jù)源適配
Sentinel 1.7.0 新增了以下三種動(dòng)態(tài)數(shù)據(jù)源的支持,用戶可以利用這些動(dòng)態(tài)數(shù)據(jù)源保存、拉取規(guī)則:
- Etcd 數(shù)據(jù)源
- Consul 數(shù)據(jù)源
- Spring Cloud Config 數(shù)據(jù)源
至此,Sentinel 已經(jīng)支持了七種常用的配置中心,可以覆蓋大部分的規(guī)則推送場(chǎng)景。
Start hacking
值得注意的是,Sentinel 1.7.0 有近一半的特性都是由社區(qū)開發(fā)者貢獻(xiàn)的,許多的特性都是社區(qū)里面進(jìn)行充分討論和 review 后出爐的,因此我們可以稱 Sentinel 1.7.0 是一個(gè)社區(qū)一起定義的版本。我們非常歡迎大家持續(xù)參與社區(qū)貢獻(xiàn),一起來(lái)參與未來(lái)版本的演進(jìn)。若您有意愿參與社區(qū)貢獻(xiàn),可以參考 貢獻(xiàn)指南 來(lái)入門,同時(shí)也歡迎聯(lián)系我們加入 Sentinel 核心貢獻(xiàn)小組認(rèn)領(lǐng)任務(wù)。積極參與貢獻(xiàn)的開發(fā)者我們會(huì)重點(diǎn)關(guān)注,有機(jī)會(huì)被提名為 Committer。Now start hacking!
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的Sentinel 1.7.0 发布,支持 Envoy 集群流量控制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: IoT SaaS加速器——助力阿尔茨海默
- 下一篇: 如何在 Apache Flink 中使用