一直想引入 hystrix 实现熔断机制,无奈 hystrix 稍微过重,且无法对接 prometheus,而我们目前的监控系统技术栈用到了 prometheus。
于是尝试基于 gobreaker 与 prometheus 实现了类似 hystrix 的熔断机制。
譬如我们调用 github 的 api,可以这样:
// func Do(name string, run runFunc, fall fallbackFunc) error
err := gobreak.Do("github", func() error {
// call github api
}, nil)
同时,通过 prometheus 暴露出的 metrics 接口,可以实现相关指标的监控,从而画出类似 hystrix-dashboard 的监控图,并加上告警。
链接如下: https://github.com/hnlq715/gobreak
希望有用 :)