guard 是一个高性能熔断器+代理
RT。上周末发了 https://www.v2ex.com/t/424778#reply14
然后最近几天一直在迭代。从把锁丢掉,到重写 radix tree 和融合统计模块,到把 net/http
换成 fasthttp
,
在我的笔记本上,QPS 从 7k 左右到了 22k,对比 Nginx,性能从 Nginx 的 0.55 到 1.76 倍。改写的过程非常
累,因为写好的测试需要一遍一遍推翻重写。数据结构也需要仔细设计。hot-path 需要非常注意避免性能问题。
但是改写的过程也学到了很多东西,例如怎么去优化 Go 的性能,期间尝试了 prefork 模式,减少锁,缩小临界区,使用 CAS,调整 GOGC
参数 等等等等。
项目链接:
https://github.com/jiajunhuang/guard
核心模块的设计基本上已经稳定了,接下来要做的事情是:
time.Now
,使用自己维护的粗略时间以减少性能损耗欢迎大家关注和 star,以及提出意见,建议和 PR !
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.