当前位置: 首页 > Linux

阿里中间件开源组件:Sentinel0.2.0正式发布

时间:2023-04-06 22:51:25 Linux

摘要:Sentinel由阿里中间件团队开源。它是分布式服务架构的轻量级流量控制组件。断路器降级、系统负载保护等维度帮助用户保障服务的稳定性。相关阅读:阿里巴巴宣布Sentinel开源,进一步完善Dubbo生态(附PPT)近日,Sentinel0.2.0正式发布。Sentinel由阿里巴巴中间件团队开源。它是分布式服务架构的轻量级流量控制组件。主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度帮助用户保障服务的稳定性。性别。近日,Sentinel0.2.0正式发布。作为一个重要的里程碑版本,Sentinel0.2.0发布了异步调用支持、热点参数限流等多项产品新特性,并包含了大量的体验优化和bug修复。让我们来看看Sentinel0.2.0的重要新特性。异步调用支持未来各种RPC框架和Web框架朝着异步的目标发展,如SpringWebFlux、Vert.x、异步Servlet、Netty服务等。整个Java的发展方向也在朝着异步和响应式发展,无论是CompletableFuture、ReactiveStreams还是后来的ProjectLoom协程,所以支持异步调用是各种开源组件的重要迭代内容之一。Sentinel0.2.0引入异步调用链接的支持后,可以方便的统计异步调用资源的数据,维护异步调用链接,具备适配异步框架/库的能力。异步调用资源访问与普通资源访问类似,只是异步调用资源退出通常在异步回调中进行。同时,Sentinel也支持异步调用的嵌套(比如在异步回调中嵌套一个普通的资源调用或者另一个异步资源调用)。你只需要使用Sentinel提供的上下文切换功能,在相应的地方进行Context转换,就可以保持正确的调用链接关系。热点参数限流热点是经常访问的数据。很多时候我们想统计某个热点数据中访问频率最高的前K个数据,限制他们的访问。例如:商品ID为参数,统计一段时间内最常购买的商品ID,并以用户ID为参数进行限制,限制一段时间内访问频率最高的用户ID。这时候可以使用Sentinel的热点参数限流功能。热点参数限流会统计传入参数中的热点参数,根据配置的节流阈值和模式限制包含热点参数的资源调用。热点参数限流可以看作是一种特殊的流量控制,只对包含热点参数的资源调用生效。Sentinel采用LRU策略,结合底层滑动窗口机制实现热点参数统计。LRU策略可以统计单位时间内最近访问的热点参数,滑动窗口机制可以帮助统计每个参数的QPS。此外,Sentinel还支持配置参数限流异常,可以指定一个具体的值来配置单独的限流阈值。使用热点参数限流功能,只需要引入相应的依赖,为相应的资源配置热点参数限流规则,在入口时传入相应的参数即可使热点参数限流生效.黑白名单控制很多时候,我们需要根据调用者信息来判断资源是否允许访问。比如服务A只允许appA和appB调用者的请求通过,而服务B则不允许appC调用者的请求通过。这时候,可以使用Sentinel的黑白名单控制功能。黑白名单根据资源的请求来源(origin)来限制资源是否可以通过。如果配置了白名单,只有请求源在白名单中。如果配置了黑名单,则请求源在黑名单中。.SlotChainExpansion阿里巴巴内部通过一系列由slot组成的slotchain来实现Sentinel的各种功能,包括构建调用链、调用数据统计、规则检查等。插槽之间的顺序非常重要。Sentinel0.2.0将SlotChainBuilder扩展为SPI接口,使SlotChain具有扩展能力。因此,用户可以添加自定义插槽并安排插槽的顺序,从而可以为Sentinel添加自定义功能。DynamicRuleDataSource重构了Sentinel的DynamicRuleDataSource,用于从中读写规则。Sentinel0.2.0对动态规则数据源(DataSource)进行了重构,将动态规则数据源分为读数据源(ReadableDataSource)和写数据源(WritableDataSource)两种类型,让不同类型的数据源职责更加清晰:读取数据源只负责监听或轮询读取远程存储的变化;写入数据源只负责将规则变化写入规则源。在实际场景中,不同的存储类型对应不同的数据源类型。可以参考之前的文章《在生产环境中使用Sentinel控制台》。push模式的数据源一般不支持写入;拉模式下的数据源是可写的。Sentinel0.2.0提供了本地文件写入数据源的实现。其他重要特性Sentinel0.2.0还包括以下特性和改进:增加Redis动态数据源适配SentinelDubboAdapter支持统计更多类型的异常SentinelDashboard提供了监控数据持久化的接口,开发者可以自行扩展实现监控数据持久化SentinelWebServletFilter支持从HTTP请求中提取源信息(origin)