介绍
- circuit metrichystrix是Netflix的一个牛逼项目
- Hystrix是一个延迟和容错库,旨在隔离对远程系统、服务和第三方库的访问点,停止级联故障,并在故障不可避免的复杂分布式系统中实现恢复能力。
- 定义的回退和自适应健康监控的Hystrix模式对任何分布式系统都是很好的。即便Go例程和通道是很好的并发原语,但也不能直接帮助我们的应用程序在失败时保持可用。
- hystrix-go 的目标是允许go程序员使用基于Java的hystrix库的类似执行语义轻松构建应用程序。
使用说明
- 以命令模式执行 Hystrix 代码
- 定义依赖外部系统的业务程序逻辑(即运行外部业务逻辑的入口),将功能传递给hystrix-go
- 系统正常时,就只会运行这个业务程序逻辑
hystrix.Go("my_command", func() error {
// talk to other services
return nil
}, nil)
- 定义回退行为
- 如果你想要你的外部业务代码在服务中断期间运行,那你就把第二个函数,也就是运行外部业务逻辑的入口,传给hystrix-go
- 这段逻辑允许应用程序优雅的处理不可用的外部服务
- 当您的代码返回错误时,或者根据各种运行状况检查无法完成时,就会触发此事件
hystrix.Go("my_command", func()