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

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 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

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
相关文章
|
存储 JSON SpringCloudAlibaba
Sentinel使用及规则配置
Sentinel使用及规则配置
1741 0
Sentinel使用及规则配置
|
4月前
|
监控 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
|
5月前
|
Java Nacos Maven
Sentinel1.8.6更改配置同步到nacos(项目是Gateway)
Sentinel1.8.6 nacos springcloud springcloud-alibaba gateway
243 0
|
消息中间件 监控 算法
springcloud整合Sentinel配置实战
springcloud整合Sentinel配置实战
|
监控 NoSQL Java
Redis-19Redis哨兵Sentinel模式-Centos6.5上3台主机1主2从3哨兵的配置及通过代码访问哨兵
Redis-19Redis哨兵Sentinel模式-Centos6.5上3台主机1主2从3哨兵的配置及通过代码访问哨兵
133 0
|
存储 开发框架 Nacos
SpringCloud微服务实战——搭建企业级开发框架(十七):Sentinel+Nacos配置持久化
Sentinel Dashboard中添加的规则是存储在内存中的,我们的微服务或者Sentinel一重启规则就丢失了,现在我们将Sentinel规则持久化配置到Nacos中,在Nacos中添加规则,然后同步到Sentinel Dashboard服务中。Sentinel 支持以下几种规则:流量控制规则、熔断降级规则、系统保护规则、来源访问控制规则 和 热点参数规则。具体可查看官网 Sentinel 规则
417 57
SpringCloud微服务实战——搭建企业级开发框架(十七):Sentinel+Nacos配置持久化
|
NoSQL Nacos Redis
RedisTemplateConfig sentinel(哨兵模式)/ cluster(集群模式) 常用配置 以及如何 一键配置切换
RedisTemplateConfig sentinel(哨兵模式)/ cluster(集群模式) 常用配置 以及如何 一键配置切换
RedisTemplateConfig sentinel(哨兵模式)/ cluster(集群模式) 常用配置 以及如何 一键配置切换
|
前端开发 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
|
Sentinel
redisTemplete config sentinel(哨兵)模式 常用配置
redisTemplete config sentinel(哨兵)模式 常用配置
|
SQL 移动开发 监控
Sentinel控制台规则配置
Sentinel控制台规则配置
Sentinel控制台规则配置