3.2.5 服务保护

Spring Cloud Circuit Breaker(Spring Cloud服务保护)提供各种断路器的抽象服务。目前支持的断路器有Netflix Hystrix、Resilience4J、Sentinel、SpringRetry。

图3-7所示为服务保护示例,当某个Dependency I服务不可用时,可以访问对应的Fallback方法,这样不至于因为某个服务不可用而造成后续大量调用链阻塞引起服务雪崩。

图3-7 服务保护示例

常见熔断阈值设置方式如下所示。

1)访问超时:当访问某个服务超时时触发熔断。

2)错误数量:当访问某个服务错误次数达到阈值时熔断。

3)拒绝数量:当访问某个服务被拒绝次数达到阈值时熔断。

常见的熔断隔离措施如下所示。

1)线程池隔离:使用新线程完成每次调用,有多少依赖则开多少线程,异步且互不干扰。

2)信号量隔离:每次调用时发放新的许可证,较线程轻量级,但总的许可证受限,常与网关一起使用。