單體軟件
假設(shè)單體軟件的各模塊如下,其中服務(wù)包含許多功能模塊,如用戶管理模塊、商品模塊、訂單模塊、倉庫模塊;
服務(wù)化
服務(wù)化是指對單體服務(wù)進行拆分,將一個服務(wù)軟件拆分為多個相互關(guān)聯(lián)的服務(wù),他們之間相互協(xié)作,能正常完成原單體服務(wù)的所有業(yè)務(wù)。
服務(wù)化后,有如下優(yōu)點:
- 服務(wù)化后的各服務(wù)能獨立提供服務(wù),某個服務(wù)損毀后,不影響其他業(yè)務(wù)的使用,軟件整體的可用性提高了。
- 服務(wù)化后的軟件代碼依據(jù)各子服務(wù)管理,相對來說代碼量少了,開發(fā)復(fù)雜性會成指數(shù)型減弱
- 服務(wù)化后的軟件,各子服務(wù)獨立維護,因此各服務(wù)更新維護也比較簡單
- 服務(wù)化后的軟件,由于各服務(wù)在不同節(jié)點獨立運行,計算與網(wǎng)絡(luò)資源成倍數(shù)形式增長。理論上來說,這使得軟件的服務(wù)能力成倍提高
以下是對單體服務(wù)中的服務(wù)進行服務(wù)拆分的示意圖。
部分服務(wù)分集群化
服務(wù)集群化
軟件服務(wù)化后,使得軟件的可用性、服務(wù)能力大大提高,然而其更多的價值在于使得軟件的開發(fā)、維護更為簡單。
在軟件服務(wù)化后,隨著軟件使用的需求持續(xù)增長,依然會面臨服務(wù)能力不足的問題。為了解決該問題,大家都會想到服務(wù)擴容,那么如何擴容呢?假定軟件被拆分了10多個子服務(wù),甚至更多。將所有服務(wù)都擴容一套嘛?
答案是否定的,擴容不是說說那么簡單。眾多子服務(wù)同時擴容,首先要面臨成本問題。
一般情況下,服務(wù)擴容是根據(jù)各子服務(wù)的使用情況來指定靈活的擴容方案。對軟件中服務(wù)壓力大,硬件資源不足的節(jié)點進行靈活擴容。
如下是商品服務(wù)服務(wù)擴容的示意圖,下圖表示軟件將商品服務(wù)擴增到了三個節(jié)點,這個三個節(jié)點通過負載均衡與軟件中的其他服務(wù)相關(guān)協(xié)同。
商品服務(wù)以多個節(jié)點共同提供服務(wù)。這個服務(wù)群形成一個集群,即商品服務(wù)集群。
數(shù)據(jù)庫集群化
隨著服務(wù)的增長,對數(shù)據(jù)庫的讀寫需求也會持續(xù)增長。其增長趨勢與服務(wù)的使用趨勢成正比。
當(dāng)數(shù)據(jù)庫服務(wù)能力遇到瓶頸時,也可以對其進行服務(wù)擴容。文章來源:http://www.zghlxwxcb.cn/news/detail-797726.html
因為數(shù)據(jù)層的服務(wù)擴容首先要保證擴容后所有數(shù)據(jù)服務(wù)之間的數(shù)據(jù)一致性問題 ,因此服務(wù)的集群化和數(shù)據(jù)層的集群化通常不一樣。文章來源地址http://www.zghlxwxcb.cn/news/detail-797726.html
- 服務(wù)集群化后,通常各個子服務(wù)之間的關(guān)系是均等的,它們可無差別的提供服務(wù),任何一個服務(wù)損毀,都不影響整體軟件的運行,除非所有集群中的所有服務(wù)都損毀。
- 數(shù)據(jù)層的服務(wù)集群化后,通常對服務(wù)進行主從節(jié)點劃分。主節(jié)點主要負責(zé)數(shù)據(jù)寫入,從節(jié)點主要負責(zé)數(shù)據(jù)讀取。注意,除了主從這種模式外,還有去中心式服務(wù)模式。去中心式服務(wù)模式理論上每個服務(wù)都能進行數(shù)據(jù)讀寫。
到了這里,關(guān)于【架構(gòu)設(shè)計】單體軟件向微服務(wù)化演變的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!