LMAX架构简介

 

Reference URL:

http://martinfowler.com/articles/lmax.html

 

该架构主要基于: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降低业务的复杂性;二是通过技术探索创新,降低技术平台的复杂性,让程序员更多精力投入业务问题解决上。
时间: 2024-11-01 22:18:24

LMAX架构简介的相关文章

对LMAX架构以及Event Sourcing模式的一些新思考和问题的记录

最近又学习了一下LMAX架构,让我对该架构以及event sourcing模式又有了很多新的认识和疑问. 注:如果不知道什么是lmax架构和event sourcing模式的看官可以自己先去查查资料: LMAX可以看看martin写的一篇文章:http://martinfowler.com/articles/lmax.html Event Sourcing的资料比较多,随便google一下即可. 当然,我的博客里也有大量关于这两个方面的笔记,有兴趣的可以看看. 下面是我的一些最新的想法. LMA

LMAX架构

原文地址:http://martinfowler.com/articles/lmax.html 作者:Martin Fowler 译文地址:http://www.jdon.com/42452 译者:banq LMAX是一种新型零售金融交易平台,它能够以很低的延迟(latency)产生大量交易(吞吐量). 这个系统是建立在JVM平台上,核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单. 业务逻辑处理器完全是运行在内存中(in-memory),使用事件源驱动方式(event sourc

JAVA NIO学习笔记1 - 架构简介

最近项目中遇到不少NIO相关知识,之前对这块接触得较少,算是我的一个盲区,打算花点时间学习,简单做一点个人学习总结. 简介 NIO(New IO)是JDK1.4以后推出的全新IO API,相比传统IO方式NIO采用了全新的底层I/O模型.传统IO的设计概念是面向流,而NIO则是面向块.简单点说,传统I/O是基于字节的,所有I/O都被视为单个字节的移动,使用时需先把对象转换为字节码:而NIO是面向块的,以块为单位处理数据,每个操作会生成或消费一个块的数据.从设计理念来看,NIO的操作粒度要比传统I

MySQL的技术架构简介

金璞:各位网友大家好!我是赛迪网技术应用编辑金璞,今天本来要来的David Axmark先生和周总现在正在路上,预计可能和迟一点跟网友们见面现在我们请陈慧女士做一个自我介绍. 陈慧:我是万里开源的系统工程师陈慧,很高兴作客赛迪网. 金璞:因为David Axmark和周总还没有来,前天的时候MySQL在中国研发中心成立的时候,我当时听到您做了一个演讲,也讲了MySQL技术上的架构包括以后的发展方向之类的.今天先跟网友们讲一讲吧. 陈慧:我们万里开源是MySQL在中国唯一的代理,我们是基于Linu

python 架构简介(转)

前言:   开发语言python  越来越火 ,作为开发比较火的语言,python 对网页等的支持也很好,当你想用python来写网页的时候你就要选择框架了.到底要选择呢什么样子的框架,最适合你的项目能力. 介绍:Django: Python Web应用开发框架Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全功能的管理后台.

ebs系统架构简介1——三层结构上篇

转载自:http://www.itpub.net/thread-1409361-1-1.html <Oracle Applications DBA 基础>3- 4 系统架构及基本系统管理知识 1. 系统架构介绍 ============== Oracle 的applications 主要包括一个文件系统,一个数据库: 而文件系统包括:forms(用来交互和更新数据).reports(用来显示标准的输出数据).一致性程序(提供了大容量.非交互的数据更新操作).程序和sql脚本(管理这个系统).h

Renascence架构简介

Renascence架构 Renascence架构是 A-GP-B 式的桥梁架构,它要求下层库不直接对外提供接口,而是往GP库注册函数,上层库用GP公式间接调用下层库的代码. GP库位于应用与lib库之间,作为应用调用lib库的桥梁而存在,它本身不依赖任何基础库. 上层调用 通过引入训练这一过程,应用跨平台的问题有了最好的解决方案,即在安装过程中,应用提供一个模板供平台训练,得到适合的实际运行的程序,然后应用在运行时用该程序就可以. 应用本身无须考虑平台问题,在任一平台下功能自动兼容.性能自动达

ebs系统架构简介3

整理自:http://www.itpub.net/thread-1409361-1-1.html ==================================================================4: 基本系统管理知识 结合上面提到的系统架构的基本知识,这里总结R12系统的基本管理知识,就是如何做我们最关心的最基本的start/stop/status . 1. database 方面: 如上述,Database Tier 有关的 Server Process S

KbmMW 服务器架构简介

     kbmmw 由于文档比较少,很多同学开始用时很难理解.一直准备写一个关于kbmmw 架构的东西. 这几天与红鱼儿(blog)  研究服务器线程时,整理了一下,大概画了一下kbmmw (版本4.5)服务器的架构图,这里未涉及消息传输. 由于全部是通过阅读源码研究的,鉴于本人水平有限,不一定完全正确.欢迎指正. 根据上图,我们要做一个kbmmw 服务器端程序,需要下列步骤: 1.放置kbmmw server; 2. 设置TCP/IP 通讯层, 一般是TkbmMWTCPIPIndyServe