作者:未完成交响曲,资深Java工程师!目前在某一线互联网公司任职,架构师社区合伙人!
一、简介
1. Sentinel 是什么?
Sentinel是去年7月由阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件。
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
(引自官方文档)
2. 主要优势和特性
轻量级,核心库无多余依赖,性能损耗小。
方便接入,开源生态广泛。
丰富的流量控制场景。
易用的控制台,提供实时监控、机器发现、规则管理等能力。
完善的扩展性设计,提供多样化的 SPI 接口,方便用户根据需求给 Sentinel 添加自定义的逻辑。
3. 与Hystrix对比
之前大家熟知的容错组件Hystrix,在去年宣布停止开发,因此许多的开发人员在选型时将目光投向了Sentienl。这里将它们做一下对比:
![](https://i-blog.csdnimg.cn/blog_migrate/3cbb5ab525d4f5fcc0b67e0fec81e31b.png)
Resource
在Sentinel中,Resource-资源 是最重要的一个概念,可以是代码块、方法、接口等任何需要保护的东西。在编码的时候,只需要考虑这个代码是否需要保护,如果需要保护,就将之定义为一个资源,然后定义规则就可以了,剩下的通通交给Sentinel来处理了。
Slot
Sentinel的工作流程就是围绕着一个个插槽所组成的插槽链来展开的。每个插槽都有自己的功能,通过一定的编排顺序,来达到最终的限流降级的目的。默认的各个插槽之间的顺序是固定的,因为有的插槽需要依赖其他的插槽计算出来的结果才能进行工作。
Context
Context 代表调用链路上下文,