熔断机制是应对雪崩效应的一种微服务链路保护机制。我们在各种场景下会接触到熔断两个字。高压电路中,如果某个地方的电压过高,熔断器就会熔断,对电路进行保护。股票交易中,如果股票指数过高,也会采用熔断机制,暂停股票的交易。同样,在微服务中,熔断机制也是起着类似的作用。当扇出链路的某个微服务不可用或者响应时间太长时,熔断该节点也是起到着类似的作用。当扇出链路的某个微服务不可用或者响应时间太长时,熔断该节点微服务的调用,进行服务降级,快速返回错误的响应信息。当检测到该节点微服务响应正常后,恢复该链路。
注意:
1)服务熔断重点在“断”,切断对下游服务的调用
2)服务熔断和服务降级往往是一起使用的,Hystrix就是这样

服务降级

俗话讲就是整体资源不够用了,先将一些不关紧的服务停掉(调用我的时候,给我返回一个预留的值,也叫做兜底数据),待度过难关高峰过去,再把那些服务打开。
服务降级一般是从整体考虑,就是当某个服务熔断之后,服务器将不再被调用,此刻客户端可以自己准备一个本地fallback回调,返回一个缺省值,这样做,虽然服务水平下降,但好歹可用,比直接挂掉要强。

服务限流

服务降级是当服务出现问题或者响应到核心流程的性能时,暂时将服务屏蔽掉,待高峰或者问题解决后再打开;但是有些场景并不能用服务降级来解决,比如秒杀业务这样的核心功能,这个时候可以结合服务限流来限制这些场景的并发/请求量

限流措施

限制总并发数(比如数据库连接数、线程池)
限制瞬时并发数(如nginx限制瞬时并发连接数)
限制时间内的平均速率(如Guava的RateLimiter、nginx的limit_req模块,限制每秒的平均速率)
限制远程接口的调用速率、限制MQ的消费速率等