可擴(kuò)展性架構(gòu)
網(wǎng)站的擴(kuò)展性架構(gòu)設(shè)計(jì),就是在對現(xiàn)有系統(tǒng)影響最小的情況下,系統(tǒng)功能可持續(xù)擴(kuò)展及提升的能力。
這里有必要區(qū)分一下 擴(kuò)展性和伸縮性 :
擴(kuò)展性:
指對現(xiàn)有系統(tǒng)影響最小的情況下,系統(tǒng)功能可持續(xù)擴(kuò)展或提升的能力。表現(xiàn)在系統(tǒng)基礎(chǔ)設(shè)施穩(wěn)定不需要經(jīng)常變更,應(yīng)用之間較少依賴和耦合,對需求變更可以敏捷響應(yīng)。也就是說當(dāng)系統(tǒng)增加新功能時(shí),不需要對現(xiàn)有系統(tǒng)的結(jié)構(gòu)和代碼進(jìn)行修改。
伸縮性:
指系統(tǒng)能夠通過增加(減少)自身資源規(guī)模的方式增強(qiáng)(減少)自己計(jì)算處理事務(wù)的能力。也就是說利用集群的方式增加服務(wù)器數(shù)量,提高系統(tǒng)的整體事務(wù)吞吐呢能力。
設(shè)計(jì)網(wǎng)站可擴(kuò)展架構(gòu)的 核心思想是模塊化 ,并在此基礎(chǔ)上,降低模塊間的耦合性,提高模塊的復(fù)用性。
前面提到過,通過分層和分割的方式進(jìn)行架構(gòu)伸縮,分層和分割也是模塊化設(shè)計(jì)的重要手段, 利用分層和分割的方式將軟件分割為若干個(gè)低耦合的獨(dú)立的子組件模塊 ,這些組件模塊以消息傳遞及依賴調(diào)用的方式聚合成一個(gè)完整的系統(tǒng)。
在大型網(wǎng)站中,這些模塊通過分布式部署的方式,獨(dú)立的模塊部署在獨(dú)立的服務(wù)器集群上,從物理上分離模塊之間的耦合關(guān)系,進(jìn)一步降低耦合性提高復(fù)用性。
模塊分布式部署以后具體集合方式主要有 分布式消息隊(duì)列 和 分布式服務(wù) 。
利用分布式消息隊(duì)列降低系統(tǒng)耦合性
事件驅(qū)動(dòng)架構(gòu)通過在低耦合模塊之間傳遞事件消息,以保持模塊的松散耦合,并借助事件消息的通信完成模塊間合作。在大型網(wǎng)站架構(gòu)中,實(shí)現(xiàn)手段為分布式消息隊(duì)列:
消息隊(duì)列使用發(fā)布訂閱模式。分布式消息隊(duì)列原理如下:
消息隊(duì)列服務(wù)器根據(jù)消息訂閱列表查找訂閱該消息的消息消費(fèi)者應(yīng)用程序,將消息隊(duì)列中的消息按照先進(jìn)先出的原則將消息通過遠(yuǎn)程通信接口發(fā)送給消息消費(fèi)者程序。