COSCon'19 | 如何設(shè)計(jì)新一代的圖數(shù)據(jù)庫 Nebula
1342
2025-04-02
1??????引言
分布式計(jì)算是計(jì)算機(jī)科學(xué)中研究分布式系統(tǒng)的一個領(lǐng)域。分布式系統(tǒng)組件位于不同的聯(lián)網(wǎng)計(jì)算機(jī)上,它們通過相互傳遞消息來進(jìn)行通信和協(xié)調(diào)行動,組件之間相互作用以實(shí)現(xiàn)共同的目標(biāo)。
分布式系統(tǒng)的三個顯著特征是:組件的并發(fā)性、全局時鐘的缺乏和組件故障的獨(dú)立性。
分布式系統(tǒng)的例子很多,從基于SOA的系統(tǒng)到大型多人在線游戲,再到點(diǎn)對點(diǎn)的應(yīng)用。
2??????分布式系統(tǒng)
"分布式系統(tǒng)"、"分布式編程"、"分布式算法?"等術(shù)語中的?"分布式?"一詞最初指的是計(jì)算機(jī)網(wǎng)絡(luò)。在這個網(wǎng)絡(luò)中,各個計(jì)算機(jī)在物理上分布在一定的地理區(qū)域內(nèi)。
現(xiàn)在這些術(shù)語的使用范圍更廣,甚至有時指的是運(yùn)行在同一臺物理計(jì)算機(jī)上的自主進(jìn)程,并通過消息傳遞進(jìn)行交互。
雖然對分布式系統(tǒng)沒有一個統(tǒng)一的定義,但常用的定義屬性如下:
1.?????????有幾個自主的計(jì)算實(shí)體(計(jì)算機(jī)或節(jié)點(diǎn)),每個實(shí)體都有自己的本地存儲器。
2.?????????實(shí)體之間通過信息傳遞進(jìn)行通信。
3.?????????系統(tǒng)要能夠承受各個計(jì)算機(jī)的發(fā)生故障。
4.?????????系統(tǒng)的結(jié)構(gòu)(網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、網(wǎng)絡(luò)延遲、計(jì)算機(jī)數(shù)量)事先并不知道,系統(tǒng)可能由不同種類的計(jì)算機(jī)和網(wǎng)絡(luò)鏈路組成,系統(tǒng)在執(zhí)行分布式程序的過程中可能會發(fā)生變化。
5.?????????每臺計(jì)算機(jī)對系統(tǒng)只有有限的、不完整的資源。每臺計(jì)算機(jī)可能只知道輸入的一部分。
此外,我們還需要關(guān)注:
l??分布式系統(tǒng)可有一個共同的目標(biāo),比如解決一個大型的計(jì)算問題。用戶就會把自主處理器的集合視為一個單元。
l??或者,每臺計(jì)算機(jī)可有自己的用戶,有各自的需求,分布式系統(tǒng)的目的是協(xié)調(diào)共享資源的使用或?yàn)橛脩籼峁┩ㄐ欧?wù)。
l??在分布式系統(tǒng)內(nèi)運(yùn)行的計(jì)算機(jī)程序稱為分布式程序(分布式編程就是編寫這種程序的過程)。消息傳遞機(jī)制有很多不同類型的實(shí)現(xiàn),包括純HTTP、類似RPC的連接器和消息隊(duì)列等。
l??分布式計(jì)算也指利用分布式系統(tǒng)來解決計(jì)算問題。在分布式計(jì)算中,一個問題被分成許多任務(wù),每個任務(wù)由一臺或多臺計(jì)算機(jī)解決,這些計(jì)算機(jī)通過消息傳遞相互通信。
2.1????并行和分布式計(jì)算的關(guān)聯(lián)
分布式系統(tǒng)是指有共同工作目標(biāo)的網(wǎng)絡(luò)計(jì)算機(jī)群。術(shù)語"并行計(jì)算?"和?"分布式計(jì)算?"有許多重疊,它們之間不存在明確的區(qū)別。"并行"和?"分布式"都可以被描述為同一個系統(tǒng)。
典型的分布式系統(tǒng)中的處理器以并行方式并發(fā)運(yùn)行。
并行計(jì)算可以看作是分布式計(jì)算的一種特殊的緊密耦合形式,而分布式計(jì)算則可以看作是并行計(jì)算的一種松散耦合形式,盡管如此,可以用以下標(biāo)準(zhǔn)將并發(fā)系統(tǒng)粗略地劃分為?"并行?"或?"分布"。
1.?????????在并行計(jì)算中,所有的處理器都可以訪問共享內(nèi)存,以交換處理器之間的信息。
2.?????????在分布式計(jì)算中,每個處理器都有自己的私有內(nèi)存(分布式內(nèi)存)。信息是通過處理器之間傳遞消息來交換的。
(a)、(b):分布式系統(tǒng)。
(c):并行系統(tǒng)。
3??????為什么要用分布式系統(tǒng)
使用分布式系統(tǒng)和分布式計(jì)算的原因可包括:
3.1????計(jì)算需求
某一應(yīng)用的計(jì)算需求可能要求使用連接幾臺計(jì)算機(jī)的通信網(wǎng)絡(luò):例如,在一個產(chǎn)生的數(shù)據(jù)是另一個地點(diǎn)需要的數(shù)據(jù)。
3.2????成本效益和單點(diǎn)故障
在許多情況下,原則上可以使用單臺計(jì)算機(jī),但出于實(shí)際原因,使用分布式系統(tǒng)是更好的。例如,與單臺高端計(jì)算機(jī)相比,通過使用多臺低端計(jì)算機(jī)組成的集群來獲得所需的性能水平可能更具有成本效益。
因?yàn)闆]有單點(diǎn)故障問題,可提供比非分布式系統(tǒng)更高的可靠性。
3.3????擴(kuò)展性強(qiáng)
此外,分布式系統(tǒng)可能比單處理器系統(tǒng)更容易擴(kuò)展和管理。
4??????分布式架構(gòu)
分布式計(jì)算采用了各種硬件和軟件架構(gòu)。
在較低的層次上,需要將多個CPU與某種網(wǎng)絡(luò)互連,不管該網(wǎng)絡(luò)是印在電路板上還是由松散耦合的設(shè)備和電纜組成。
在更高的層次上,需要將運(yùn)行在這些CPU上的進(jìn)程與某種通信系統(tǒng)互連起來。
分布式編程通常分為幾種基本架構(gòu):
4.1????客戶端-服務(wù)器
這是智能客戶端與服務(wù)器聯(lián)系獲取數(shù)據(jù),然后將數(shù)據(jù)格式化并顯示給用戶的架構(gòu)。
4.2????三層
這種架構(gòu)把系統(tǒng)分為表現(xiàn)層,邏輯層和數(shù)據(jù)層。這簡化了應(yīng)用程序的部署。大多數(shù)Web應(yīng)用都是三層的。
4.3????n層
N層架構(gòu),通常指的是Web應(yīng)用,它進(jìn)一步將其請求轉(zhuǎn)發(fā)給其他企業(yè)服務(wù)。3層架構(gòu)是N層架構(gòu)的特殊形式。
4.4????Peer-to-peer
架構(gòu)中沒有專門的機(jī)器提供服務(wù)或管理網(wǎng)絡(luò)資源,而是將所有的責(zé)任統(tǒng)一分配給所有的機(jī)器,稱為對等機(jī)。
對等體既可以作為客戶機(jī),也可以作為服務(wù)器。?這種架構(gòu)的例子包括BitTorrent和比特幣網(wǎng)絡(luò)。
4.5????并發(fā)進(jìn)程
分布式計(jì)算架構(gòu)的另一個基本方面是并發(fā)進(jìn)程之間的通信和協(xié)調(diào)工作的方法。
通過各種消息傳遞協(xié)議,進(jìn)程之間可以直接通信,通常是主/從關(guān)系。
4.6????數(shù)據(jù)庫為中心
另外,"以數(shù)據(jù)庫為中心"的架構(gòu)可以利用共享數(shù)據(jù)庫,使分布式計(jì)算不需要任何形式的進(jìn)程間直接通信,特別是以數(shù)據(jù)庫為中心的架構(gòu),在一個允許實(shí)時環(huán)境中繼的模式化架構(gòu)中提供關(guān)系處理分析。
這就實(shí)現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)庫參數(shù)內(nèi)和參數(shù)外的分布式計(jì)算功能。
5??????分布式系統(tǒng)的例子
1.?????????電信網(wǎng)絡(luò)。
a)????????電話網(wǎng)和蜂窩網(wǎng)絡(luò);
b)????????互聯(lián)網(wǎng)等計(jì)算機(jī)網(wǎng)絡(luò)。
c)?????????無線傳感器網(wǎng)絡(luò)。
d)????????路由算法。
2.?????????網(wǎng)絡(luò)應(yīng)用。
a)????????萬維網(wǎng)和點(diǎn)對點(diǎn)網(wǎng)絡(luò);
b)????????大型多人在線游戲和虛擬現(xiàn)實(shí)社區(qū)。
c)?????????分布式數(shù)據(jù)庫和分布式數(shù)據(jù)庫管理系統(tǒng)。
d)????????網(wǎng)絡(luò)文件系統(tǒng)。
e)????????分布式緩存,如突發(fā)緩沖器。
f)?????????分布式信息處理系統(tǒng),如銀行系統(tǒng)和航空預(yù)訂系統(tǒng)。
3.?????????實(shí)時過程控制。
a)????????飛機(jī)控制系統(tǒng)。
b)????????工業(yè)控制系統(tǒng)。
4.?????????并行計(jì)算。
a)????????科學(xué)計(jì)算,包括集群計(jì)算、網(wǎng)格計(jì)算、云計(jì)算等。
b)????????計(jì)算機(jī)圖形學(xué)中的分布式渲染。
6??????分布式系統(tǒng)的優(yōu)缺點(diǎn)
6.1????分布式系統(tǒng)的優(yōu)點(diǎn)
分布式系統(tǒng)的一些優(yōu)點(diǎn)如下:
1.?????????分布式系統(tǒng)中的所有節(jié)點(diǎn)都是相互連接的。所以節(jié)點(diǎn)可以很容易地與其他節(jié)點(diǎn)共享數(shù)據(jù)。
2.?????????更多的節(jié)點(diǎn)可以很容易地添加到分布式系統(tǒng)中,即可以根據(jù)需要進(jìn)行擴(kuò)展。
3.?????????一個節(jié)點(diǎn)的故障不會導(dǎo)致整個分布式系統(tǒng)的失敗。其他節(jié)點(diǎn)仍然可以相互通信。
4.?????????打印機(jī)等硬件資源可以與多個節(jié)點(diǎn)共享,而不是只限于一個節(jié)點(diǎn)。
6.2????分布式系統(tǒng)的缺點(diǎn)
分布式系統(tǒng)的一些缺點(diǎn)如下:
1.?????????在分布式系統(tǒng)中很難提供足夠的安全,因?yàn)楣?jié)點(diǎn)以及連接都需要安全。
2.?????????一些消息和數(shù)據(jù)在從一個節(jié)點(diǎn)轉(zhuǎn)移到另一個節(jié)點(diǎn)時,可能會在網(wǎng)絡(luò)中丟失。
3.?????????與單用戶系統(tǒng)相比,連接到分布式系統(tǒng)的數(shù)據(jù)庫是相當(dāng)復(fù)雜和難以處理的。
4.?????????如果分布式系統(tǒng)的所有節(jié)點(diǎn)都試圖同時發(fā)送數(shù)據(jù),網(wǎng)絡(luò)中可能會出現(xiàn)過載現(xiàn)象。
7??????參考
https://blog.stackpath.com/distributed-system/
https://www.freecodecamp.org/news/a-thorough-introduction-to-distributed-systems-3b91562c9b3c/
https://en.wikipedia.org/wiki/Distributed_computing
https://www.confluent.io/learn/distributed-systems/
分布式 架構(gòu)設(shè)計(jì)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。