java Disruptor工作原理,谁能用一个比喻形容下? - 知乎
首先disruptor是特别适用于对时间高度敏感的多线程应用。如果app对时间不敏感完全可以不用disruptor 而只用array blocking queue. 再如果废了好大劲挣回来30毫秒,结果被一个数据库连接耗掉1秒,也没必要用。所以搞清楚适用的环境很重要。
其次这个技术其实很酷的。最酷的地方不是ring buffer 而是想到直接用CPU指令做CAS. Ring buffer是做了工程级别的优化,对于CPU branch prediction更友好。也就是我们说的cache friendly。其他的别人没提到的好处是可以replay ,这样对daily regression test很方便。
实际适用的例子随便举两个。 一个是实时的Reuters 市场数据接收,redistribute 到其他进程或者线程。另一个是如果algo model 决定place order or pull order from the market,就需要以最快的方式给市场发指令。在一个是比较复杂一点:多个ring buffer穿起来形成一个小型producer consumer 工作流,这个用的人应该不算多我就不白虎了。Read full article from java Disruptor工作原理,谁能用一个比喻形容下? - 知乎
No comments:
Post a Comment