本文由黑殼博客轉(zhuǎn)載
本文來(lái)源[轉(zhuǎn)]大家都在說(shuō)的分布式系統(tǒng)到底是什么?
殼叔搞笑時(shí)間
在外地出差鲜结,下火車后住的便宜賓館展运,68塊錢一天的那種,兩個(gè)晚上了精刷,不停的被客房服務(wù)騷擾拗胜,每晚都要兩三次敲門(mén),煩不勝煩怒允,要不是交了四天的錢埂软,我絕對(duì)早早搬走。睡得正香呢误算,一會(huì)兒一敲的煩不煩仰美。要在我年輕時(shí)候也就罷了,關(guān)鍵我都快26了……
正文
隨著大型網(wǎng)站的各種高并發(fā)訪問(wèn)儿礼、海量數(shù)據(jù)處理等場(chǎng)景越來(lái)越多咖杂,如何實(shí)現(xiàn)網(wǎng)站的高可用、易伸縮蚊夫、可擴(kuò)展诉字、安全等目標(biāo)就顯得越來(lái)越重要。為了解決這樣一系列問(wèn)題,大型網(wǎng)站的架構(gòu)也在不斷發(fā)展壤圃。提高大型網(wǎng)站的高可用架構(gòu)陵霉,不得不提的就是分布式。本文主要簡(jiǎn)單介紹了分布式系統(tǒng)的概念伍绳、分布式系統(tǒng)的特點(diǎn)踊挠、常用的分布式方案以及分布式和集群的區(qū)別等。
一冲杀、集中式系統(tǒng)
在學(xué)習(xí)分布式之前效床,先了解一下與之相對(duì)應(yīng)的集中式系統(tǒng)是什么樣的。
集中式系統(tǒng)用一句話概括就是:一個(gè)主機(jī)帶多個(gè)終端权谁。終端沒(méi)有數(shù)據(jù)處理能力剩檀,僅負(fù)責(zé)數(shù)據(jù)的錄入和輸出。而運(yùn)算旺芽、存儲(chǔ)等全部在主機(jī)上進(jìn)行』铮現(xiàn)在的銀行系統(tǒng),大部分都是這種集中式的系統(tǒng)采章,此外运嗜,在大型企業(yè)、科研單位悯舟、軍隊(duì)洗出、政府等也有分布。集中式系統(tǒng)图谷,主要流行于上個(gè)世紀(jì)。
集中式系統(tǒng)的最大的特點(diǎn)就是部署結(jié)構(gòu)非常簡(jiǎn)單阱洪,底層一般采用從IBM便贵、HP等廠商購(gòu)買到的昂貴的大型主機(jī)。因此無(wú)需考慮如何對(duì)服務(wù)進(jìn)行多節(jié)點(diǎn)的部署冗荸,也就不用考慮各節(jié)點(diǎn)之間的分布式協(xié)作問(wèn)題承璃。但是,由于采用單機(jī)部署蚌本。很可能帶來(lái)系統(tǒng)大而復(fù)雜盔粹、難于維護(hù)、發(fā)生單點(diǎn)故障(單個(gè)點(diǎn)發(fā)生故障的時(shí)候會(huì)波及到整個(gè)系統(tǒng)或者網(wǎng)絡(luò)程癌,從而導(dǎo)致整個(gè)系統(tǒng)或者網(wǎng)絡(luò)的癱瘓)舷嗡、擴(kuò)展性差等問(wèn)題。
二嵌莉、分布式系統(tǒng)(distributed system)
在《分布式系統(tǒng)概念與設(shè)計(jì)》一書(shū)中进萄,對(duì)分布式系統(tǒng)做了如下定義:
分布式系統(tǒng)是一個(gè)硬件或軟件組件分布在不同的網(wǎng)絡(luò)計(jì)算機(jī)上,彼此之間僅僅通過(guò)消息傳遞進(jìn)行通信和協(xié)調(diào)的系統(tǒng)
簡(jiǎn)單來(lái)說(shuō)就是一群獨(dú)立計(jì)算機(jī)集合共同對(duì)外提供服務(wù),但是對(duì)于系統(tǒng)的用戶來(lái)說(shuō)中鼠,就像是一臺(tái)計(jì)算機(jī)在提供服務(wù)一樣可婶。分布式意味著可以采用更多的普通計(jì)算機(jī)(相對(duì)于昂貴的大型機(jī))組成分布式集群對(duì)外提供服務(wù)。計(jì)算機(jī)越多援雇,CPU矛渴、內(nèi)存、存儲(chǔ)資源等也就越多惫搏,能夠處理的并發(fā)訪問(wèn)量也就越大具温。
從分布式系統(tǒng)的概念中我們知道,各個(gè)主機(jī)之間通信和協(xié)調(diào)主要通過(guò)網(wǎng)絡(luò)進(jìn)行晶府,所以桂躏,分布式系統(tǒng)中的計(jì)算機(jī)在空間上幾乎沒(méi)有任何限制,這些計(jì)算機(jī)可能被放在不同的機(jī)柜上川陆,也可能被部署在不同的機(jī)房中剂习,還可能在不同的城市中,對(duì)于大型的網(wǎng)站甚至可能分布在不同的國(guó)家和地區(qū)较沪。但是鳞绕,無(wú)論空間上如何分布,一個(gè)標(biāo)準(zhǔn)的分布式系統(tǒng)應(yīng)該具有以下幾個(gè)主要特征:
分布性
分布式系統(tǒng)中的多臺(tái)計(jì)算機(jī)之間在空間位置上可以隨意分布尸曼,系統(tǒng)中的多臺(tái)計(jì)算機(jī)之間沒(méi)有主们何、從之分,即沒(méi)有控制整個(gè)系統(tǒng)的主機(jī)控轿,也沒(méi)有受控的從機(jī)冤竹。
透明性
系統(tǒng)資源被所有計(jì)算機(jī)共享。每臺(tái)計(jì)算機(jī)的用戶不僅可以使用本機(jī)的資源茬射,還可以使用本分布式系統(tǒng)中其他計(jì)算機(jī)的資源(包括CPU鹦蠕、文件、打印機(jī)等)在抛。
同一性
系統(tǒng)中的若干臺(tái)計(jì)算機(jī)可以互相協(xié)作來(lái)完成一個(gè)共同的任務(wù)钟病,或者說(shuō)一個(gè)程序可以分布在幾臺(tái)計(jì)算機(jī)上并行地運(yùn)行。
通信性
系統(tǒng)中任意兩臺(tái)計(jì)算機(jī)都可以通過(guò)通信來(lái)交換信息刚梭。
和集中式系統(tǒng)相比肠阱,分布式系統(tǒng)的性價(jià)比更高、處理能力更強(qiáng)朴读、可靠性更高屹徘、也有很好的擴(kuò)展性。但是衅金,分布式在解決了網(wǎng)站的高并發(fā)問(wèn)題的同時(shí)也帶來(lái)了一些其他問(wèn)題缘回。首先吆视,分布式的必要條件就是網(wǎng)絡(luò),這可能對(duì)性能甚至服務(wù)能力造成一定的影響酥宴。其次啦吧,一個(gè)集群中的服務(wù)器數(shù)量越多,服務(wù)器宕機(jī)的概率也就越大拙寡。另外授滓,由于服務(wù)在集群中分布是部署,用戶的請(qǐng)求只會(huì)落到其中一臺(tái)機(jī)器上肆糕,所以般堆,一旦處理不好就很容易產(chǎn)生數(shù)據(jù)一致性問(wèn)題。
常用的分布式方案
分布式應(yīng)用和服務(wù)
將應(yīng)用和服務(wù)進(jìn)行分層和分割诚啃,然后將應(yīng)用和服務(wù)模塊進(jìn)行分布式部署淮摔。這樣做不僅可以提高并發(fā)訪問(wèn)能力、減少數(shù)據(jù)庫(kù)連接和資源消耗始赎,還能使不同應(yīng)用復(fù)用共同的服務(wù)和橙,使業(yè)務(wù)易于擴(kuò)展。
分布式靜態(tài)資源
對(duì)網(wǎng)站的靜態(tài)資源如JS造垛、CSS魔招、圖片等資源進(jìn)行分布式部署可以減輕應(yīng)用服務(wù)器的負(fù)載壓力,提高訪問(wèn)速度五辽。
分布式數(shù)據(jù)和存儲(chǔ)
大型網(wǎng)站常常需要處理海量數(shù)據(jù)办斑,單臺(tái)計(jì)算機(jī)往往無(wú)法提供足夠的內(nèi)存空間,可以對(duì)這些數(shù)據(jù)進(jìn)行分布式存儲(chǔ)杆逗。
分布式計(jì)算
隨著計(jì)算技術(shù)的發(fā)展乡翅,有些應(yīng)用需要非常巨大的計(jì)算能力才能完成,如果采用集中式計(jì)算罪郊,需要耗費(fèi)相當(dāng)長(zhǎng)的時(shí)間來(lái)完成峦朗。分布式計(jì)算將該應(yīng)用分解成許多小的部分,分配給多臺(tái)計(jì)算機(jī)進(jìn)行處理排龄。這樣可以節(jié)約整體計(jì)算時(shí)間,大大提高計(jì)算效率翎朱。
分布式與集群
分布式(distributed)是指在多臺(tái)不同的服務(wù)器中部署不同的服務(wù)模塊橄维,通過(guò)遠(yuǎn)程調(diào)用協(xié)同工作,對(duì)外提供服務(wù)拴曲。
集群(cluster)是指在多臺(tái)不同的服務(wù)器中部署相同應(yīng)用或服務(wù)模塊争舞,構(gòu)成一個(gè)集群,通過(guò)負(fù)載均衡設(shè)備對(duì)外提供服務(wù)澈灼。
關(guān)于我們
程序員太辛苦了
請(qǐng)善待你們身邊的每一位程序員~
歡迎在評(píng)論寫(xiě)下你的程序員趣事竞川,程序員不是一個(gè)死板的職業(yè)~~
以上內(nèi)容店溢,均來(lái)自互聯(lián)網(wǎng)~
歡迎掃描二維碼加入我們的小組織 ,大家都叫殼叔委乌,期待你的到來(lái)床牧。
黑殼網(wǎng)交流群 Q群:200408242