使用Akka實現Reactive DDD

banq發表於2014-04-16


這是一個Akka實現reactive DDD開源專案,點按標題進入,相比傳統架構, DDD模型能夠劃分複雜的業務領域為可管理的部件,從而考慮到可擴充套件性和一致性的要求。這意味著,它帶來的有界上下文,事務邊界和基於事件通訊的DDD和CQRS等概念能夠極大地推動構建可擴充套件的軟體。

目前大部分系統都是基於關係型資料庫和全域性事務構建的,具體是指服務(banq注:EJB或Spring編制的服務),這種非常有限的體系結構其實不適合用於構建可擴充套件的軟體。

由全域性事務(比如JTA JavaEE伺服器提供的)保證的基礎資料連續一致性,不應被視為任何企業級系統的標準要求。只是我們都習慣了,但卻又不能解決客戶的實際需求。

為了從DDD / CQRS架構中充分受益,我們應該改變底層技術。今天我們已經有一個選擇。有很多NoSQL資料庫,並有一些解決可擴充套件性作為首要關注的平臺。對於JVM ,Akka是最強大的開源平臺,用於構建事件驅動的應用程式。最近Akka永續性模組已經發布,能夠處理long-running/persistable流程照顧(這與聚合根和Sagas都是有關) 。這是一個偉大的功能,透過Akka就能作為構建企業應用的完整平臺。

在這個原始碼中展示了DDD/CQRS EventSourcing等技術,使用Akka建立事件源的聚合根(AR)。這個想法很簡單。聚合根應該被建模為一個接受命令和生產活動狀態的Actor演員。因為Actor演員是訊息驅動的,我們可以直接傳送命令資訊到聚合根,避免“命令來呼叫方法”。

Akka持久模組akka-persistence提供了為實現Actor持久化/狀態的必要的構件。關鍵部件是akka.persistence.Processor特質。Processor是能夠在轉世時(Actor的啟動或重新啟動)恢復其狀態的一個Actor演員。底層儲存的型別是隻可插拔的。


[該貼被admin於2014-04-16 09:25修改過]

相關文章