前提:我们介绍三种技术⼿段应对微服务中的雪崩效应,这三种⼿段都是从系统可
⽤性、可靠性⻆度出发,尽量防⽌系统整体缓慢甚⾄瘫痪。
服务熔断
熔断机制是应对雪崩效应的⼀种微服务链路保护机制。我们在各种场景下都会接触
到熔断这两个字。⾼压电路中,如果某个地⽅的电压过⾼,熔断器就会熔断,对电
路进⾏保护。股票交易中,如果股票指数过⾼,也会采⽤熔断机制,暂停股票的交
易。同样,在微服务架构中,熔断机制也是起着类似的作⽤。当扇出链路的某个微
服务不可⽤或者响应时间太⻓时,熔断该节点微服务的调⽤,进⾏服务的降级,快
速返回错误的响应信息。当检测到该节点微服务调⽤响应正常后,恢复调⽤链路。
注意:
1)服务熔断重点在“断”,切断对下游服务的调⽤
2)服务熔断和服务降级往往是⼀起使⽤的,Hystrix就是这样。
服务降级
通俗讲就是整体资源不够⽤了,先将⼀些不关紧的服务停掉(调⽤我的时候,给你
返回⼀个预留的值,也叫做兜底数据),待渡过难关⾼峰过去,再把那些服务打
开。
服务降级⼀般是从整体考虑,就是当某个服务熔断之后,服务器将不再被调⽤,此
刻客户端可以⾃⼰准备⼀个本地的fallback回调,返回⼀个缺省值,这样做,虽然服
务⽔平下降,但好⽍可⽤,⽐直接挂掉要强。
服务限流
服务降级是当服务出问题或者影响到核⼼流程的性能时,暂时将服务屏蔽掉,待⾼
峰或者问题解决后再打开;但是有些场景并不能⽤服务降级来解决,⽐如秒杀业务
这样的核⼼功能,这个时候可以结合服务限流来限制这些场景的并发/请求量
限流措施也很多,⽐如
- 限制总并发数(⽐如数据库连接池、线程池)
- 限制远程接⼝调⽤速率、限制MQ的消费速率等
- 限制瞬时并发数(如nginx限制瞬时并发连接数)
- 限制时间窗⼝内的平均速率(如Guava的RateLimiter、nginx的limit_req模块,
限制每秒的平均速率)