Cheeper:《CQRS By Example》一書的參考程式碼開源實現

banq發表於2022-07-08

命令-查詢職責分離 (CQRS) 是一種架構風格,用於開發易於維護並提供高效能的應用程式。CQRS 基於六邊形架構,其主要特徵是將域模型拆分為讀取和寫入操作,以最大限度地提高語義、效能和可擴充套件性。雙方的編排採用多種策略處理,非同步訊息傳遞是最通用的一種。

CQRS 的所有好處是什麼?有什麼缺點?在哪些情況下值得應用它?它與六邊形架構有何關係?我們如何正確實現寫入模型和讀取模型?我們如何保持雙方同步?邁向事件溯源的以下步驟是什麼?本書將回答所有這些問題以及更多問題,並透過大量實際示例進行指導。

內容摘要
第 1 章:CQRS 和領域驅動設計
什麼是領域驅動設計?它在複雜系統中扮演什麼角色?值得學習和探索嗎?開發人員在進入其中時需要了解哪些主要概念?CQRS 與領域驅動設計有何關係?

第 2 章:CQRS 之旅
CQRS 的基礎是什麼?建立 CQRS 的背景是什麼?CQRS 解決了什麼問題?CQRS 在哪些情況下有用,在哪些情況下沒有效果?

第 3 章:CQRS 剖析
CQRS 的主要組成部分是什麼?什麼是命令端?什麼是查詢端?保持讀取模型和寫入模型同步的總體策略是什麼?有哪些實際用例、它們的主要組成部分和資訊流?

第 4 章:命令端和寫入模型
什麼是命令?命令處理程式呢?為什麼它們很重要?命令匯流排的作用是什麼?什麼是非同步命令和同步命令?

第 5 章:查詢端和讀取模型
什麼是查詢?什麼是查詢處理程式?我們需要查詢匯流排嗎?什麼是讀取薄層?一個好的閱讀模型有什麼特點?我可以擁有多少個讀取模型?什麼是投影?

第 6 章:同步寫入和讀取模型
我必須有哪些選項來同步寫入模型和讀取模型?我需要同步它們嗎?我可以使用訊息以外的策略嗎?訊息傳遞是最好的方法嗎?

第 7 章:全貌
我怎樣才能將以前學過的所有概念付諸實踐?簡單用例需要多少非同步步驟?複雜的有多少?

第 8 章:最佳化和邊緣案例
如何最佳化 Projections 的構建時間?處理事件時我將面臨哪些挑戰?如何從重複或丟失的訊息中恢復?

第 9 章:CQRS 和事件溯源
使用 CQRS 需要考慮哪些啟發式方法?我如何進入事件溯源?決定我是否應該在 CQRS 停止或繼續前進的標準是什麼?

第 10 章:演示時間
如何演示多個用例,詳細瞭解每個步驟中發生的情況?如何與應用程式互動?如何使用同步和非同步命令?我如何消費事件?我如何使用 Projections?

程式碼專案和示例
我們喜歡有詳細的程式碼示例,以便人們可以清楚地看到我們的建議和指南。在本書中,整個內容由 Twitter 克隆應用程式 Cheeper 指導,讀者將對其進行詳細探索。
我們選擇了 Twitter 克隆應用程式,因為它非常適合使用 CQRS 的好處。Twitter 將每個使用者時間線分開儲存,因此讀取使用者時間線是一項非常快速的操作。為了更新每個時間線,Twitter 會在釋出新推文時將新推文投射到相應的關注者。一切都是非同步發生的,命令(釋出推文)和查詢(檢視時間線)是分開的,但使用事件進行協調。

詳細點選標題

相關文章