一直想引入 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
希望有用 :)
1
TangMonk 2017-07-29 20:11:08 +08:00 via Android
熔断机制是什么,过载保护吗
|
2
sophos OP @TangMonk 针对多个外部接口如第三方 api 或 redis 等出现异常的场景,可以考虑引入熔断机制,避免因异常导致大量请求拥堵,甚至系统雪崩的问题
|
3
cheetah 2017-07-29 23:26:28 +08:00
看来做到一定程度都是需要 Circuit Breaker 的呀
|
5
sophos OP README 更新~
|