- 深入理解Spring Cloud與微服務構建(第2版)
- 方志朋
- 700字
- 2020-04-14 15:17:58
1.1.3 單體架構使用服務器集群及存在的不足
隨著業務的發展,大多數公司會將單體應用進行集群部署,并增加負載均衡服務器(例如Nginx等)。另外,還需要增加集群部署的緩存服務器和文件服務器,并將數據庫讀寫分離,以應對用戶量的增加而帶來的高并發訪問量。此時的系統架構如圖1-3所示。
用負載均衡服務器分發高并發的網絡請求,用戶的訪問被分派到不同的應用服務器,應用服務器的負載不再成為瓶頸,用戶量增加時,添加應用服務器即可。通過添加緩存服務器來緩解數據庫的數據以及數據庫讀取數據的壓力。大多數的讀取操作是由緩存完成的,但是仍然有少數讀操作是從數據庫讀取的,例如緩存失效、實時數據等。當有大量的讀寫操作時,將數據庫進行讀寫分離是一個不錯的選擇,例如MySQL的主從熱備份,通過相關配置可以將主數據庫服務器的數據同步到從數據庫服務器,實現數據庫的讀寫分離,讀寫分離能夠改善數據庫的負載能力。

▲圖1-3 單體服務的集群化
這種架構有一定的處理高并發的能力,也能應對一定復雜的業務需求,改善了系統的性能,但是依然沒有改變系統為單體架構的事實,此時存在的不足之處如下。
?系統仍然為單體應用,大量的業務必然會有大量的代碼,代碼的可讀性和可維護性依然很差。
?面對海量的用戶,數據庫將會成為瓶頸,解決方案將使用分布式數據庫,也就是將數據庫進行分庫分表。
?持續交付能力差,業務越復雜,代碼越多,修改代碼和添加代碼所需的時間越長。新人熟悉代碼的時間長、成本高。
由此看見,在應用初期,單體應用在成本、開發時間和運維等方面都有明顯的優勢。但是隨著業務量和用戶量的增加,它所暴露出來的缺點也顯而易見。單體架構已經不能滿足復雜的業務和海量的用戶系統,改變單體架構勢在必行。