
- 微服務設計模式教程 (Microservices Design Patterns Tutorial)
- 微服務設計模式 - 首頁 (Microservices Design Patterns - Home)
- 微服務設計模式 - 概述 (Microservices Design Patterns - Overview)
- 分解設計模式 (Decomposition Design Patterns)
- 按業務能力分解 (Decompose by Business Capability)
- 按子域分解 (Decompose by Subdomain)
- 按絞殺者模式分解 (Decompose by Strangler)
- 整合設計模式 (Integration Design Patterns)
- API 閘道器 (API Gateway)
- 聚合器 (Aggregator)
- 代理 (Proxy)
- 客戶端UI組合 (Client Side UI Composition)
- 責任鏈 (Chain Of Responsibilities)
- 分支 (Branch)
- 資料庫設計模式 (Database Design Patterns)
- 每個服務一個數據庫 (Database per Service)
- 共享資料庫 (Shared Database per Service)
- 命令查詢職責分離器 (Command Query Responsibility Segregator)
- Saga 事務模式
- 非同步訊息 (Aysynchronous Messaging)
- 事件溯源 (Event Sourcing)
- 可觀測性設計模式 (Observability Design Patterns)
- 日誌聚合 (Log Aggregation)
- 效能指標 (Performance Metrics)
- 分散式追蹤 (Distributed Tracing)
- 健康檢查 (Health Check)
- 橫切關注點設計模式 (Cross Cutting Concern Design Patterns)
- 外部配置 (External Configuration)
- 服務發現 (Service Discovery)
- 斷路器 (Circuit Breaker)
- 藍綠部署 (Blue Green Deployment)
- 有用資源 (Useful Resources)
- 快速指南 (Quick Guide)
- 有用資源 (Useful Resources)
- 討論 (Discussion)
命令查詢職責分離器 (Command Query Responsibility Segregator)
問題陳述 (Problem Statement)
微服務架構將應用程式構建為一組鬆散耦合的微服務,每個服務都可以以敏捷的方式獨立開發,以實現持續交付/部署。如果我們使用了每個服務一個數據庫的設計模式,那麼如何執行需要來自多個服務資料的查詢?
解決方案 (Solution)
我們可以定義一個只讀檢視資料庫來支援所需的查詢。應用程式將透過訂閱擁有資料的服務觸發的事件來保持檢視資料庫的最新狀態。在此設計模式中,我們將更新操作和讀取操作分離開來。一個服務只讀取資料,其他服務更新資料。

為了實現此模式,我們通常需要重構領域模型以支援單獨的查詢資料和更新資料操作,以便每個操作都可以由微服務獨立處理。CQRS 模式確保讀取資料的操作與更新資料的操作分離。因此,一個操作可以讀取或寫入資料,但不能同時執行兩者。
現在,多個服務可以更新記錄並將事件傳送到應用程式以更新檢視資料庫。這有助於查詢服務獲取一致的資料,而不會影響效能。
廣告 (Advertisements)