在領(lǐng)域驅(qū)動(dòng)架構(gòu)中,通常會(huì)將查詢(xún)和命令操作分開(kāi),我們稱(chēng)之為CQRS(命令查詢(xún)職責(zé)分離Command Query Responsibility Segregation)。這張圖是來(lái)自Martin Fowler大師的文章CQRS(
https://www.martinfowler.com/bliki/CQRS.html)。
上圖中讀模塊Query Model和寫(xiě)模塊Command Model只是邏輯分離,物理層面還是使用了同一個(gè)數(shù)據(jù)庫(kù)。我們可以進(jìn)一步將數(shù)據(jù)庫(kù)改成讀庫(kù)和寫(xiě)庫(kù)做到物理分離,這時(shí)候就需要同步讀寫(xiě)庫(kù)。
如果數(shù)據(jù)量不大,可以采用簡(jiǎn)單的處理方式,物理層面還是使用一個(gè)數(shù)據(jù)庫(kù),查詢(xún)的時(shí)候部分?jǐn)?shù)據(jù)直接從數(shù)據(jù)庫(kù)讀取,部分?jǐn)?shù)據(jù)使用到了Elasticsearch,數(shù)據(jù)同步可以采用兩種方案:
- 當(dāng)數(shù)據(jù)庫(kù)發(fā)生更改時(shí),主動(dòng)發(fā)送領(lǐng)域事件(Domain Event)通知Elasticsearch進(jìn)行更新,可以參考《COLA 4.x架構(gòu)入門(mén)和項(xiàng)目實(shí)踐》技術(shù)專(zhuān)欄中的領(lǐng)域事件入門(mén)實(shí)踐部分的內(nèi)容。
- 直接監(jiān)聽(tīng)MySQL的binlog更新Elasticsearch。關(guān)于Elasticsearch的詳細(xì)使用,可以參考《Elasticsearch 7.x從入門(mén)到精通》技術(shù)專(zhuān)欄。

專(zhuān)欄
Elasticsearch 7.x從入門(mén)到精通
作者:軟件架構(gòu)
39.8幣
162人已購(gòu)
查看
COLA開(kāi)源架構(gòu),就是基于DDD領(lǐng)域建模思想、DDD分層架構(gòu)和CQRS架構(gòu),可以幫助開(kāi)發(fā)人員快速落地DDD應(yīng)用項(xiàng)目。

專(zhuān)欄
COLA 4.x架構(gòu)入門(mén)和項(xiàng)目實(shí)踐
作者:軟件架構(gòu)
29.8幣
45人已購(gòu)
查看
《COLA 4.x架構(gòu)入門(mén)和項(xiàng)目實(shí)踐》技術(shù)專(zhuān)欄首先介紹了COLA框架的使用入門(mén),以及與IDEA開(kāi)發(fā)工具的集成等等;然后基于COLA架構(gòu),創(chuàng)建DDD經(jīng)典示例項(xiàng)目-貨物運(yùn)輸系統(tǒng),詳細(xì)介紹了DDD領(lǐng)域建模、適配層、應(yīng)用層、領(lǐng)域?qū)雍突A(chǔ)設(shè)施層的代碼開(kāi)發(fā)、防腐層(ACL)設(shè)計(jì)與實(shí)現(xiàn)、領(lǐng)域事件(Domain Event)建模和落地實(shí)踐、以及基于Kafka消息中間件的消息發(fā)布和訂閱等等。內(nèi)容由淺入深,從開(kāi)發(fā)實(shí)戰(zhàn)出發(fā),逐步掌握基于COLA架構(gòu)和DDD領(lǐng)域建模思想構(gòu)建復(fù)雜業(yè)務(wù)應(yīng)用系統(tǒng)。






