CQRS解構: 用讀寫分離設計API
本文討論的是如何使用CQRS實現API設計。
查詢和命令是兩種分離的API。
為何使用這種模式?我喜歡它有幾個原因。作為API的消費者,我永遠不必擔心使用API出現異常了;相反,我能確切地知道哪些API呼叫會專門應付對系統的更改請求,沒有含糊之處。這使得API 易於推理。
我曾經嘗試建立一個統一的介面來完成兩者,但是隨著時間推移,出現“服務於兩個主人“”的典型問題,單一介面變得更加混亂。
時間長了會發生:“我們不使用這個欄位,為什麼我們要更新它?。” 回應:“我不知道,但繼續這樣做或會出問題。”
概述
下面是名為Command / Query Responsibility Segregation(CQRS)的設計模式:
返回資料 做出改變 查詢 ✔️ ❌ 命令 ❌ ✔️ <p class="indent"> |
查詢和命令是兩種分離的API。
為何使用這種模式?我喜歡它有幾個原因。作為API的消費者,我永遠不必擔心使用API出現異常了;相反,我能確切地知道哪些API呼叫會專門應付對系統的更改請求,沒有含糊之處。這使得API 易於推理。
我曾經嘗試建立一個統一的介面來完成兩者,但是隨著時間推移,出現“服務於兩個主人“”的典型問題,單一介面變得更加混亂。
時間長了會發生:“我們不使用這個欄位,為什麼我們要更新它?。” 回應:“我不知道,但繼續這樣做或會出問題。”
相關文章
- CQRS如何實現讀寫分離
- akka-typed(8) - CQRS讀寫分離模式模式
- Mysql之讀寫分離架構-AtlasMySql架構
- Akka-CQRS(0)- 基於akka-cluster的讀寫分離框架,構建gRPC移動應用後端架構框架RPC後端架構
- Redis的讀寫分離Redis
- Laravel讀寫分離原理Laravel
- MySQL Amoeba讀寫分離MySql
- Amoeba for mysql讀寫分離MySql
- MySQL讀寫分離AtlasMySql
- mongodb的讀寫分離MongoDB
- MyCat分庫分表、讀寫分離
- Mycat 讀寫分離+分庫分表
- ProxySQL簡介原理及讀寫分離應用SQL
- golang sync.Map之如何設計一個併發安全的讀寫分離結構?Golang
- 資料讀寫壓力大,讀寫分離
- 深度:微服務化的資料庫設計與讀寫分離微服務資料庫
- 前後端完全分離之API設計後端API
- MySQL + Atlas --- 部署讀寫分離MySql
- Amoeba for MySQL讀寫分離配置MySql
- Amoeba實現讀寫分離
- mysql讀寫分離(PHP類)MySqlPHP
- 資料庫讀寫分離資料庫
- 讀寫分離 & 分庫分表 & 深度分頁
- ShardingSphere(七) 讀寫分離配置,實現分庫讀寫操作
- 命令查詢職責分離 - CQRS
- 位元組面試:什麼是讀寫分離?讀寫分離的底層如何實現?面試
- ProxySQL實現MySQL讀寫分離MySql
- MySQL 讀寫分離的好處MySql
- mysql優化之讀寫分離MySql優化
- 探究MySQL MGR的讀寫分離MySql
- StoneDB 讀寫分離實踐方案
- Spring-Mybatis 讀寫分離SpringMyBatis
- Mycat讀寫分離配置實踐
- SQL Server AlwaysOn讀寫分離配置SQLServer
- Amoeba 實現 MySQL 讀寫分離MySql
- 【Mysql】mysql-proxy讀寫分離MySql
- 【Mongodb】 Replica set 的讀寫分離MongoDB
- 資料庫的讀寫分離資料庫