名词解释
限流
限流的目标是主动防御,就像一个人喝酒知道自己酒量是2杯白酒,喝到2杯时,就拒绝再喝了。对于服务接口提供者来讲,它自己有自己接口压力负载值,当达到这个阈值时,触发限制请求机制,这就是限流,简单而言就是限制接口访问最大流量峰值。
隔离
不同的服务分配独立的、一定的资源,当自己的资源用完,直接返回失败而不是占用别人的资源,从而达到服务隔离的目的。可以使用线程隔离或信号隔离。
熔断
听说过股市的熔断吗?经历过。熔断得有一个触发条件,比如股票在5分钟内快速下跌10%。对于接口来说,接口的熔断触发条件是在某个时间片内失败达到一定指标,比如5分钟内接口调用错误次数比例达到50%以上,触发熔断,熔断后,服务将进行降级。
降级
服务降级可以理解为服务保底策略,服务失败或异常后,返回指定的默认信息。
更加简单的理解,如下图所示:
解决方案
限流:google的guava; 主要利用令牌桶或漏桶算法,实现并发限制。
可以参考之前一篇博客 服务限流 - Andy's Blog
限流、隔离、熔断、降级:Hystrix提供全套解决方案,目前停止开发,属于维护阶段;阿里开源的Sentinel,侧重在多样化的流量控制、熔断降级、系统负载保护、实时监控和控制台;resilience4j。
几种解决方案的区别。