基于 gobreaker 与 prometheus 实现类似 hystrix 的熔断机制

2017-07-29 17:35:05 +08:00
 sophos

一直想引入 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

希望有用 :)

1642 次点击
所在节点    Go 编程语言
5 条回复
TangMonk
2017-07-29 20:11:08 +08:00
熔断机制是什么,过载保护吗
sophos
2017-07-29 23:23:00 +08:00
@TangMonk 针对多个外部接口如第三方 api 或 redis 等出现异常的场景,可以考虑引入熔断机制,避免因异常导致大量请求拥堵,甚至系统雪崩的问题
cheetah
2017-07-29 23:26:28 +08:00
看来做到一定程度都是需要 Circuit Breaker 的呀
sophos
2017-07-30 09:46:58 +08:00
@cheetah 嗯,高并发系统必备 :-)
sophos
2017-08-02 11:13:04 +08:00
README 更新~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/378867

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX