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