雪崩,隔离,熔断,限流,降级
雪崩:
如果服务A有两个线程调用服务B
整个时候服务B宕机,服务A的两百个线程会一直等待着调用超时,这个时候如果服务C调用
服务A就没有空闲线程可以用,一直等待,很可能会出现超时。
隔离:
这个时候只需要将服务A的两百个线程中的一部分,比如20个线程隔离处理来,专门处理调用服务B。
如果这个时候服务B 挂了,那么服务A最多会阻塞20个线程,不影响服务C调用服务A
熔断:
这个时候如果这20个服务请求超时,这个时候触发熔断机制,那么服务A的20线程就会在短时间
内不会调用服务B,会认为服务B 挂了,这个时候只需要返回异常
降级:
如果服务B 挂了,那么服务A调用的时候肯定会触发熔断机制,就不会给服务B 发送消息,这个时候先把服务保存在自己本地,然后给客户返回成功,等熔断时间过了之后进行重试
限流:
通过之前的压测如果服务A 每秒可以承受200个服务,而服务B 每秒只能承受100个服务,这个是就有对 服务A
进行限流,只限制到100个服务
项目中具体的实现方案可以使用 Sentinel 来进行处理https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D