作者:嶼山
基本介紹
Sentinel 是阿里巴巴集團開源的,面向分布式、多語言異構(gòu)化服務(wù)架構(gòu)的流量治理組件,承接了阿里巴巴近 15 年的雙十一大促流量的核心場景,例如秒殺、冷啟動、消息削峰填谷、集群流量控制、實時熔斷下游不可用服務(wù)等,是保障微服務(wù)高可用的利器。開源以來也被眾多企業(yè)廣泛應(yīng)用于生產(chǎn)實踐。
在功能上主要以流量為切入點,從流量路由、流量控制、流量整形、熔斷降級、系統(tǒng)自適應(yīng)過載保護、熱點流量防護等多個維度來幫助開發(fā)者保障微服務(wù)的穩(wěn)定性。同時 Sentinel 將會在未來的 2.0 系列版本中,進一步支持流量路由、流量染色與標(biāo)透傳、異常流量調(diào)度、預(yù)熱調(diào)權(quán)等能力。在生態(tài)對接以及使用方式上也會更加貼近云原生。由流量防護升級為流量治理與自愈,擴大場景邊界,從原來的只覆蓋運行時穩(wěn)定性,增加了變更態(tài)穩(wěn)定性治理,覆蓋服務(wù)全生命周期的穩(wěn)定性,為業(yè)界提供統(tǒng)一的流量治理能力與標(biāo)準(zhǔn)化的治理方式。
版本預(yù)覽
近期 Sentinel 1.8.7 正式發(fā)布,該版本基于 1.8.6 新增了多項特性和改進。主要新特性及改進如下:
- 支持按照正則匹配資源名稱,便于批量配置規(guī)則
- 流量指標(biāo)支持對接 Prometheus
- 支持默認(rèn)熔斷規(guī)則
- 重構(gòu) RateLimitController:提高準(zhǔn)確性并支持 maxQps 閾值大于 1000
詳情請參考?Release Notes [ 1] 。感謝為該版本付出的所有貢獻者:@sczyh30,?@wuwen5,?@xiaozzzi,?@EzrealOf,?@wilsonwu,?@kirklin,?@garroshh,?@JosephZhang3,?@LiYangSir,?@Yan1025,?@wenshao,?@pandaapo,?@frank-zsy,?@z521598,?@LearningGp,?@robberphex,?@clara0,?@karl-sy,?@SaaiVenkat。
新特性介紹
資源名稱支持正則匹配
Sentinel 一直以來支持資源名稱的規(guī)則配置,但在實際的生產(chǎn)時間中,會存在對某一組的接口進行批量配置的需求,因此在 1.8.7 版本中,我們引入了資源名稱支持正則匹配的新特性來支持更加靈活的資源匹配,提高配置效率。
下面是一個簡單的示例(代碼詳見 sentinel-demo-basic 的 FlowQpsRegexDemo 類),首先我們構(gòu)建正則匹配的流控規(guī)則。
//匹配以 /A/ 為前綴的資源名
private static final String KEY = "/A/.*";
private static void initFlowQpsRule() {
List<FlowRule> rules = new ArrayList<FlowRule>();
FlowRule rule1 = new FlowRule();
rule1.setResource(KEY);
// set limit qps to 20
rule1.setCount(20);
rule1.setGrade(RuleConstant.FLOW_GRADE_QPS);
rule1.setRegex(true);
rule1.setLimitApp("default");
rules.add(rule1);
FlowRuleManager.loadRules(rules);
}
然后我們對 /A/a , /A/c,/B/a 三種資源分別發(fā)起請求,從輸出中隨機截取一部分可以看到 /A/a 資源以及 /A/c 資源匹配正則表達式,因此限流規(guī)則生效 pass qps 為 20,而 /B/a 資源由于不匹配正則表達式 pass qps 等于 total qps,符合預(yù)期,功能生效。
90 /A/a send qps is: 375
1703753361846, total:375, pass:20, block:355
90 /A/c send qps is: 370
1703753361846, total:370, pass:20, block:350
90 /B/a send qps is: 383
1703753361846, total:383, pass:383, block:0
89 /A/a send qps is: 366
1703753362850, total:366, pass:20, block:346
89 /A/c send qps is: 392
1703753362850, total:392, pass:20, block:372
89 /B/a send qps is: 357
1703753362850, total:357, pass:357, block:0
流量指標(biāo)對接 Prometheus
在之前的版本中,Sentinel 的指標(biāo)只能夠通過日志或是控制臺查看,但是存在諸多弊端,因此在 1.8.7 版本中我們對接了 Prometheus 這一云原生時代下流行的可觀測組件,通過擴展的方式將指標(biāo)暴露給 Prometheus。
下面是一個簡單的示例(詳見 sentinel-prometheus-metric-exporter 的 README.md 文件 )。
- 引入 Sentinel 插件
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-prometheus-metric-exporter</artifactId>
<version>1.8.7</version>
</dependency>
- 引入 Prometheus 依賴
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient</artifactId>
<version>0.3.0</version>
</dependency>
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_httpserver</artifactId>
<version>0.3.0</version>
</dependency>
- 在 Prometheus 端 prometheus.yml 中增加采集配置
scrape_configs:
- job_name: 'sentinelMetrics'
static_configs:
- targets: ['localhost:9092']
# Note: the port needs to be the same as the value in the configuration (csp.sentinel.prometheus.fetch.port)
最終的效果如下:
社區(qū)未來規(guī)劃
在將來的一段時間內(nèi),1.8.x 系列和 2.0 系列將保持并行演進,歡迎社區(qū)積極參與到新版本的建設(shè)中。可以使用釘釘搜索群號加入 Sentinel 社區(qū)群,釘釘群號:21977771。
1.8.x 后續(xù)計劃
1.8.x 版本自發(fā)布以來,持續(xù)深耕流量防護領(lǐng)域,后續(xù)還會在流量防護領(lǐng)域保持持續(xù)演進,并對一些基礎(chǔ)結(jié)構(gòu)、機制以及模型進行優(yōu)化和重構(gòu),在提供更加完善的流量防護能力的同時,向 Sentinel 2.0 版本平穩(wěn)過渡。
2.0 計劃
Sentinel 2.0 品牌由流量防護升級為流量治理與自愈,擴大場景邊界,為業(yè)界提供統(tǒng)一的流量治理能力與標(biāo)準(zhǔn)化的治理方式,同時更加貼近云原生。Sentinel 2.0 新的能力包括但不限于:流量路由、流量染色與標(biāo)透傳、異常流量調(diào)度、預(yù)熱調(diào)權(quán)等,從原來的只覆蓋運行時穩(wěn)定性,增加了變更態(tài)穩(wěn)定性治理,覆蓋服務(wù)全生命周期的穩(wěn)定性,為業(yè)界提供統(tǒng)一的流量治理能力與標(biāo)準(zhǔn)化的治理方式。
相關(guān)鏈接:
[1]?Release Notes文章來源:http://www.zghlxwxcb.cn/news/detail-820443.html
https://github.com/alibaba/Sentinel/releases/tag/1.8.7文章來源地址http://www.zghlxwxcb.cn/news/detail-820443.html
到了這里,關(guān)于Sentinel 新版本發(fā)布,提升配置靈活性以及可觀測配套的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!