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



















 
 
 









 
 
 
 