当前位置: 首页 > Linux

Hystrix之外健壮微服务的新选择:Sentinel发布第一个生产版本

时间:2023-04-06 20:37:21 Linux

摘要:Sentinel阿里中间件团队开源,分布式服务架构的轻量级流控框架,主要以流量为切入点,从多个维度如流量控制、熔断降级、系统负载保护,帮助用户保护服务的稳定性。近日,阿里中间件开源组件Sentinel发布了第一个官方推荐生产版本:1.3.0-GA。此版本包括Sentinel控制台功能的改进、一些错误修复和其他产品改进。它是一个里程碑式的生产可用版本。Sentinel是阿里中间件团队开发的一个开源的分布式服务架构的轻量级流控框架。主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度帮助用户保护服务的稳定性。.近日,阿里中间件开源组件Sentinel发布了第一个官方推荐生产版本:1.3.0-GA。此版本包括Sentinel控制台功能的改进、一些错误修复和其他产品改进。它是一个里程碑式的生产可用版本。Sentinel承接了近10年阿里巴巴双十一流量推广的核心场景,完美保障了阿里巴巴双十一历年的稳定性,从开源之初就具备了生产和使用的能力。Sentinel开源三个月,受到了开源社区的广泛关注。目前已有多家企业用户在生产环境中使用,得到了用户的一致好评。Github社区的star数已超过3000。2012年,Sentinel在阿里巴巴集团内部诞生,主要功能是ingress流量控制;2013年到2018年,Sentinel在阿里巴巴集团内部快速发展,成为基础技术模块,覆盖所有核心场景。也因此,Sentinel积累了大量的流量控制场景和生产实践;2018年7月,Sentinel正式开源,第一个版本(0.1.0)可用于生产;2018年9月,Sentinel重要里程碑版本0.2.0发布,带来多项新特性,并已被外部企业用户用于生产环境;2018年10月底,Sentinel入驻CNCFLandscape;Sentinel的里程碑版本1.3.0-GA发布,这是一个重要的生产可用版本。Sentinel的开源生态系统非常广泛。适配WebServlet、Dubbo、SpringCloud、gRPC等常用框架和库。用户只需要引入相应的依赖,进行简单的配置,即可快速接入Sentinel。同时,Sentinel的动态规则源适配常见的配置中心和远程存储。目前支持Nacos、ZooKeeper、Apollo、Redis等动态规则源,可覆盖众多生产场景。未来,Sentinel还会适配更多常用的框架和配置中心,覆盖更广泛的场景。那么Sentinel作为一个生产可用的流控框架有哪些吸引人的特性呢?LightweightSentinel是一个功能齐全、高可用的流控框架。它的核心sentinel-core没有任何冗余依赖。打包后只有200KB。它非常轻巧。用户可以安全地引入sentinel-core而不必担心依赖性。.同时引入Sentinel带来的性能损失非常小,在单机QPS不太大的情况下损失几乎可以忽略不计(单机4.3WQPS损失约2.36%),因此无需担心Sentinel影响在线业务性能。易于使用的控制台Sentinel控制台提供强大的实时监控和规则配置管理功能。用户可以方便地:直观查看不同应用和资源的实时监控数据,查看当前资源调用链接和实时调用数据配置流量控制规则、降级规则、系统保护规则、热点规则、授权规则如果用户使用生产环境中的动态规则源,只需要对控制台进行少量修改,即可在生产环境中使用Sentinel控制台,参考在生产环境中使用Sentinel控制台一文。专业流控Sentinel提供多方面的专业流控能力,保障服务稳定性:多维度流控:流量是实时的、不确定的,我们需要在实时控制中控制不规则的流量。Sentinel从资源粒度、运行指标、资源调用关系、控制效果等多个维度提供流控能力;服务熔断降级:Sentinel提供了从多个方面对不稳定服务进行降级的能力,可以熔断时间不稳定的服务(比如响应时间非常长的服务),防止拉低下游服务导致的级联错误;全局维度的系统保护:Sentinel从全局维度对系统负载进行保护,让系统的入口流量和系统负载达到Balanced,保证系统在能力范围内处理最多的请求;黑白名单控制:根据资源的调用者判断资源请求是否通过;热点参数限流:限制访问热点数据,控制参数粒度的流量;使用Sentinel提供多种SPI接口,提供扩展能力。用户可以在同一个sentinel-core的基础上扩展接口实现,方便根据业务需求为Sentinel添加自定义逻辑。目前Sentinel提供了以下扩展点:初始化流程扩展:可以添加一些自定义的初始化逻辑,比如动态规则源注册等;SlotChain扩展:用于在Sentinel函数链中添加自定义函数,并自由排列;指标统计扩展(StatisticSlotCallback):用于扩展StatisticSlot指标统计相关的逻辑;传输扩展:用于扩展心跳发送和监控APIServer。据悉,Sentinel还将在后续版本中引入集群限流功能、APIGateway(如NetflixZuul)和ServiceMesh(如Istio)全局流量控制等高级特性。