golang hystrix 熔断器
熔断器是为了保护被调方健康的一种方式。通过错误率,超时,并发等机制来使第三方处于一个健康且提供性能最佳的方式。hystrix 是比较通用的熔断器库。以下为介绍该熔断器源码以及处理思想。
核心思想
先看看需要配置什么参数,都是从参数玩出的花。
- Timeout: 执行command的超时时间。默认时间是1000毫秒
- MaxConcurrentRequests:command的最大并发量 默认值是10
- SleepWindow:当熔断器被打开后,SleepWindow的时间就是控制过多久后去尝试服务是否可用了。默认值是5000毫秒
- RequestVolumeThreshold: 一个统计窗口10秒内请求数量。达到这个请求数量后才去判断是否要开启熔断。默认值是20
- ErrorPercentThreshold:错误百分比,请求数量大于等于RequestVolumeThreshold并且错误率到达这个百分比后就会启动熔断 默认值是50
当然如果不配置他们,会使用默认值
通过配置参数我们就可以了解到他大致提供了这些功能。
功能模块
配置模块
通过以下代码注册name 为mycommand 的熔断器配置。
hystrix.ConfigureCommand("mycommand", hystrix.CommandConfig{
Timeout: int(time.Second * 3),
MaxConcurrentRequests: 100,
SleepWindow: