Reference URL:
http://martinfowler.com/articles/lmax.html
該架構主要基於:Disruptor + In Memory DDD + Event Sourcing
- 通過高並發框架(Disruptor)實現用戶事件的輸入和Domain Event的輸出;
- 一個常駐內存的Business Logic Processor(DDD領域模型),它負責在純內存中處理業務邏輯;關鍵點:首先確保用戶輸入事件被持久化到數據庫,並定時創建快照,然后在內存中響應事件更改業務對象的狀態;因為一切都是在內存中處理,所以沒有IO,也不需要數據庫事務,非常快;
- 機器down了怎么辦?因為我們首先確保了業務對象的任何狀態改變之前先持久化用戶輸入事件,所以在down機的時候通過事件回溯重新得到最新的業務對象。因為有了快照的保存,所以重建對象也非常快;
該架構的主要觀點:
- 肯定了In-Memory內存模式 + 異步輸入與輸出事件(Disruptor) + Event Sourcing 架構,LMAX實踐也驗證了這個架構。這個架構降低復雜性。
- LMAX的核心是新型並發框架Disruptor,其核心是根據現代CPU硬件緩存特點發明不同於通用LinkedList或Queue的新型數據結構RingBuffer。
- 號稱並發未來的Actor模型被LMAX團隊驗證是有瓶頸的。
- 提出新的並發模型,每個CPU一個線程,多個CPU多個線程並發模式,摒棄了鎖模式。
- ORM等Hibernate沒有完全解決OO的目標,關系數據庫的事務也不是最后救命的稻草。LMAX用自己的事件記錄的方式實現事務,這也不同於所謂內存事務STM。
- 架構師要分離關注,一是通過DDD降低業務的復雜性;二是通過技術探索創新,降低技術平台的復雜性,讓程序員更多精力投入業務問題解決上。