分布式基础理论
分布式系統(tǒng)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng),分布式系統(tǒng)具有高度的內(nèi)聚性和透明性。
內(nèi)聚性是指每一個(gè)數(shù)據(jù)庫分布節(jié)點(diǎn)高度自治,有本地的數(shù)據(jù)庫管理系統(tǒng)。透明性是指每一個(gè)數(shù)據(jù)庫分布節(jié)點(diǎn)對(duì)用戶的應(yīng)用來說都是透明的,看不出是本地還是遠(yuǎn)程。
分布式系統(tǒng)是多個(gè)處理機(jī)通過通信線路互聯(lián)而構(gòu)成的松散耦合的系統(tǒng)。分布式系統(tǒng)應(yīng)具有以下四個(gè)特征: ?
(1)分布性。分布式系統(tǒng)由多臺(tái)計(jì)算機(jī)組成,它們?cè)诘赜蛏鲜欠稚⒌摹U麄€(gè)系統(tǒng)的功能是分散在各個(gè)節(jié)點(diǎn)上實(shí)現(xiàn)的,因而分布式系統(tǒng)具有數(shù)據(jù)處理的分布性。
(2)自治性。分布式系統(tǒng)中的各個(gè)節(jié)點(diǎn)都包含自己的處理機(jī)和內(nèi)存,各自具有獨(dú)立的處理數(shù)據(jù)的功能。
(3)并行性。一個(gè)大的任務(wù)可以劃分為若干個(gè)子任務(wù),分別在不同的主機(jī)上執(zhí)行。
(4)全局性。分布式系統(tǒng)中必須存在一個(gè)單一的、全局的進(jìn)程通信機(jī)制,使得任何一個(gè)進(jìn)程都能與其他進(jìn)程通信,并且不區(qū)分本地通信與遠(yuǎn)程通信。同時(shí),還應(yīng)當(dāng)有全局的保護(hù)機(jī)制。系統(tǒng)中所有機(jī)器上有統(tǒng)一的系統(tǒng)調(diào)用集合,它們必須適應(yīng)分布式的環(huán)境。在所有CPU上運(yùn)行同樣的內(nèi)核,使協(xié)調(diào)工作更加容易
優(yōu)點(diǎn)
(1)資源共享。若干不同的節(jié)點(diǎn)通過通信網(wǎng)絡(luò)彼此互聯(lián),一個(gè)節(jié)點(diǎn)上的用戶可以使用其他節(jié)點(diǎn)上的資源
(2)加快計(jì)算速度。如果一個(gè)特定的計(jì)算任務(wù)可以劃分為若干個(gè)并行運(yùn)行的子任務(wù),則可把這些子任務(wù)分散到不同的節(jié)點(diǎn)上,使它們同時(shí)在這些節(jié)點(diǎn)上運(yùn)行,從而加快計(jì)算速度。另外,分布式系統(tǒng)具有計(jì)算遷移功能,如果某個(gè)節(jié)點(diǎn)上的負(fù)載太重,則可把其中一些作業(yè)移到其他節(jié)點(diǎn)去執(zhí)行,從而減輕該節(jié)點(diǎn)的負(fù)載。這種作業(yè)遷移稱為負(fù)載平衡。 ?
(3)可靠性高。分布式系統(tǒng)具有高可靠性。如果其中某個(gè)節(jié)點(diǎn)失效了,則其余的節(jié)點(diǎn)可以繼續(xù)操作,整個(gè)系統(tǒng)不會(huì)因?yàn)橐粋€(gè)或少數(shù)幾個(gè)節(jié)點(diǎn)的故障而全體崩潰。因此,分布式系統(tǒng)有很好的容錯(cuò)性能。系統(tǒng)必須能夠檢測(cè)節(jié)點(diǎn)的故障,采取適當(dāng)?shù)氖侄?#xff0c;使它從故障中恢復(fù)過來。
(4)通信方便、快捷。分布式系統(tǒng)中各個(gè)節(jié)點(diǎn)通過一個(gè)通信網(wǎng)絡(luò)互聯(lián)在一起。通信網(wǎng)絡(luò)由通信線路、調(diào)制解調(diào)器和通信處理器等組成,不同節(jié)點(diǎn)的用戶可以方便地交換信息。缺點(diǎn)
存在通信網(wǎng)絡(luò)飽和或信息丟失和網(wǎng)絡(luò)安全問題,方便的數(shù)據(jù)共享同時(shí)意味著機(jī)密數(shù)據(jù)容易被竊取
系統(tǒng)設(shè)計(jì)難點(diǎn)編輯?
1.部分失效問題
由于分布式系統(tǒng)通常由若干部分組成,各個(gè)部分由于各種原因可能發(fā)生故障,如硬件故障、軟件錯(cuò)誤及錯(cuò)誤操作等。如果一個(gè)分布式系統(tǒng)不對(duì)這些故障進(jìn)行有效的處理,系統(tǒng)某一組成部分的故障可能導(dǎo)致整個(gè)系統(tǒng)的癱瘓。 ?
2.性能和可靠性過分依賴于網(wǎng)絡(luò)
由于分布式系統(tǒng)是建立在網(wǎng)絡(luò)之上的,而網(wǎng)絡(luò)本身是不可靠的,可能經(jīng)常發(fā)生故障,網(wǎng)絡(luò)故障可能導(dǎo)致系統(tǒng)服務(wù)的終止。另外,網(wǎng)絡(luò)超負(fù)荷會(huì)導(dǎo)致性能的降低,增加系統(tǒng)的響應(yīng)時(shí)間。
3.缺乏統(tǒng)一控制
一個(gè)分布式系統(tǒng)的控制通常是一個(gè)典型的分散控制,沒有統(tǒng)一的中心控制。因此,分布式系統(tǒng)通常需要相應(yīng)的同步機(jī)制宋協(xié)調(diào)系統(tǒng)中各個(gè)部分的工作。設(shè)計(jì)與實(shí)現(xiàn)一個(gè)對(duì)用戶來說是透明的且具有容錯(cuò)能力的分布式系統(tǒng)是一項(xiàng)具有挑戰(zhàn)性的工作。?
4.難以合理設(shè)計(jì)資源分配策略
在集中式系統(tǒng)中,所有的資源都由操作系統(tǒng)管理和分配,但在分布式系統(tǒng)中,資源屬于各節(jié)點(diǎn),所以調(diào)度的靈活性不如集中式系統(tǒng),資源的物理分布可能與用戶請(qǐng)求的分布不匹配,某些資源可能空閑,而另一些資源可能超載。 ?
5.安全保密性問題
開放性使得分布式系統(tǒng)中的許多軟件接口都提供給用戶,這樣的開放式結(jié)構(gòu)對(duì)于開發(fā)人員非常有價(jià)值,但同時(shí)也為破壞者打開了方便之門。
使用分布式系統(tǒng)主要有:
1.增大系統(tǒng)容量。我們的業(yè)務(wù)量越來越大,而要能應(yīng)對(duì)越來越大的業(yè)務(wù)量,一臺(tái)機(jī)器的性能已經(jīng)無法滿足了,我們需要多臺(tái)機(jī)器才能應(yīng)對(duì)大規(guī)模的應(yīng)用場(chǎng)景。所以,我們需要垂直或是水平拆分業(yè)務(wù)系統(tǒng),讓其變成一個(gè)分布式的架構(gòu)。
2.加強(qiáng)系統(tǒng)可用。我們的業(yè)務(wù)越來越關(guān)鍵,需要提高整個(gè)系統(tǒng)架構(gòu)的可用性,這就意味著架構(gòu)中不能存在單點(diǎn)故障。這樣,整個(gè)系統(tǒng)不會(huì)因?yàn)橐慌_(tái)機(jī)器出故障而導(dǎo)致整體不可用。所以,需要通過分布式架構(gòu)來冗余系統(tǒng)以消除單點(diǎn)故障,從而提高系統(tǒng)的可用性。
3.因?yàn)槟K化,所以系統(tǒng)模塊重用度更高
4.因?yàn)?span style="color:#ff0000;">軟件服務(wù)模塊被拆分,開發(fā)和發(fā)布速度可以并行而變得更快
5.系統(tǒng)擴(kuò)展性更高
6.團(tuán)隊(duì)協(xié)作流程也會(huì)得到改善
?
分布式系統(tǒng)的類型有三種:
1.分布式處理,但只有一個(gè)總數(shù)據(jù)庫,沒有局部數(shù)據(jù)庫
2.分層式處理,每一層都有自己的數(shù)據(jù)庫
3.充分分散的分布式網(wǎng)絡(luò),沒有中央控制部分,各節(jié)點(diǎn)之間的聯(lián)系方式又可以有多種,如松散的聯(lián)接,緊密的聯(lián)接,動(dòng)態(tài)的聯(lián)接,廣播通知式的聯(lián)接等
?
?
什么是分布式系統(tǒng)!以及分布式系統(tǒng)架構(gòu)的優(yōu)缺點(diǎn)
1.從上面的表格可以看到,分布式系統(tǒng)雖然有一些優(yōu)勢(shì),但也存在一些問題
2.架構(gòu)設(shè)計(jì)變得復(fù)雜(尤其是其中的分布式事務(wù))
3.部署單個(gè)服務(wù)會(huì)比較快,但是如果一次部署需要多個(gè)服務(wù),部署會(huì)變得復(fù)雜
4.系統(tǒng)的吞吐量會(huì)變大,但是響應(yīng)時(shí)間會(huì)變長(zhǎng)
5.運(yùn)維復(fù)雜度會(huì)因?yàn)榉?wù)變多而變得很復(fù)雜
6.架構(gòu)復(fù)雜導(dǎo)致學(xué)習(xí)曲線變大
7.測(cè)試和查錯(cuò)的復(fù)雜度增大
8.技術(shù)可以很多樣,這會(huì)帶來維護(hù)和運(yùn)維的復(fù)雜度
9.管理分布式系統(tǒng)中的服務(wù)和調(diào)度變得困難和復(fù)雜
?
?
總結(jié)
- 上一篇: 常见设计模式说明
- 下一篇: 创建守护进程关键步骤