距离上一次2021年Go生态圈rpc框架benchmark的测试整整一年了。一年来,各个RPC框架也获得长足的进展,rpcx也在众多网友的支持下做了一些有益的优化和精简,所以是时候再做一次国内几个常用框架的性能比较了。
等等, 怎么使用 SetMemoryLimit?
Go 1.19中终于实现了SetMemoryLimit
的功能。Go的GC并不像Java那样提供了很多的参数可以调整,目前也就有GOGC
这么一个参数,所以能增加一个可以调整GC的参数确实让人兴奋。
使用BPF, 将Go网络程序的吞吐提升8倍
经典的bpf(classical Berkeley Packet Filter) 是非常好用的一个技术,在一些特殊的Go底层网络编程的场合,可以很好的提高性能。
Uber工程师对真实世界并发问题的研究
今天Uber工程师放出一篇论文(A Study of Real-World Data Races in Golang),作者是Uber的工程师Milind Chabbi和Murali Krishna Ramanathan,他们负责使用Go内建的data race detector在Uber内的落地,经过6个多月的研究分析,他们将data race detector成功落地,并基于对多个项目的分析,得出了一些有趣的结论。
经典并发问题: 大型理发店
二月二理发店太火了,家家都爆满,这次我们来到Hilzer的理发店,这是一家比较大的理发店。
经典并发问题: 理发店的故事
马上就二月二了,理发店就要忙活起来了,托尼、凯文、艾伦等老师的理发剪磨刀霍霍,把椅子擦亮,准备各位顾客的到来。
Sleeping barber problem是一个经典的goroutine交互和并发控制的问题,可以很好的用来演示多写多读的并发问题(multiple writers multiple readers)。
经典并发问题: 哲学家就餐问题
哲学家就餐问题是一个非常非常经典的问题,也是一个非常通用的研究并发编程中死锁现象的问题。