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

news2024/12/26 0:02:03

作者:屿山

基本介绍

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>
  1. 引入 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>
  1. 在 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1406386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker安装Rabbitmq教程(详细图文)

目录 1.下载Rabbitmq的镜像 2.创建并运行rabbitmq容器 3.启动web客户端 4.访问rabbitmq的微博客户端 5.遇到的问题 问题描述&#xff1a;在rabbitmq的web客户端发现界面会弹出如下提示框Stats in management UI are disabled on this node 解决方法 &#xff08;1&#…

线程的同步和互斥学习笔记

目录 互斥锁的概念和使用 线程通信-互斥 互斥锁的创建和销毁 申请锁-pthread_mutex_lock 释放锁-pthread_mutex_unlock 读写锁的概念和使用 死锁的避免 互斥锁的概念和使用 线程通信-互斥 临界资源 一次只允许一个任务&#xff08;进程、线程&#xff09;访问的共享资…

Kubeadm安装单master多node节点K8S集群

kubeadm安装k8s1.25版本集群步骤 环境说明实验环境规划集群搭建规划 初始化安装k8s集群的实验环境安装虚拟机更新yum源和操作系统配置机器主机名配置主机hosts文件&#xff0c;相互之间通过主机名互相访问配置主机之间无密码登录关闭交换分区swap&#xff0c;提升性能修改机器内…

漏洞补丁修复之openssl版本从1.1.1q升级到1.1.1t以及python版本默认2.7.5升级到2.7.18新版本和Nginx版本升级到1.24.0

​ 一、Openssl升级 1、查看Openssl安装的版本 openssl version 2、查看Openssl路径 which openssl 3、上传openssl安装包到服务器:openssl-1.1.1t.tar.gz,并且解压,安装: mv /usr/local/openssl /usr/local/backup_openssl_1.1.1q_20240120 mkdir /usr/local/openssl tar…

LeetCode.2765. 最长交替子数组

题目 2765. 最长交替子数组 分析 为了得到数组 nums 中的最长交替子数组的长度&#xff0c;需要分别计算以每个下标结尾的最长交替子数组的长度。为了方便处理&#xff0c;计算过程中需要考虑长度等于 1 的最长交替子数组&#xff0c;再返回结果时判断最长交替子数组的长度…

【AI视野·今日Robot 机器人论文速览 第七十五期】Thu, 11 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Thu, 11 Jan 2024 Totally 16 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Analytical Model and Experimental Testing of the SoftFoot: an Adaptive Robot Foot for Walking over Obstacles and Irre…

MMagic调试(训练)dreambooth

时间&#xff1a;2024.1.23 1.dreambooth配置文件 dreambooth在mmagic中的路径&#xff1a; configs/dreambooth本文以dreambooth.py 为例 configs/dreambooth/dreambooth.py2.下载数据集 下载数据集并保存至data/dreambooth/&#xff0c;数据集&#xff1a; https://dri…

[BUUCTF]-PWN:babyfengshui_33c3_2016解析

又是一道堆题&#xff0c;先看保护 关键信息是32位&#xff0c;没开pie 直接看ida 大致是alloc创建堆块&#xff0c;free释放堆块&#xff0c;show查看堆块内容&#xff0c;fill填充堆块内容 其他的都没啥关键的要讲&#xff0c;但alloc那里非常需要解析一下 解释如上图 再具…

npm install运行报错npm ERR! gyp ERR! not ok问题解决

执行npm install的时候报错&#xff1a; npm ERR! path D:..\node_modules\\**node-sass** npm ERR! command failed ...npm ERR! gyp ERR! node -v v20.11.0 npm ERR! gyp ERR! node-gyp -v v3.8.0 npm ERR! gyp ERR! not ok根据报错信息&#xff0c;看出时node-sass运行出现…

基于taro搭建小程序多项目框架

前言 为什么需要这样一个框架&#xff0c;以及这个框架带来的好处是什么&#xff1f; 从字面意思上理解&#xff1a;该框架可以用来同时管理多个小程序&#xff0c;并且可以抽离公用组件或业务逻辑供各个小程序使用。当你工作中面临这种同时维护多个小程序的业务场景时&#xf…

