之前说到过微服务容错处理,可以使用 断路器
使用断路器的原因是:
当下游的服务因为过载或故障,无法提供服务,我们需要及时的让上游服务知悉,且暂时 熔断 调用方和提供方的调用链,这是为了避免服务雪崩现象的发生
go 里面可以使用什么方式来做断路器 呢?
hystrix-go
go 中有一个项目实现了 这个断路器的功能:
https://github.com/afex/hystrix-go
Hystrix 能够在服务提供者出现故障时,隔离调用者和提供者,防止服务级联失败
并且 Hystrix 还提供失败回滚的逻辑,是系统快速从异常中恢复
为啥要用 Hystrix 来作为断路器?
- Hystrix 自身完美的是实现了断路器模式
- 自身可以提供信号量和线程隔离的方式以保护服务调用者的线程资源
- 对延迟和失败提供了强大的容错能力,为系统提供保护和控制
图解 Hystrix 运行流程
如下是 golang 微服务容错处理是如何做的? 提到的断路器的 三种状态