Golang Go语言重写了熔断器,然后开源了,大家一起来完善吧

发布于 1周前 作者 zlyuanteng 来自 Go语言

项目地址: https://github.com/jiajunhuang/guard

目前完成了基本的功能,包括:

  • 代理
  • 统计
  • 熔断
  • 负载均衡

TODO 里还有很多功能完成,现有的代码覆盖率也可以再提升一些,希望大家一起来完善!

目前的性能大约在 Nginx 的一半左右。目前我正在努力调优 :)


Golang Go语言重写了熔断器,然后开源了,大家一起来完善吧

更多关于Golang Go语言重写了熔断器,然后开源了,大家一起来完善吧的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

15 回复

已经 star

更多关于Golang Go语言重写了熔断器,然后开源了,大家一起来完善吧的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


😋

欢迎大家一起完善💪

我看 TODO 里面负载均衡算法都还没勾选是还没做好还是该更新下 README 了?

目前还只实现了 weighted round robin。random 和普通的 round robin 还没做呢,昨天忙着分析瓶颈去了。如果有兴趣的话,可以提个 PR :)

已 star :-)

不过用 go 做 proxy 的话,性能还是不够啊。。。而且稳定性有待锤炼
我之前写了个熔断器的库,感觉作为一个中间件用在业务逻辑入口还是蛮好的
类似 Hystrix,基于 prometheus 提供监控面板

https://github.com/hnlq715/gobreak

是的。其实目前性能瓶颈在于 net.http 里自带的 proxy。创建了太多的对象。其他的地方性能虽然还可以优化,但是对整体提升不是特别大。

另外关于稳定性方面,从测试来看,Go 的 proxy 稳定性似乎好于 Nginx 哟

这个结果只能说明压测场景有点问题吧 :-)

存在这种可能性。因为没有足够强大的机器来开多虚拟机测试。只在自己的笔记本上做了简单地测试。

另外 README 已经更新了。刚才把随机和朴素的轮询实现了

要性能得用 C 写吧?虽然我不熟悉 go 语言

嗯,Go 带来了开发效率,自然就是牺牲了一部分运行效率。不过我认为仅仅达到 Nginx 的一半是不够的。
还是有很多地方可以优化的。

Go 一个周末可以搞定熔断的大部分功能,用 C 从头来不知道要多久呢

手一抖,贡献了第一颗 star,快夸我

另外我个人的一个小观点,任何成熟的项目都是建立在足够填坑时间的基础之上,基本和技术和语言无关,希望你能坚持至少优化一年以上

是的,确实需要很多时间。目前的想法是优化到 Nginx 的 80%左右。此后的话,看项目情况,要是有人用的话,肯定会继续搞下去的

针对您提到的“Golang Go语言重写了熔断器,然后开源了”的帖子,作为IT营GO语言方面的专家,我认为这是一个非常有价值的贡献。以下是我的一些专业回复和建议:

  1. 开源精神:开源项目能够集合众多开发者的智慧和力量,共同推动技术的进步。您选择将重写的熔断器开源,无疑会吸引更多志同道合的开发者参与进来,共同完善和优化这一工具。
  2. 熔断器的重要性:熔断器是微服务架构中不可或缺的一部分,它能够在下游服务出现异常时,及时切断请求,防止雪崩效应的发生。因此,一个稳定、高效的熔断器对于保障系统的稳定性和可靠性至关重要。
  3. 参与和完善:作为开源项目,我们鼓励更多的开发者参与进来,共同完善熔断器的功能和性能。您可以考虑在项目的README文件中列出一些待解决的问题或者改进点,引导开发者有针对性地参与贡献。
  4. 持续集成和测试:为了确保熔断器的稳定性和可靠性,建议引入持续集成和测试机制。通过自动化测试,可以及时发现并修复潜在的问题,提高代码的质量和可靠性。

总之,您的开源行为非常值得赞赏,期待这一项目能够吸引更多的开发者参与进来,共同打造一个优秀的熔断器工具。

回到顶部