服務讀寫分離(讀服務,寫服務),是否可行?
作者:58沈劍
大家都知道,數據庫可以讀寫分離,為了職責更清新,架構設計上,服務能否讀寫分離呢?
系統分層架構有一個迭代和演進的過程,早期,系統分層架構如下:
- 上游是需要數據的業務調用方
- 下游是存儲數據的數據庫
隨著架構的演進,可能要抽取出服務層(詳見《互聯網架構為什么要做服務化?》):
- 上游通過RPC調用服務獲取數據
- 中間服務層從數據庫獲取數據
- 下游是存儲數據的數據庫
大家都知道,數據庫可以讀寫分離,為了職責更清新,架構設計上,服務能否讀寫分離呢?
如上圖,服務化讀寫分離之后:
- 業務方通過RPC分別調用讀服務和寫服務
- 服務層分為讀服務與寫服務
- 底層是高可用的數據庫集群
當然,也有可能讀服務與寫服務讀寫的是不同的數據庫,如上圖:
- 寫服務訪問寫庫
- 讀服務訪問讀庫
寫庫與讀庫是一個主從同步的集群。
那么,問題來了:
- 你遇到過這種架構設計么?
- 這種架構設計好還是不好,為什么?
- 如果服務讀寫分離設計好,上面兩種方案哪種好?
【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】
責任編輯:趙寧寧
來源:
51CTO專欄