sentinel(1)
Sentinel简介
流量控制简介
拿旅游景点举个示例,每个旅游景点通常都会有最大的接待量,不可能无限制的放游客进入,比如故宫每天只卖八万张票,超过八万的游客,无法买票进入,因为如果超过八万人,景点的工作人员可能就忙不过来,过于拥挤的景点也会影响游客的体验和心情,并且还会有安全隐患;只卖N张票,这就是一种限流的手段。
流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。在网络传输时,任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。
熔断降级简介
在调用系统的时候,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积,如下图:
而熔断降级就可以解决这个问题,所谓的熔断降级就是当检测到调用链路中某个资源出现不稳定的表现,例如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联故障。
流量控制&熔断降级实现方案
Hystrix
主页地址:https://github.com/Netflix/Hystrix/
Hystrix源自Netflix API团队于2011年开始的弹性工程工作。2012年,Hystrix不断发展和成熟,Netflix内的许多团队都采用了它。如今,每天在Netflix上通过Hystrix执行数以千亿计的线程隔离和数以千计的信号隔离调用。这大大提高了正常运行时间和弹性。
Resilience4j
主页地址:https://github.com/resilience4j/resilience4j
Resilience4j是受Netflix Hystrix启发的轻量级容错库,但专为Java 8和函数式编程而设计。轻巧,因为该库仅使用Vavr,而Vavr没有任何其他外部库依赖项。相比之下,Netflix Hystrix对Archaius具有编译依赖性,而Archaius具有更多外部库依赖性。
Sentinel
主页地址:https://github.com/alibaba/Sentinel
Sentinel 是阿里巴巴出品的面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护等多个维度来保障微服务的稳定性。