LMAX Disruptor 架构

评分 0, 满分 5 星(211 次阅读)
Loading...
添加评论
Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。业务逻辑处理器的核心是Disruptor。
 
LMAX主要面向高速交易平台。Disruptor是采用JAVA开发的并行编程框架,核心为RingBuffer数据结构。通过对于常用的 RingBuffer数据结构实现的分析,lmax团队重新设计了RingBuffer的实现逻辑,具体参见网站:http://code.google.com/p/disruptor/[www.pms.cc 来源]
和论文:http://disruptor.googlecode.com/files/Disruptor-1.0.pdf。测试效率高于JAVA并发框架ArrayBlockingQueue。
国内解道网站http://www.jdon.com/42466上面也有相应的介绍(他们将在自己的项目中采用了Disruptor)。
 
该架构主要基于:Disruptor + In Memory DDD + Event Sourcing
  1. 通过高并发框架(Disruptor)实现用户事件的输入和Domain Event的输出;
  2. 一个常驻内存的Business Logic Processor(DDD领域模型),它负责在纯内存中处理业务逻辑;关键点:首先确保用户输入事件被持久化到数据库,并定时创建快照,然后在内存中响应事件更改业务对象的状态;因为一切都是在内存中处理,所以没有IO,也不需要数据库事务,非常快;
  3. 机器down了怎么办?因为我们首先确保了业务对象的任何状态改变之前先持久化用户输入事件,所以在down机的时候通过事件回溯重新得到最新的业务对象。因为有了快照的保存,所以重建对象也非常快;
 
该架构的主要观点:
  1. 肯定了In-Memory内存模式 + 异步输入与输出事件(Disruptor) + Event Sourcing 架构,LMAX实践也验证了这个架构。这个架构降低复杂性。
  2. LMAX的核心是新型并发框架Disruptor,其核心是根据现代CPU硬件缓存特点发明不同于通用LinkedList或Queue的新型数据结构RingBuffer。
  3. 号称并发未来的Actor模型被LMAX团队验证是有瓶颈的。
  4. 提出新的并发模型,每个CPU一个线程,多个CPU多个线程并发模式,摒弃了锁模式。
  5. ORM等Hibernate没有完全解决OO的目标,关系数据库的事务也不是最后救命的稻草。LMAX用自己的事件记录的方式实现事务,这也不同于所谓内存事务STM。
  6. 架构师要分离关注,一是通过DDD降低业务的复杂性;二是通过技术探索创新,降低技术平台的复杂性,让程序员更多精力投入业务问题解决上。

[www.pms.cc 来源]

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: LMAX Disruptor 架构
 
评分 4.3, 满分 5 星
Loading...