Cheeper:《CQRS By Example》一書的參考程式碼開源實現
命令-查詢職責分離 (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 會在釋出新推文時將新推文投射到相應的關注者。一切都是非同步發生的,命令(釋出推文)和查詢(檢視時間線)是分開的,但使用事件進行協調。
詳細點選標題
相關文章
- 模擬考試參考程式碼
- 汪子熙趣味接龍游戲實現的參考資源
- Laravel 驗證碼類實現 (供學習、參考)Laravel
- 參考Vue-router, 實現一個簡單的前端路由Vue前端路由
- 微服務、CQRS和eventsourcing開源資源微服務
- 有沒有開源的測試平臺可以參考的?
- 全志A33linuxled驅動程式設計(附實測參考程式碼)Linux程式設計
- NGINX LDAP參考實現中的零日漏洞 - nginxNginxLDA
- 無程式碼開發如何實現?什麼時候考慮使用無程式碼開發平臺
- 利用 Watermill 實現 Golang CQRSGolang
- 【PDB】Oracle PDB資源管理參考Oracle
- 秒合約系統開發邏輯實現,秒合約系統開發部分原始碼參考原始碼
- 簡單語法解析器實現參考
- 【前端開發】一個半月的實習總結:前端入行可以參考一下前端
- HTML 字元實體參考HTML字元
- 基於 go 語言開發部署的部落格 免費開源供參考Go
- 基於Prometheus閘道器的監控完整實現參考Prometheus
- 自動化測試:六個值得參考的 Laravel 開源專案Laravel
- vue學習資源(參考連結)Vue
- Python 編碼風格參考Python
- HTML標籤參考(一)HTML
- 【TUNE_ORACLE】列出LOOP套LOOP的PL/SQL程式碼SQL參考OracleOOPSQL
- 簡單sql欄位解析器實現參考SQL
- 統計系本科生參考書整理
- 阻塞非阻塞和同步非同步的區分 參考一些書籍非同步
- 使用delphi開發人工智慧程式(參考資料)人工智慧
- 《書單分享》小程式開源
- 基於long pull實現簡易的訊息系統參考
- 一刻社群程式碼開源啦
- 前端面試中常考的原始碼實現前端面試原始碼
- 開源!開源一個flutter實現的古詩拼圖遊戲Flutter遊戲
- 分享一份公司前端程式碼規範(JS+TS + React),僅供參考前端JSReact
- LLM-通義千問:新能源參考書
- 開源低程式碼平臺開發實踐一:低程式碼開發探討與技術選型
- shell指令碼實現多臺伺服器自動巡檢--可參考學習指令碼伺服器
- TIDB 考試 參考TiDB
- 觀點:實現CQRS分離不如實現一致性分離 - @jroper
- 使用TypeScript和nextjs實現基於CQRS的微服務的銀行API原始碼TypeScriptNextJS微服務API原始碼