Sentinel 新版本发布,提升配置灵活性以及可观测配套

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Sentinel 新版本发布,提升配置灵活性以及可观测配套

作者:屿山

基本介绍


Sentinel 是阿里巴巴集团开源的,面向分布式、多语言异构化服务架构的流量治理组件,承接了阿里巴巴近 15 年的双十一大促流量的核心场景,例如秒杀、冷启动、消息削峰填谷、集群流量控制、实时熔断下游不可用服务等,是保障微服务高可用的利器。开源以来也被众多企业广泛应用于生产实践。



在功能上主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。同时 Sentinel 将会在未来的 2.0 系列版本中,进一步支持流量路由、流量染色与标透传、异常流量调度、预热调权等能力。在生态对接以及使用方式上也会更加贴近云原生。由流量防护升级为流量治理与自愈,扩大场景边界,从原来的只覆盖运行时稳定性,增加了变更态稳定性治理,覆盖服务全生命周期的稳定性,为业界提供统一的流量治理能力与标准化的治理方式。


版本预览


近期 Sentinel 1.8.7 正式发布,该版本基于 1.8.6 新增了多项特性和改进。主要新特性及改进如下:


  • 支持按照正则匹配资源名称,便于批量配置规则
  • 流量指标支持对接 Prometheus
  • 支持默认熔断规则
  • 重构 RateLimitController:提高准确性并支持 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 一直以来支持资源名称的规则配置,但在实际的生产时间中,会存在对某一组的接口进行批量配置的需求,因此在 1.8.7 版本中,我们引入了资源名称支持正则匹配的新特性来支持更加灵活的资源匹配,提高配置效率。


下面是一个简单的示例(代码详见 sentinel-demo-basic 的 FlowQpsRegexDemo 类),首先我们构建正则匹配的流控规则。


//匹配以 /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 三种资源分别发起请求,从输出中随机截取一部分可以看到 /A/a 资源以及 /A/c 资源匹配正则表达式,因此限流规则生效 pass qps 为 20,而 /B/a 资源由于不匹配正则表达式 pass qps 等于 total qps,符合预期,功能生效。


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


流量指标对接 Prometheus

在之前的版本中,Sentinel 的指标只能够通过日志或是控制台查看,但是存在诸多弊端,因此在 1.8.7 版本中我们对接了 Prometheus 这一云原生时代下流行的可观测组件,通过扩展的方式将指标暴露给 Prometheus。


下面是一个简单的示例(详见 sentinel-prometheus-metric-exporter 的 README.md 文件 )。


1. 引入 Sentinel 插件


<dependency>
  <groupId>com.alibaba.csp</groupId>
  <artifactId>sentinel-prometheus-metric-exporter</artifactId>
  <version>1.8.7</version>
</dependency>


2. 引入 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>


3. 在 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)


最终的效果如下:



社区未来规划


在将来的一段时间内,1.8.x 系列和 2.0 系列将保持并行演进,欢迎社区积极参与到新版本的建设中。可以使用钉钉搜索群号加入 Sentinel 社区群,钉钉群号:21977771


1.8.x 后续计划

1.8.x 版本自发布以来,持续深耕流量防护领域,后续还会在流量防护领域保持持续演进,并对一些基础结构、机制以及模型进行优化和重构,在提供更加完善的流量防护能力的同时,向 Sentinel 2.0 版本平稳过渡。


2.0 计划

Sentinel 2.0 品牌由流量防护升级为流量治理与自愈,扩大场景边界,为业界提供统一的流量治理能力与标准化的治理方式,同时更加贴近云原生。Sentinel 2.0 新的能力包括但不限于:流量路由、流量染色与标透传、异常流量调度、预热调权等,从原来的只覆盖运行时稳定性,增加了变更态稳定性治理,覆盖服务全生命周期的稳定性,为业界提供统一的流量治理能力与标准化的治理方式。


相关链接:

[1] Release Notes

https://github.com/alibaba/Sentinel/releases/tag/1.8.7

相关文章
|
存储 JSON SpringCloudAlibaba
Sentinel使用及规则配置
Sentinel使用及规则配置
1250 0
Sentinel使用及规则配置
|
9月前
|
消息中间件 监控 算法
springcloud整合Sentinel配置实战
springcloud整合Sentinel配置实战
|
11月前
|
监控 NoSQL Java
Redis-19Redis哨兵Sentinel模式-Centos6.5上3台主机1主2从3哨兵的配置及通过代码访问哨兵
Redis-19Redis哨兵Sentinel模式-Centos6.5上3台主机1主2从3哨兵的配置及通过代码访问哨兵
106 0
|
NoSQL Nacos Redis
RedisTemplateConfig sentinel(哨兵模式)/ cluster(集群模式) 常用配置 以及如何 一键配置切换
RedisTemplateConfig sentinel(哨兵模式)/ cluster(集群模式) 常用配置 以及如何 一键配置切换
RedisTemplateConfig sentinel(哨兵模式)/ cluster(集群模式) 常用配置 以及如何 一键配置切换
|
Sentinel
redisTemplete config sentinel(哨兵)模式 常用配置
redisTemplete config sentinel(哨兵)模式 常用配置
|
前端开发 Java 中间件
Sentinel Dashboard支持规则配置持久化至Nacos
目录 前言 一、Push模式原理 二、Sentinel控制台改造支持配置持久化至Nacos 1、拉取最新代码 2、开始搬运代码 (1) 调整点之修改NacosConfig类 (2) 调整点之新增NacosConfigProperties类 (3) 调整点之修改NacosConfigUtil类 (4) DynamicRuleProvider和DynamicRulePublisher实现优化 1) AbstractNacosProvider类 2) AbstractNacosPublisher类 3) FlowRuleNacosProvider类 4) FlowRuleNacosPublisher
Sentinel Dashboard支持规则配置持久化至Nacos
|
SQL 移动开发 监控
Sentinel控制台规则配置
Sentinel控制台规则配置
Sentinel控制台规则配置
|
Java API Nacos
sentinel 控制台控制客户端配置 | 学习笔记
快速学习 sentinel 控制台控制客户端配置
155 0
sentinel 控制台控制客户端配置 | 学习笔记
|
存储 监控 NoSQL
不改一行源码,实现 sentinel-dashboard 所有配置支持 apollo 持久化
虽然 sentinel 的设计非常优秀,基本上满足了流量治理的所有需求,但是 sentinel-dashboard 的配置都是存储在内存,在服务重启后就会丢失。要在生产环境上使用 sentinel 就需要对 sentinel-dashboard 二次开发,支持配置持久化
1085 0
不改一行源码,实现 sentinel-dashboard 所有配置支持 apollo 持久化
|
SpringCloudAlibaba Nacos 开发工具
SpringCloud Alibaba——Sentinel服务熔断与限流(六、规则持久化配置)
SpringCloud Alibaba——Sentinel服务熔断与限流(六、规则持久化配置)
SpringCloud Alibaba——Sentinel服务熔断与限流(六、规则持久化配置)