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

摘要: Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。 关联阅读:阿里巴巴宣布 Sentinel 开源,进一步完善 Dubbo 生态(附PPT) 近日,Sentinel 0.2.0 正式发布。

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

近日,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://blog.51cto.com/14031893/2307473

时间: 2024-08-07 11:07:23

阿里中间件开源组件:Sentinel 0.2.0正式发布的相关文章

阿里云开源离线同步工具DataX3.0介绍

阿里云开源离线同步工具DataX3.0介绍 一. DataX3.0概览 ? DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数据源之间稳定高效的数据同步功能. 设计理念 为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源.当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数

SpringCloud微服务:阿里开源组件Nacos,服务和配置管理

摘自:https://www.cnblogs.com/cicada-smile/p/12355994.html 源码地址:GitHub·点这里||GitEE·点这里 一.阿里微服务简介 1.基础描述 Alibaba-Cloud致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便开发者通过SpringCloud编程模型轻松使用这些组件来开发分布式应用服务.只需要添加一些注解和少量配置,就可以将SpringCloud应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建

Sentinel 发布0.2.0,异步调用支持、热点参数限流等成产品新亮点

Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度来帮助用户保护服务的稳定性. 近日,Sentinel 0.2.0 正式发布.作为一个重要的里程碑版本,Sentinel 0.2.0 释放了多项产品新特性,如 异步调用支持.热点参数限流 等,并包括了大量的体验优化与 bug 修复.下面我们来看一下 Sentinel 0.2.0 的重要新特性. 异步调用支持 未来各种 RPC 框架.Web 框架都朝着异步

Java 开源博客——B3log Solo 0.6.7 正式版发布了!

Java 开源博客 -- B3log Solo 0.6.7 正式版发布了!欢迎大家下载. 另外,欢迎观摩 B3log 团队的新项目:Wide,也非常欢迎大家参与进来 :-) 特性 基于标签的文章分类 Ping Google Blog Search Engine 博客/标签 Atom/RSS 输出 Sitemap 输出 评论回复及邮件提醒 自定义页面 置顶/相关/随机/站外相关文章 文章.页面永久链接(Permalink) 文章草稿夹.签名档.更新提示 缓存管理 多用户 多语言 换肤 插件 Met

Java 开源博客——B3log Solo 0.6.6 正式版公布了!

Java 开源博客 -- B3log Solo 0.6.6 正式版公布了!欢迎大家下载. 该版本号引入了数据库连接池:Druid. 另外,欢迎观摩 B3log 团队的新项目:Noty,也很欢迎大家參与进来 :-) 特性 基于标签的文章分类 Ping Google Blog Search Engine 博客/标签 Atom/RSS 输出 Sitemap 输出 评论回复及邮件提醒 自己定义页面 置顶/相关/随机/站外相关文章 文章.页面永久链接(Permalink) 文章草稿夹.签名档.更新提示 缓

开源 免费 java CMS - FreeCMS2.0 移动APP生成信息数据

项目地址:http://www.freeteam.cn/ 生成信息数据 生成当前管理站点下允许移动APP访问的栏目的信息页面. 从左侧管理菜单点击生成信息数据进入. 您可以选择需要生成的栏目,然后点击"生成信息数据"进行信息页数据的静态化. 如果您是此站点的总管理员,您也可以把"是否所有栏目"属性选择为是,点击"生成信息数据"完成对此站点所有栏目的信息页数据的静态化. 系统会在此站点目录/mobile/栏目id/info/YYYY/目录下生成以信

JAVA版本微信公众账号开源项目版本发布-jeewx1.0(捷微)

JeeWx, 敏捷微信开发,简称"捷微". 捷微是一款免费开源的微信公众账号开发平台. 平台介绍: 一.简介 jeewx是一个开源,高效,敏捷的微信开发平台采用JAVA语言,它是基于jeecg这个企业级快速开发框架实现的. jeewx的目的是最大化的简化微信开发的流程,使用开发者能把最好的精力放到微信具体业务开发,并能以最快的时间完成.把一些常规而频繁的工作交由jeewx来处理即可,平台兼备的代码生成器,在线开发,可以快速的完成企业应用.为此jeewx提供了详细的二次开发文档,关键代码

开源 免费 java CMS - FreeCMS2.0 会员密码设置

项目地址:http://www.freeteam.cn/ 密码设置 从右侧管理菜单点击密码设置进入.   输入正确的当前密码和新密码后点击修改即可. 开源 免费 java CMS - FreeCMS2.0 会员密码设置

开源 免费 java CMS - FreeCMS2.0 移动APP生成栏目数据

项目地址:http://www.freeteam.cn/ 生成栏目数据 生成当前管理站点下允许移动APP访问的栏目的栏目页面. 从左侧管理菜单点击生成栏目数据进入. 您可以选择需要生成的栏目,然后点击"生成所选栏目数据"进行栏目页数据的静态化. 如果您是此站点的总管理员,您也可以点击"生成此站点所有栏目数据"完成对此站点所有栏目页数据的静态化. 系统会在此站点目录下创建一个以栏目id为名字的文件夹用于存放此栏目的静态化页面. 可以设置生成前多少页,如设置只生成前10