命令查詢職責分離器 (Command Query Responsibility Segregator)



問題陳述 (Problem Statement)

微服務架構將應用程式構建為一組鬆散耦合的微服務,每個服務都可以以敏捷的方式獨立開發,以實現持續交付/部署。如果我們使用了每個服務一個數據庫的設計模式,那麼如何執行需要來自多個服務資料的查詢?

解決方案 (Solution)

我們可以定義一個只讀檢視資料庫來支援所需的查詢。應用程式將透過訂閱擁有資料的服務觸發的事件來保持檢視資料庫的最新狀態。在此設計模式中,我們將更新操作和讀取操作分離開來。一個服務只讀取資料,其他服務更新資料。

Command Query Responsibility Segregator Pattern

為了實現此模式,我們通常需要重構領域模型以支援單獨的查詢資料和更新資料操作,以便每個操作都可以由微服務獨立處理。CQRS 模式確保讀取資料的操作與更新資料的操作分離。因此,一個操作可以讀取或寫入資料,但不能同時執行兩者。

現在,多個服務可以更新記錄並將事件傳送到應用程式以更新檢視資料庫。這有助於查詢服務獲取一致的資料,而不會影響效能。

廣告 (Advertisements)