Disruptor-架构思维的转变

本人新书出版,对技术感兴趣的朋友请关注:

之间用4个队列来连接,从P1流经到C3,要经过这4个队列。

而如果用Disruptor的话,将只需要一个RingBuffer,3个consumer都消费这同1个RingBuffer,如下图所示:

如上图所示,Receiver接收请求(这里的Receiver你可以理解为一个 络服务器),BLP处理请求,Publisher把处理结果交给下游。

在这里,BLP是纯粹在内存中操作,那它挂了之后,状态怎么恢复呢里有3个关键点:
(1)在BLP处理每一个Event之前,该Event先被Journaler日志化
(2)BLP本身是个状态机。即使挂了,可以重放所有日志,恢复状态。另外,为了提高恢复速度,BLP的状态可以定期做Snapshot。
(3)为了提高HA,可以准备多个BLP并行,1个挂了,切换到其它的。所以有一个Replicator组件,用于复制日志。

在这里,Receiver、BLP、Journaler、Replicator通过一个RingBuffer进行交互,如下图所示:

这里写图片描述

在这里有1个Producer,4个Consumer,前3个可以并行,最后一个BLP依赖前3个。

Un-marshaller在这里做一些Event的解析工作。

这种架构还有一个巨大优点就是:可测性。你可以把日志拷贝到测试环境,“重放“整个过程来测试BLP。

总结

通过上面的分析,我们会发现Disruptor并不是我们通常意义上的一个简单的RingBuffer。

基于它LMAX设计了一个新的架构,这种架构不仅速度够快,而且具有持久性、HA、可测性等诸多优点。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年10月20日
下一篇 2016年10月20日

相关推荐