# 服务容错-Sentinel
# 导航
# 8-1雪崩效应
雪崩效应 || cascading failure ||级联失效 || 级联 故障
# 8-2常见容错方案
- 超时
- 限流
- 仓壁模式
- 断路器模式
# 超时
比如:为每个请求都设置一个超时时间,如果超过这个时间,那就将该线程释放,只要线程释放的够快,那么B服务 就不会被A服务拖死
# 限流
我就只能吃一碗饭,给我三碗我也吃一碗
我的QPS只能是500,给我1000,其他500拒绝
# 仓壁模式
不把鸡蛋放到一个篮子里
仓壁模式如何在代码里实现呢?
可以将某一个Controller,设置成一个独立的线程池,线程池有自己的拒绝策略,当队列满了,会拒绝请求任务
# 断路器
监控加开关
断路器模式应该是服务容错里面最高端的一种方案,就像家庭里的电闸,断路器就像是 电闸加开关,它会实时的监控电路的状态,当发现某段时间内,电流过大,它就任务电路短路了,然后就会跳闸,从而保护电路不会烧坏
代码里的断路器是:对某个API进行监控,在一定的时间内 的 错误率、错误次数...,当错误率或者错误次数达到一定的阈值,断路器就认为这个API所依赖的服务挂了,就跳闸,就不去调用 远程达到API了,如果后来所依赖的服务又恢复正常了,断路器会有一个半开状态,允许一次请求通过,如果这次请求正常,那断路器就关闭,否则就断路器打开