区块链:P2P技术是什么
摘要:包括比特幣、以太坊等在內的去中心化的區(qū)塊鏈平臺,其底層網(wǎng)絡都是采用的P2P技術實現(xiàn),每個節(jié)點都是對等的。而本文,則先通過介紹P2P技術的特點和發(fā)展歷史,讓大家對P2P這個技術的來龍去脈有一個初步的認識和了解。然后在下一篇文章中,我會詳細介紹第三代P2P技術(DHT)—Kademlia算法的實現(xiàn)原理。
1.p2p的定義
? ? ? ??P2P是peer-to-peer的簡稱,又稱為點對點技術,是沒有中心服務器、依靠用戶群節(jié)點進行信息交換的對等式網(wǎng)絡。區(qū)別于傳統(tǒng)的C/S中央服務器結構,P2P網(wǎng)絡中每一個用戶節(jié)點即是客戶端又是服務端,能同時作為服務器給其他節(jié)點提供服務。
有中心服務器的中央網(wǎng)絡系統(tǒng)(左)和無中心服務器的對等式網(wǎng)絡(右)
2.p2p的特點
? ? ? ? 在傳統(tǒng)的C/S模式網(wǎng)絡系統(tǒng)中,客戶端之間的交互需要依賴中心化的服務器進行。當網(wǎng)絡規(guī)模變得龐大時,這些中心服務器的負擔就會越來越重,很容易成為網(wǎng)絡瓶頸。而且一旦服務器崩潰,就會造成整個網(wǎng)絡癱瘓(單點故障的風險)。而P2P網(wǎng)絡由于沒有中心服務器,不存在單點性能上的瓶頸,每個節(jié)點在充當客戶端的同時,也可以作為服務端給其他相鄰節(jié)點提供服務,極大地提高了資源的利用率。
? ? ? ? 總結來說,P2P網(wǎng)絡的特點如下:
(1)可擴展性。在P2P網(wǎng)絡中,用戶可以隨時加入、離開網(wǎng)絡。而且隨著用戶節(jié)點的加入,系統(tǒng)整體的服務能力也在相應的提高。例如p2p下載中,加入的用戶越多,則P2P網(wǎng)絡中提供的資源就越多,下載速度就越來越快。
(2)健壯性。由于P2P不存在中心化服務器,天生就具備耐攻擊和高容錯的特點。即使網(wǎng)絡中某個節(jié)點被攻擊或下線,也不影響整個系統(tǒng)的正常運行。因為P2P網(wǎng)絡中每個節(jié)點都可以充當服務端的角色。
(3)高性價比。采用P2P結構的網(wǎng)絡,可以有效地利用互聯(lián)網(wǎng)中大量分散的普通用戶節(jié)點。充分利用這些普通節(jié)點中閑散的CPU、帶寬、存儲資源,從而達到高性能計算和海量存儲的目的。例如:迅雷旗下的星域CDN產品,就是充分利用每一個普通用戶機器的閑散網(wǎng)絡資源,從而提供一個高性價比的服務。類似的還有360共享云、國外的sia網(wǎng)盤等。
(4)隱私保護。在P2P網(wǎng)絡中,由于信息的傳輸分散在各個節(jié)點之間,而無需經(jīng)過中心服務器。這樣就減少用戶隱私信息被竊聽和泄露的風險。
(5)負載均衡。由于P2P網(wǎng)絡中,資源分散存儲在多個節(jié)點上,而每個節(jié)點又都可以充當服務器的角色。當某個節(jié)點需要獲取資源時,只需要向相鄰節(jié)點發(fā)送請求即可,很好地實現(xiàn)了整個網(wǎng)絡的負載均衡。
3.p2p的主要功能
? ? ? ? P2P網(wǎng)絡的主要功能可以分為如下3種:
- 數(shù)據(jù)發(fā)布和傳輸
- 數(shù)據(jù)存儲和檢索
- 分布式數(shù)據(jù)處理
(1)數(shù)據(jù)發(fā)布和傳輸有3中方式,分別是一對一(如即時通訊)、一對多(如群組通信和消息廣播)和多對多(如內容分發(fā)應用:BT、PPS等)
(2)數(shù)據(jù)存儲和檢索分為基于結構化的P2P網(wǎng)絡方法和基于非結構化的P2P網(wǎng)絡方法。結構化的P2P網(wǎng)絡也就是基于分布式哈希表(DHT)的P2P網(wǎng)絡,這個也是目前應用最廣泛的,它的網(wǎng)絡拓撲結構是確定的。而非結構化的P2P網(wǎng)絡的資源存儲通常與網(wǎng)絡拓撲結構無關,例如Gnutella。
(3)目前,大多數(shù)分布式數(shù)據(jù)處理技術采用的是master/slave的架構。而基于P2P網(wǎng)絡,也能夠進行分布式的數(shù)據(jù)處理。
4.p2p的發(fā)展歷史
? ? ? ? P2P技術的發(fā)展可以分為如下三個階段:
(1)第一階段:集中式對等網(wǎng)絡
? ? ? ? 這種網(wǎng)絡采用的是中心化的拓撲結構,由于文件的索引信息都是存儲在中央服務器上,每個子節(jié)點都需要連接中央服務器才可以找到資源。它最大的優(yōu)點是維護簡單、索引速度快。但是由于整個網(wǎng)絡嚴重依賴于中央服務器,容易造成性能瓶頸和單點故障的問題。
典型代表是:napster。
(2)第二階段:非結構化的分布式網(wǎng)絡
? ? ? ? 這種網(wǎng)絡采用Flooding搜索算法,每次搜索都把要查詢的消息廣播給網(wǎng)絡上的所有節(jié)點。當一個節(jié)點要下載某個文件的時候,這個節(jié)點會以文件名或者關鍵字生成一個查詢,并把查詢發(fā)送給所有跟他相連的節(jié)點。如果這些節(jié)點存在文件,則跟這個節(jié)點建立連接,如果不存在,則繼續(xù)向相鄰的節(jié)點轉發(fā)這個查詢,直到找到文件位置,過程如下圖所示。
? ? ? ? 可以發(fā)現(xiàn),當網(wǎng)絡規(guī)模變大以后,這種搜索方式會引發(fā)”廣播風暴”,嚴重消耗網(wǎng)絡帶寬和節(jié)點的系統(tǒng)資源。雖然避免了集中式對等網(wǎng)絡的“單點故障”問題,但是效率卻很低下。
? ? ? ? 典型代表:Gnutella早期版本。
(3)第三階段:結構化的分布式網(wǎng)絡
? ? ? ? 目前采用最廣泛的就是結構化的分布式網(wǎng)絡,也就是基于DHT(分布式哈希表)的網(wǎng)絡。DHT為了達到Napster的效率和正確性,以及Gnutella的分散性,使用了較為結構化的基于鍵值對的路由方法(如下圖所示)。
? ? ? ? 目前實現(xiàn)了DHT協(xié)議的有Kademlia和Chord算法,其中Kad算法由于簡單易用而被廣泛使用,其中比特幣和以太坊網(wǎng)絡中的P2P網(wǎng)絡采用的就是Kad算法。這個也是我們下一篇文章要重點將的內容,這里我們就不展開講解,留到下一篇文章。
5.p2p的應用
(1)文件內容共享和下載。
? ? ? ? 利用P2P技術可以使計算機之間不通過服務器直接進行內容共享和數(shù)據(jù)分發(fā),使得互聯(lián)網(wǎng)上任意兩臺機器間共享數(shù)據(jù)成為可能。例如Napster、Gnutella、eDonkey、eMule、Maze、BT,以及現(xiàn)在PPS、騰訊視頻客戶端等采用的P2P流媒體技術,使得播放速度更加流暢。
(2)計算能力和存儲共享。
? ? ? ? 基于P2P網(wǎng)絡的分布式結構構造出分布式的存儲系統(tǒng)實現(xiàn)存儲共享,提供高效率、高性價比、負載均衡的文件存取功能,例如國外的Sia、Storj等分布式云存儲平臺,不依賴第三方的大型集中存儲空間,避免了數(shù)據(jù)泄露、保證了安全性。同時由于任何人的主機都可以提供存儲服務,降低了門檻,大幅降低了存儲的成本。如下,采用分布式存儲的Storj價格是每個月$0.015而亞馬遜提供的AWS價格是$0.023。
? ? ? ? 同時也可以共享CPU處理能力。例如360的共享云計劃和星域CDN等,充分利用每個人機器的閑散計算資源來提供計算服務。
(3)基于P2P的即時通訊。
? ? ? ? 例如目前的Skype通話軟件就是從連接建立和數(shù)據(jù)傳輸都采用P2P實現(xiàn),保證了良好的通話質量。
(4)基于P2P方式的協(xié)同處理與服務共享平臺。
? ? ? ? 常見的協(xié)同處理有視頻會議、共享白板、協(xié)同協(xié)作等,而基于P2P技術的同樣也可以實現(xiàn)上述功能,不同的是,這種實現(xiàn)方式不需要中心服務器,參與協(xié)同工作的計算機之間可以直接建立點對點的連接。例如被微軟收購的Groove協(xié)同軟件平臺。
總結
以上是生活随笔為你收集整理的区块链:P2P技术是什么的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 群组管理工具
- 下一篇: 现场总线过程控制系统实验装置