前端面试题-(浏览器内核,CSS选择器优先级,盒子模型,CSS硬件加速,CSS扩展)

前端面试题-(浏览器内核&#xff0c;CSS选择器优先级&#xff0c;盒子模型&#xff0c;CSS硬件加速&#xff0c;CSS扩展&#xff09; 常见的浏览器内核CSS选择器优先级盒子模型CSS硬件加速CSS扩展 常见的浏览器内核 内核描述Trident(IE内核)主要用在window系统中的IE浏览器中&…

【论文阅读|2024 WACV 多目标跟踪Deep-EloU】

论文阅读|2024 WACV 多目标跟踪Deep-EloU 摘要1 引言&#xff08;Introduction&#xff09;2 相关工作&#xff08;Related Work&#xff09;2.1 基于卡尔曼滤波器的多目标跟踪算法&#xff08;Multi-Object Tracking using Kalman Filter&#xff09;2.2 基于定位的多目标跟踪…

Elasticsearch:Simulate ingest API

Ingest pipeline 为我们摄入数据提供了极大的方便。在我之前的文章中&#xff0c;有非常多的有关 ingest pipeline 的文章。请详细阅读文章 “Elastic&#xff1a;开发者上手指南”。针对一组提供的文档执行摄取管道&#xff0c;可以选择使用替代管道定义。 Simulate ingest AP…

如何查找SpringBoot应用中的请求路径(不使用idea)

背景 昨天有个同事向我咨询某个接口的物理表是哪个&#xff0c;由于公司业务较多、这块业务的确不是我负责的&#xff0c;也没有使用idea不能全局搜索(eclipse搜不到jar内的字符串)&#xff0c;也就回复了不清楚。 除了自己写代码输出servlet的路径和类外&#xff0c;发现了一…

【C++】list容器功能模拟实现

介绍 上一次介绍了list队容器的迭代器模拟&#xff0c;这次模拟实现list的简单功能&#xff0c;尤其要注意构造函数、析构函数、以及赋值运算符重载的实现。 list容器需要接纳所有类型的数据&#xff0c;因此&#xff0c;结构设置与迭代器设置同理&#xff0c;需要引入结点&…

邮件服务支持Exchange协议,资产历史账号支持设置保留数量,JumpServer堡垒机v3.10.2 LTS版本发布

2024年1月22日&#xff0c;JumpServer开源堡垒机正式发布v3.10.2 LTS版本。JumpServer开源项目组将对v3.10 LTS版本提供长期的支持和维护&#xff0c;并定期迭代发布小版本。欢迎广大社区用户升级至v3.10 LTS版本&#xff0c;以获得更佳的使用体验。 在v3.10.2 LTS版本中&…

LeetCode203 移除链表元素

203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5] 示例 2&#…

简单高效 Learn LaTeX 008 - LaTex Font Color 字体与颜色 (32 mins)

在LaTeX中进行字体和颜色的设置&#xff1a; https://www.ixigua.com/7298100920137548288?id7304094068840071730&logTag3418d8469157c468c60b

开始学习vue2(Vue方法)

一、过滤器 过滤器&#xff08;Filters&#xff09;是 vue 为开发者提供的功能&#xff0c;常用于文本的格式 化。过滤器可以用在两个地方&#xff1a;插值表达式 和 v-bind 属性绑定。 过滤器应该被添加在 JavaScript 表达式的尾部&#xff0c;由“管道符 ”进行 调用&#…

春招冲刺第二天——SQL学习

春招冲刺第二天 前言 MySQL学习&#xff1a;哔哩哔哩参考视频&#xff1a; 【中字】SQL进阶教程 | 史上最易懂SQL教程&#xff01;10小时零基础成长SQL大师 第一章 Mysql安装 视频前三节有教程&#xff0c;或自行查阅&#xff0c;不做赘述 课程资料和数据库数据的网盘&…