阿里中间件开源组件:Sentinel 0.2.0正式发布

Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。

关联阅读:阿里巴巴宣布 Sentinel 开源,进一步完善 Dubbo 生态(附PPT)

近日,Sentinel 0.2.0 正式发布。作为一个重要的里程碑版本,Sentinel 0.2.0 释放了多项产品新特性,如 异步调用支持、热点参数限流 等,并包括了大量的体验优化与 bug 修复。下面我们来看一下 Sentinel 0.2.0 的重要新特性。

异步调用支持

未来各种 RPC 框架、Web 框架都朝着异步化的目标发展,例如Spring WebFlux, Vert.x, 异步 Servlet, Netty 服务,等等。整个 Java 的发展方向也在朝着异步、响应式进行演进,无论是 CompletableFuture, Reactive Streams 还是后面的 Project Loom 协程,因此支持异步调用是各类开源组建的重要迭代内容之一。

Sentinel 0.2.0 引入异步调用链路的支持后,可以方便地统计异步调用资源的数据,维护异步调用链路,同时具备了适配异步框架/库的能力。异步调用资源访问与普通的资源访问类似,只不过异步调用资源 exit 通常都是在异步回调中进行。同时,Sentinel 还支持异步调用的嵌套(比如在异步回调中嵌套普通的资源调用或另一个异步资源调用)。只需要借助 Sentinel 提供的上下文切换功能,在对应的地方进行 Context 变换,即可维持正确的调用链路关系。

热点参数限流

热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频率最高的 Top K 数据,并对其访问进行限制。比如:

  • 商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制
  • 用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制

这时候,就可以使用 Sentinel 的 热点参数限流功能。热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。Sentinel 利用 LRU 策略,结合底层的滑动窗口机制来实现热点参数统计。LRU 策略可以统计单位时间内,最近最常访问的热点参数,而滑动窗口机制可以帮助统计每个参数的 QPS。

此外,Sentinel 还支持配置参数限流例外项,可以指定对某个特定的值配置单独的限流阈值。要使用热点参数限流功能,只需引入对应的依赖,为对应的资源配置热点参数限流规则,并在 entry 的时候传入相应的参数,即可使热点参数限流生效。

黑白名单控制

很多时候,我们需要根据调用方信息来判断资源是否允许访问,比如服务 A 只允许来自 appA 和 appB 调用方的请求通过,而服务 B 不允许来自 appC 调用方的请求通过,这时候可以使用 Sentinel 的 黑白名单控制功能。

黑白名单根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。

Slot Chain扩展

阿里巴巴内部是通过一系列的 slot 组成的 slot chain 来实现Sentinel 的各种功能的,包括构建调用链、调用数据统计、规则检查等。各个 slot 之间的顺序非常重要。Sentinel 0.2.0 将 SlotChainBuilder 作为 SPI 接口进行扩展,使得 Slot Chain 具备了扩展的能力。由此,用户便可以加入自定义的 slot 并编排 slot 间的顺序,从而可以给 Sentinel 添加自定义的功能。

动态规则数据源重构

Sentinel 的动态规则数据源 用于从中读取及写入规则。Sentinel 0.2.0 对动态规则数据源(DataSource)进行了重构,将动态规则数据源划分为两种类型:读数据源(ReadableDataSource)和写数据源(WritableDataSource),从而使不同类型的数据源职责更加清晰:

读数据源仅负责监听或轮询读取远程存储的变更;

写数据源仅负责将规则变更写入到规则源中。

在实际的场景中,不同的存储类型对应的数据源类型也不同,可以参考之前的“在生产环境中使用 Sentinel 控制台”一文。对于 push 模式的数据源,一般不支持写入;而 pull 模式的数据源则是可写的。Sentinel 0.2.0 提供了本地文件写数据源的实现。

其他重要特性

Sentinel 0.2.0 还包含了下面的一些特性和改进:

  • 增加 Redis 动态数据源适配
  • Sentinel Dubbo Adapter 支持统计更多种类的异常
  • Sentinel Dashboard 提供监控数据持久化的接口,开发者可自行扩展实现监控数据持久化
  • Sentinel Web Servlet Filter 支持从 HTTP 请求中提取来源信息(origin)

 


原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

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

相关文章

IDEA的基本使用:让你的IDEA有飞一般的感觉 | CSDN 博文精选

戳蓝字“CSDN云计算”关注我们哦!作者 | 琦彦责编 | 阿秃转自 | CSDN 博客1.设置maven在File->settings->搜索maven Mavan home directory--设置maven安装包的bin文件夹所在的位置 User settings file--设置setting文件所在的位置 Local repo…

c语言库函数手册pdf百度云,C语言库函数手册.pdf

