加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

大局限Go项目险些必踏的几个大坑 - 实例分享

发布时间:2019-03-15 08:24:20 所属栏目:建站 来源:nilei
导读:2个月前开源了Dragonboat这个Go实现的高机能多组Raft共鸣库,它的一大卖点是其高吞吐机能,在行使内存内的状态机的场景下,能在三组单插处事器上到达万万每秒的吞吐机能。作为小我私人用Go写的第一个较大的应用库,Dragonboat的开拓进程可谓踏坑无数,慢慢才具

Goroutine的最大卖点是量大价廉行使利便,一个措施里轻松开启万把个Goroutine根基都不消思量其自己的价钱......统统好像很柔美,直到体系内范例浩瀚的Goroutine开始走漏。大概是由于Goroutine的特征,它在Go措施里的行使的频度密度远超线程在Java/C++措施中环境,同时用户思想中Goroutine简朴易用价钱低的观念根深蒂固、与生俱来,无形中更轻易放松对资源打点的思量,因此更轻易产生Goroutine走漏环境。Dragonboat的履历是Goroutine走漏的概率不比内存走漏少。

Dragonboat从实现之初就开始行使Goroutine走漏搜查,详细的走漏搜查的实现是来自CockroachDB的一小段代码。结果方面,这个小器材发明过Dragonboat及其依靠的第三方库里多个goroutine走漏题目,而行使上,在各内建的测试中,只需一行便能完成挪用获得功效,绝对是费效比美满。

实现上它也出格简朴,就是前后两次别离抓stacktrace,理会出历程里全部的Goroutine ID并比拟是否测试运行竣事后发生了多余的滞留在体系中的Goroutine。官方固然不建议对Goroutine ID做任何操纵,但此类仅在测试中仅针对Goroutine走漏的非凡场景的行使,应该不拘泥于该束缚,这就犹如官方不怎么保举用sync/atomic一个原理。

总结

基于Dragonboat的几个具编制子,本文分享了几个常见的Go机能与行使题目。总结来说:

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读