分層:
在經(jīng)歷了分層(水平切分:應(yīng)用層薪前,服務(wù)層贝乎,數(shù)據(jù)層)
后,系統(tǒng)的并發(fā)度仍然不斷升高貌矿,壓力不斷持續(xù)增大炭菌,通過不斷升級(jí)機(jī)器的性能已經(jīng)無法滿足系統(tǒng)增大的壓力時(shí),就需要考慮
分割:
分割(縱向拆分):
即將不同的功能和服務(wù)分割開來逛漫,包裝成高內(nèi)聚低耦合的模塊單元黑低,一方面有助于軟件開發(fā)和維護(hù);另一方面尽楔,便于不同模塊的分布式部署投储,提高網(wǎng)站的并發(fā)處理能力和功能擴(kuò)展能力。
大型網(wǎng)站分割的粒度可能會(huì)很小阔馋。比如在應(yīng)用層玛荞,將不同業(yè)務(wù)進(jìn)行分割,如購物呕寝,論壇勋眯,搜索,廣告分割成為不同的應(yīng)用下梢,由獨(dú)立團(tuán)隊(duì)負(fù)責(zé)并部署在不同機(jī)器上
客蹋,在同一個(gè)應(yīng)用內(nèi)部,如果規(guī)模龐大業(yè)務(wù)復(fù)雜孽江,會(huì)繼續(xù)執(zhí)行分割讶坯,同樣在服務(wù)層也能根據(jù)服務(wù)分割成合適模塊。
分布式:
目的:
分層和分割的目的是為了切分后的模塊便于分布式部署(將不同模塊部署在不同的服務(wù)器上岗屏,通過遠(yuǎn)程調(diào)用協(xié)同工作)辆琅。分布式意味著可以使用更多的計(jì)算機(jī)完成同樣的功能,計(jì)算機(jī)越多这刷,CPU婉烟,內(nèi)存,存儲(chǔ)資源也就越多暇屋,能夠處理的并發(fā)訪問和數(shù)據(jù)量就越大似袁,進(jìn)而能夠?yàn)楦嗟挠脩籼峁┓?wù)。
難度:
分布式意味著1.服務(wù)調(diào)用需要通過網(wǎng)絡(luò)咐刨,這會(huì)對(duì)性能造成比較嚴(yán)重的影響昙衅。2.其次,服務(wù)器越多定鸟,服務(wù)器宕機(jī)的概率也會(huì)提高绒尊,一臺(tái)服務(wù)器宕機(jī)造成的服務(wù)可能會(huì)影響很多應(yīng)用不能訪問,使網(wǎng)站可用性降低仔粥。3.另外,數(shù)據(jù)在分布式環(huán)境中保持?jǐn)?shù)據(jù)一致性也非常困難,分布式事務(wù)也難以保證,這對(duì)網(wǎng)站業(yè)務(wù)正確性和業(yè)務(wù)流程可能造成很大影響 躯泰。4.分布式還導(dǎo)致網(wǎng)站依賴錯(cuò)綜復(fù)雜谭羔,開發(fā)管理維護(hù)困難。因此分布式設(shè)計(jì)要量力而行麦向,切莫為了分布式而分布式瘟裸。
常用的分布式設(shè)計(jì):
1.分布式應(yīng)用和服務(wù):
分布式應(yīng)用和服務(wù):
將分層和分割后的應(yīng)用和服務(wù)模塊分布式部署,除了可以改善網(wǎng)站性能和并發(fā)性诵竭,加快開發(fā)和發(fā)布速度话告,減少數(shù)據(jù)庫連接資源消耗外;還可以使不同應(yīng)用復(fù)用共同的服務(wù)卵慰,便于業(yè)務(wù)功能擴(kuò)展沙郭。
分布式靜態(tài)資源:
網(wǎng)站的靜態(tài)資源如JS,CSS裳朋,Logo圖片等資源獨(dú)立分布式部署病线,并采用獨(dú)立的域名,即人們常說的動(dòng)靜分離鲤嫡。靜態(tài)資源分布式部署可以減輕應(yīng)用服務(wù)器的負(fù)載壓力送挑;通過使用獨(dú)立域名加快瀏覽器并發(fā)加速的速度;由負(fù)責(zé)用戶體驗(yàn)的團(tuán)隊(duì)進(jìn)行開發(fā)維護(hù)有利于網(wǎng)站分工合作暖眼,使不同技術(shù)工種術(shù)業(yè)有專攻惕耕。
分布式數(shù)據(jù)和存儲(chǔ):
大型網(wǎng)站需要處理以P為單位的海量數(shù)據(jù),單臺(tái)計(jì)算機(jī)無法提供如此大的存儲(chǔ)空間诫肠,這些數(shù)據(jù)需要分布式存儲(chǔ)司澎,除了對(duì)傳統(tǒng)的關(guān)系型數(shù)據(jù)庫進(jìn)行分布式存儲(chǔ)外,為網(wǎng)站應(yīng)運(yùn)而生的各種NoSql產(chǎn)品幾乎都是分布式的区赵。
分布式計(jì)算:
嚴(yán)格說來惭缰,應(yīng)用,服務(wù)笼才,實(shí)時(shí)數(shù)據(jù)處理都是計(jì)算漱受,網(wǎng)站除了要處理這些在線業(yè)務(wù),還有很大一部分用戶沒有直觀感受的后臺(tái)業(yè)務(wù)要處理骡送,包括搜索引擎的索引構(gòu)建昂羡,數(shù)據(jù)倉庫的數(shù)據(jù)分析統(tǒng)計(jì)等。這些業(yè)務(wù)的計(jì)算規(guī)模非常龐大摔踱,目前網(wǎng)站普遍使用Hadoop虐先,MapReduce分布式計(jì)算框架進(jìn)行此類批處理計(jì)算,其特點(diǎn)是移動(dòng)計(jì)算而不是移動(dòng)數(shù)據(jù)派敷,將計(jì)算程序分發(fā)到數(shù)據(jù)所在的位置以加速計(jì)算分布式計(jì)算蛹批。
其他:
分布式配置(如可以支持網(wǎng)站線上服務(wù)器配置實(shí)時(shí)更新的分布式配置)撰洗。
分布式鎖(分布式環(huán)境下實(shí)現(xiàn)并發(fā)和協(xié)同的分布式鎖)。
分布式文件系統(tǒng)(支持云存儲(chǔ)的分布式文件系統(tǒng))腐芍。
本文參考:大型網(wǎng)站技術(shù)架構(gòu)-核心原理與案例分析 (李慧智)