springcloud学习(四)服务限流、隔离、熔断、降级

名词解释


限流

限流的目标是主动防御,就像一个人喝酒知道自己酒量是2杯白酒,喝到2杯时,就拒绝再喝了。对于服务接口提供者来讲,它自己有自己接口压力负载值,当达到这个阈值时,触发限制请求机制,这就是限流,简单而言就是限制接口访问最大流量峰值。

隔离

不同的服务分配独立的、一定的资源,当自己的资源用完,直接返回失败而不是占用别人的资源,从而达到服务隔离的目的。可以使用线程隔离或信号隔离。

熔断

听说过股市的熔断吗?经历过。熔断得有一个触发条件,比如股票在5分钟内快速下跌10%。对于接口来说,接口的熔断触发条件是在某个时间片内失败达到一定指标,比如5分钟内接口调用错误次数比例达到50%以上,触发熔断,熔断后,服务将进行降级。

降级

服务降级可以理解为服务保底策略,服务失败或异常后,返回指定的默认信息。

更加简单的理解,如下图所示:

springcloud学习(四)服务限流、隔离、熔断、降级_第1张图片

解决方案


限流:google的guava; 主要利用令牌桶或漏桶算法,实现并发限制。

可以参考之前一篇博客    服务限流 - Andy's Blog

限流、隔离、熔断、降级:Hystrix提供全套解决方案,目前停止开发,属于维护阶段;阿里开源的Sentinel,侧重在多样化的流量控制、熔断降级、系统负载保护、实时监控和控制台;resilience4j。

几种解决方案的区别。

springcloud学习(四)服务限流、隔离、熔断、降级_第2张图片

你可能感兴趣的:(微服务实战系列,spring,cloud,spring,java)