jraft

jraft源码阅读8一异步高性能

2019-04-13  本文已影响0人  黄云斌huangyunbin

jraft为了高性能,全流程都使用了Disruptor来做异步批量的处理

1 异步

从入口的NodeImpl类的apply方法就可以看到使用了异步了:


image.png

后面的所有的流程都是类似的情况了


image.png

写日志是异步的


image.png

发送日志给follower也是异步的


image.png

半数以上follower同意后应用到状态机也是异步的


image.png
2 批量

Disruptor的onEvent处理的参数有个endOfBatch,这个其实也很重要,这个给了我们批量处理的能力,可以连续处理一批。


image.png

批量消费减少了事件的触发,减少了流程的切换,提高了性能。

其他异步的地方基本都用到了批量,这里就不赘述了。

上一篇下一篇

猜你喜欢

热点阅读