1. 程式人生 > 其它 >單體應用與微應用典型架構比對

單體應用與微應用典型架構比對

隨著雲化時代的到來,軟體服務架構也從傳統的單體架構向微服務架構轉變,微服務架構發展的如火如荼,那麼單體架構和微服務架構區別在哪裡呢?

單體應用典型架構

在典型單體應用架構中,我們會橫向部署多個應用,用來支撐系統的吞吐量。為了實現負載均衡,使用反向代理軟體(Nginx)把請求均勻分發到每個Tomcat中。

為了降低資料庫的壓力,我們引入分散式快取,把絕大多數請求在讀寫資料庫前攔截掉,大大降低資料庫壓力。

為了進一步降低資料庫壓力,我們把資料庫劃分為讀庫和寫庫,讀庫可以有多個,通過同步機制把寫庫的資料同步到讀庫,實現資料同步。

單體應用的典型架構如下

微應用典型架構

為了解決單個Nginx的瓶頸,我們引入F5,F5是工作在網路第四層的負載均衡解決方案,可對TCP請求或更高層級的網路協議進行轉發,實現對多個Nginx的均衡負載。

同時我們業務進行拆分,拆分成應用和服務。大資料培訓應用負責滿足使用者的使用需求,每個應用分別負責具體的業務場景,相互之間可以做到獨立升級迭代。可複用的功能程式碼單獨抽取出來形成服務,每個服務也可以單獨進行升級。當然各應用和服務之間的通訊少不了ESB統一訪問協議了。應用統一通過ESB來訪問後端服務,服務與服務之間也通過ESB來相互呼叫,以此降低系統的耦合程度。

在資料庫層面,傳統資料庫不適用於複雜的查詢場景,需要根據具體場景進行拆分選用合適的元件。如對於海量檔案儲存,可通過分散式檔案系統HDFS解決,對於key value型別的資料,可通過HBase和Redis等方案解決。對於全文檢索場景,可通過搜尋引擎如ElasticSearch解決。

微應用的典型架構如下: