Sentinel 成为 Spring Cloud 官方推荐的主流熔断降级方案
近日,Sentinel 贡献的 spring-cloud-circuitbreaker-sentinel 模块正式被Spring Cloud社区合并至 Spring Cloud Circuit Breaker,由此,Sentinel 加入了 Spring Cloud Circuit Breaker 俱乐部,成为 Spring Cloud 官方的主流推荐选择之一。这意味着,Spring Cloud 微服务的开发者在熔断降级领域有了更多的选择,可以更方便地利用 Sentinel 来保障微服务的稳定性。
一、什么是 Spring Cloud Circuit Breaker?
Spring Cloud Circuit Breaker是 Spring Cloud 官方的熔断器组件库,提供了一套统一的熔断器抽象API接口,允许开发者自由选择合适的熔断器实现。这个官方的熔断器组件库,截至目前,官方推荐的熔断器组件有:
- Hystrix
- Resilience4J
- Sentinel
- Spring Retry
当前,Spring Cloud Circuit Breaker 处于孵化阶段中,未来将合并到 Spring Cloud 主干版本正式发布。
Spring Cloud Circuit Breaker
https://github.com/spring-cloud-incubator/spring-cloud-circuitbreaker
二、Sentinel 发展历程
2012 年,Sentinel 诞生于阿里巴巴集团内部,主要功能为入口流量控制;
2013 - 2018 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景。Sentinel 也因此积累了大量的流量控制场景以及生产实践;
2018年7月,阿里巴巴宣布限流降级框架组件 Sentinel 正式开源,在此之前,Sentinel 作为阿里巴巴“大中台、小前台”架构中的基础模块,已经覆盖了阿里的所有核心场景,因此积累了大量的流量归整场景以及生产实践;
2018年9月,Sentinel 发布 v0.2.0版本,释放异步调用支持、热点参数限流等多个重要特性;
2018年10月,Sentinel 发布首个 GA 版本 v1.3.0,该版本包括 Sentinel 控制台功能的完善和一些 bug 修复,以及其它的产品改进;
2018年12月,Sentinel发布v1.4,加入了开发者关注的集群流控功能;
2019年1月,Sentinel发布v1.4,加入了开发者关注的集群流控功能;
2019年3月,Sentinel 发布1.5.0 ,引入 Reactive 支持;
2019年4月,Sentinel 贡献的 spring-cloud-circuitbreaker-sentinel 模块正式被Spring Cloud社区合并至 Spring Cloud Circuit Breaker,成为 Spring Cloud 官方的主流推荐选择之一。
2019年4月25日,Sentinel 发布 1.6.0 ,提供对 Spring Cloud Gateway、Zuul 等主流 API Gateway 的定制化支持。
三、Sentinel 的技术特点
Sentinel 的核心思想:根据对应资源配置的规则来为资源执行相应的流控/降级/系统保护策略。在 Sentinel 中资源定义和规则配置是分离的。用户先通过 Sentinel API 给对应的业务逻辑定义资源,然后可以在需要的时候动态配置规则。
Sentinel 的优势和特性:
- 轻量级,核心库无多余依赖,性能损耗小。
- 方便接入,开源生态广泛。Sentinel 对 Dubbo、Spring Cloud、Web Servlet、gRPC 等常用框架提供适配模块,只需引入相应依赖并简单配置即可快速接入;同时针对自定义的场景 Sentinel 还提供低侵入性的注解资源定义方式,方便自定义接入。
- 丰富的流量控制场景。Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,流控维度包括流控指标、流控效果(塑形)、调用关系、热点、集群等各种维度,针对系统维度也提供自适应的保护机制。
- 易用的控制台,提供实时监控、机器发现、规则管理等能力。
- 完善的扩展性设计,提供多样化的 SPI 接口,方便用户根据需求给 Sentinel 添加自定义的逻辑。
更多技术特点介绍:
高可用架构社区专访,点击这里
技术选型:Sentinel vs. Hystrix,点击这里
四、谁正在使用 Sentinel
目前已有不少企业用户在使用开源版本和云上版本的Sentinel,包括顺丰、vivo、每日优鲜、拼多多、易企秀、爱奇艺、融金所、VIPKID、喜马拉雅FM、百融金服等(按登记顺序排序),我们也在社区发起了“who is using Sentinel”[7]的issue,可以去这个页面了解各家企业的使用场景。
同时,我们提供了 Sentinel 的云上实现,并融入架构可视化、故障演练等功能,形成阿里云高可用服务 AHAS,目的是帮助更多开发者更方便的接入应用高可用能力。
阿里云高可用服务 AHAS:https://cn.aliyun.com/product/ahas)
五、Sentinel 未来的发展方向
未来,Sentinel 会继续在无规则容量保护的路上探索,提供更多自适应限流策略,更好地结合系统容量来进行流量控制。另外,Sentinel 也会支持更广泛的开源生态,包括 API Gateway、Service Mesh、多语言客户端等;同时也会抽象出标准的指标和监控接口,方便对接 Prometheus 等常用的监控系统。未来 Sentinel 会进一步强化集群流控的能力,加强对 Cloud Native 生态和 Service Mesh 的支持,在云原生相关领域更好地发挥稳定性保障的作用。
和 Sentinel 相关的开源项目
Sentinel:https://github.com/alibaba/Sentinel
Spring Cloud:https://spring.io/projects/spring-cloud
Spring Cloud Circuit Breaker :https://github.com/spring-cloud-incubator/spring-cloud-circuitbreaker
Dubbo:http://dubbo.apache.org/en-us/
Spring Cloud Alibaba:https://github.com/spring-cloud-incubator/spring-cloud-alibaba
Nacos:https://github.com/alibaba/nacos](https://github.com/alibaba/nacos](https://github.com/alibaba/na...://github.com/alibaba/nacos)
Sentinel Contributors
@sczyh30, @carpenterLee, @cdfive, @jasonjoo2010, @mjaow, @canglang1973, @talshalti, @kexianjun,@yikangfeng, @luoxn28, @all4you, @nicktan, @jz0630, @bitonly, @zhaixiaoxiang, @dqing0, @paulkennethkent, @shxz130, @zhousiliang163, @beston123, @lawrencewu, @blindpirate, @HaojunRen, @ATAXGT, @hantianwei, @MickMo, @yklove, @xburning, @yanlinly, @aalmiray, @Leishunyu, @wangjunwei87, @kangyl, @Arlmls, @YoungHu, @foreveryang321, @fangjian0423, @allencloud, @ro9er, @xcaspar, @shannon312, @waveng, @yfh0918, @refactormachine, @jialianglinjl, @kimmking, @nobodyiam, @guonanjun, @manzhizhen, @xg1907
本文作者:中间件小哥
本文为云栖社区原创内容,未经允许不得转载。