C语言库函数手册C 语言库函数手册目录A. 分类函数 [函数库为 ctype.h] 1B. 数学函数 [函数库为 math.h、stdlib.h、string.h、float.h] 2C. 目录函数 [函数库为 dir.h、dos.h] 3D. 迕程函数 [函数库为 stdlib.h、process.h] 4E. 转换子程序 [函数库为 math.h、stdlib.h、ctype.…

Apache JMeter 测试webservice接口

文章目录Apache JMeter 测试webservice接口流程一、设置基础组件1. 添加一个线程组2. HTTP信息头管理器3. HTTP请求4. 添加一个察看结果树5. 添加一个聚合报告二、配置基础组件2.1. 找到SoapUI 请求头信息2.2. 设置http头管理器2.3. 接口信息同步三、发送测试3.1. 发送请求3.2.…

函数计算搭建 Serverless Web 应用(三)- 三分钟搭建 Web 应用

简介 阿里云 函数计算(Function Compute) 是事件驱动的全托管计算服务,是阿里云的 Serverless 计算平台。基于函数计算构建应用,您无需管理服务器等基础设施,而是专注于应用逻辑的开发,大幅提高开发效率。 函数计算搭建 Serverl…

什么叫做罗列式_极简罗列法怎么写作文

极简罗列法怎么写作文以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!1. 作文罗列式怎么开头列举式案例一:“争渡,争渡,惊起一滩鸥鹭。”李清照争的是一种…

备战双 11!蚂蚁金服万级规模 K8s 集群管理系统如何设计?

戳蓝字“CSDN云计算”关注我们哦!作者 | 沧漠责编 | 阿秃导读:Kubernetes 的出现使得广大开发同学也能运维复杂的分布式系统,它大幅降低了容器化应用部署的门槛,但运维和管理一个生产级的高可用 Kubernetes 集群仍十分困难。本文…

移动互联网+智能运营体系搭建=你家有金矿啊!

每个企业都有许多的数据,但能否将数据转化成商业价值,是企业非常关心的问题。阿里巴巴曾自嘲是一家坐在数据的金矿上啃着馒头的企业,前几年集团积累了很多的数据,但这些数据并没有真正应用起来,受限于几个原因&#xf…

厦门理工C语言实验报告8,厦门理工c语言数据结构实验

《厦门理工c语言数据结构实验》由会员分享,可在线阅读,更多相关《厦门理工c语言数据结构实验(15页珍藏版)》请在人人文库网上搜索。1、数据结构实验报告 实验序号:6 实验项目名称:树和二叉树的操作 学 号 姓 名专业、班实验地点指…

Apache JMeter 测试webservice接口 中文乱码

文章目录1. http请求编码设置utf-82. jmeter.properties修改默认编码1. http请求编码设置utf-8 2. jmeter.properties修改默认编码 找到apache-jmeter-5.2.1\bin\jmeter.properties文件 在jmeter.properties文件中找到 #sampleresult.default.encodingISO-8859-1 替换为 samp…

elementui 按钮 表单_element UI实现表格中添加开关控制按钮

我使用的是element ui V1.4.3如下图是我要实现的效果:点击显示 Dialog:data"gridData"borderheight"300">on-text "是"off-text "否"on-color"#5B7BFA"off-color"#dadde5"v-model"scope.row.…

【实操手册】如何把一场直播录制下来?

许多用户使用直播服务时,需要把正在直播的视频录制下来进行存储或方便后续的回看。为了满足用户需求,阿里云视频直播服务提供了直播录制功能,本文将对这两种形式的录制方法进行简单介绍。 一、按场景录制 针对不同的场景进行录制配置 • 按…

搞不清边缘计算几款产品差异?动动小手点这里!

最近阿里云新上了一款产品,边缘节点服务(简称ENS),随着产品运营推广不断深入,偶尔会遇到用户关于ENS产品与其他几款产品的疑惑,典型问题比如: ENS是部署在CDN位置,用户是不是可以直…

Apache JMeter 压测webservice接口

文章目录一、压测设置和参数说明二、服务台控制监控三、查看结果树四、查看聚合报告一、压测设置和参数说明 压测设置说明线程数并发数量,能跑多少量。具体说是一次存在多少用户同时访问。Rame-Up Period(in seconds)表示JMeter每隔多少秒发动并发。理解成准备时长…

c语言switch caseh(op),switch语句求教

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼c:\program files\visual c\text4.cpp(7) : error C2001: newline in constantc:\program files\visual c\text4.cpp(8) : error C2143: syntax error : missing ) before switchc:\program files\visual c\text4.cpp(9) : error C…

阿里云自研新一代企业云数据库POLARDB背后的技术

从2008年到2018年,阿里巴巴的数据库技术已经发展了10年的时间,10年的时间从AliSQL到RDS,再到自研POLARDB,阿里巴巴数据库技术得到了极大的提升。那么在阿里云自研新一代企业云数据库POLARDB背后有哪些技术呢?本文中&am…

python wxpython radiobutton 能不能默认不选择_Python啥都行_Robot自动化测试

文章目录Robot介绍与环境搭建Robot特性初探Robot 技术架构WxPython GUI工具箱Robot FrameworkRIDE安装第一个案例启动RIDE自定义一个函数新建项目及测试用例导入自定义库函数使用自定义函数运行测试用例及查看其报告Robot介绍与环境搭建Robot特性初探Robot Framework是一个基于…

为什么嫁人就选程序员!

本文的重点是:“为什么年轻漂亮的小姑娘都瞄准了程序员小哥哥”“理发38?太奢侈了!淘宝20买套剪刀自己可以用好几年。”“衣服太贵了,我觉得优衣库的那件打折就已经很好了”“上个月的一千块钱的零花钱没花完,这个月先…

数字化转型 移动化先行 云栖大会上发布了哪些移动研发新利器?

随着企业使用互联网技术的不断深入,企业在产品研发、供应链管理、市场运营及企业内部的场景当中,生产效率得到大幅度提升。随着移动互联网技术在社会层面深度普及,移动设备的普及性使得企业成为数字化转型的最佳载体。本文以2018年云栖大会杭…

c语言cis,c语言小白学习历程第五篇

学习目标:难的咱也看不懂,先把简单的看了再说,加油L 冲冲冲!学习时间:2020年11月1日学习产出:回调函数学习:回调函数说白了就是一个通过函数指针调用的函数。如果你把函数的指针Callback(地址)作…