成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

服務讀寫分離架構,絕不推薦

開發 開發工具
在《服務讀寫分離(讀服務,寫服務),是否可行?》中,對背景做了交代,互聯網架構設計上,數據庫可以讀寫分離,服務能否讀寫分離呢?

緣起

在《服務讀寫分離(讀服務,寫服務),是否可行?》中,對背景做了交代,互聯網架構設計上,數據庫可以讀寫分離,服務能否讀寫分離呢?

下面是兩種常見的“服務讀寫分離”架構:

一、單純服務讀寫分離

單純服務讀寫分離

如上圖,服務化之后:

  • 業務方通過RPC分別調用讀服務和寫服務
  • 服務層分為讀服務與寫服務
  • 底層是高可用的數據庫集群

二、服務和數據庫同時讀寫分離

服務和數據庫同時讀寫分離

讀服務與寫服務讀寫的是不同的數據庫,如上圖:

  • 寫服務訪問寫庫
  • 讀服務訪問讀庫

寫庫與讀庫是一個組從同步的集群。

這種架構設計好還是不好,網友進行了激烈的討論,感興趣的同學可以看下《服務讀寫分離(讀服務,寫服務),是否可行?》的評論,這里,分享下個人的觀點。

三、先說結論

樓主旗幟鮮明的反對服務區分讀寫分離。

四、小理由

調用方對同一個基礎服務,某一個RPC接口,在讀服務,還是寫服務,容易困惑

對于同一個基礎服務,服務數量翻倍了,運維更加復雜

五、強理由

一般來說,垂直拆分,是按照“子業務”維度進行拆分,而不是按照“讀寫”維度進行拆分,這是模塊化設計的基本準則。

1. 完全打破了“服務化數據庫私有”的微服務初衷

兩個服務因為同一份數據庫資源訪問而耦合在一起,當數據庫資源發生變化的時候(例如:ip變化,域名變化,表結構變化,水平切分變化等),有兩個依賴點需要修改。

而好的設計,有變化產生時,只有一個需要修改(低耦合,高內聚),前段時間的“耦合”系列文章,已經多次提到了這一點:

小小的IP,大大的耦合

小小的公共庫,大大的耦合

服務化了,耦合卻更加嚴重了

2. 沒法很好的添加緩存

大部分互聯網業務是讀多寫少的業務,數據庫讀取最容易成為瓶頸,常見提升讀性能的方式是,增加緩存。

如上圖,讀服務的下游增加一個緩存,當有讀請求訪問時:

  • 先訪問緩存,如果***,直接返回
  • 如果緩存不***,訪問數據庫,然后將數據放入緩存中,以便下一次能夠***

額,然后,這個架構中,這個方案是不可行的。

因為,寫服務修改數據庫時,緩存中的數據沒有辦法得到淘汰!!!

OK,有朋友說,寫數據庫之前,可以由寫服務來淘汰緩存:

即,讀服務與寫服務都可以操作緩存。額,這個設計,又違背了“服務化緩存私有”的微服務初衷,兩個服務因為同一份緩存資源訪問而耦合在一起,當緩存資源發生變化的時候,有兩個依賴點需要修改。

況且,如果真的兩個服務訪問相同的數據庫和緩存,為什么不合成一個服務呢?

硬要拆成兩個服務,不是自己玩自己么?

OK,有另外的朋友說,可以由寫服務發消息來淘汰緩存:

如上圖:

  • 緩存私有,只有讀服務操縱緩存
  • 數據庫發生寫請求時,寫服務給MQ發消息,由讀服務來淘汰緩存

這種設計:

  • 讀服務來淘汰緩存,本質是一個寫請求,不是很奇怪么?
  • 引入了一個MQ組件,引入更大的一致性風險
  • 讀服務和寫服務如果是一個進程,豈不是更好么,干嘛硬要跨進程通信呢?

所以,還是一個服務更好:

  • 調用方無二義性,不糾結
  • 好維護
  • 數據庫,緩存私有,無耦合

六、結論

互聯網微服務架構,應該按照“子業務”進行微服務拆分,而不應該按照“讀寫”來進行微服務拆分,避免過度設計。

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2017-12-26 16:18:00

架構服務化讀寫分離

2019-09-17 11:18:09

SQLMySQLJava

2022-08-16 08:50:40

微服務動態讀寫分離

2019-09-30 09:19:54

Redis分離云數據庫

2019-09-25 11:48:08

MySQL數據庫Java

2018-01-09 18:46:44

數據庫架構讀寫分離

2021-06-28 09:36:05

系統分層架構微服務架構

2018-10-16 16:45:05

數據庫讀寫分離

2018-01-15 05:54:45

數據庫讀寫分離互聯網

2015-07-17 09:13:06

微服務SOA紅帽

2011-06-20 11:07:33

噴墨打印機推薦

2009-05-04 09:13:52

PHPMySQL讀寫分離

2020-04-23 15:08:41

SpringBootMyCatJava

2017-09-04 09:53:58

MySQLAtlasNavicat

2021-06-25 10:05:58

SpringBootMySQL數據庫

2010-05-17 11:19:44

MySQL proxy

2025-04-27 10:14:57

2017-05-25 10:22:13

NoSQL數據庫主主備份

2023-07-07 08:36:45

配置注解jar

2021-03-26 08:20:51

SpringBoot讀寫分離開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产一区二区三区观看不卡 | 欧美精品网 | 久久久久久91 | 亚洲不卡在线观看 | 7777在线视频 | 免费看大片bbbb欧美 | 不卡一区二区在线观看 | 欧美一区二区三区四区在线 | 欧美在线综合 | 天天操网| 久久久久久久综合色一本 | 欧美亚洲激情 | 在线视频亚洲 | 久久精品视频在线观看 | 成人免费一区二区三区视频网站 | 欧美一级片在线观看 | 成人欧美一区二区三区黑人孕妇 | a欧美| 久久69精品久久久久久久电影好 | www日韩欧美 | 999精品在线观看 | 天堂在线网 | 8x国产精品视频一区二区 | 中文字幕国产 | 亚洲人成人一区二区在线观看 | 成人免费影院 | 国产一区二区毛片 | 国产不卡一区 | www.天天操| 精品在线一区二区三区 | 在线免费看91 | 精品日韩在线 | 国产不卡视频 | 在线播放一区 | 久久99视频 | 夜夜爽99久久国产综合精品女不卡 | 国产丝袜人妖cd露出 | 性高湖久久久久久久久 | av一区二区三区四区 | 91久久精品日日躁夜夜躁欧美 | 97成人在线 |