從4個(gè)方面分析:節(jié)點(diǎn)與節(jié)點(diǎn)之間是如何建立連接的?

在分布式系統(tǒng)中每個(gè)終端節(jié)點(diǎn)都是平等的,不存在任何中心化節(jié)點(diǎn)幫助它們互相連接,那當(dāng)一個(gè)新的節(jié)點(diǎn)要加入網(wǎng)絡(luò)中來(lái)時(shí),它該如何找到自己的小伙伴的呢?
我們知道比特幣網(wǎng)絡(luò)采用了基于互聯(lián)網(wǎng)的點(diǎn)對(duì)點(diǎn)(P2P:peer-to-peer)分布式網(wǎng)絡(luò),但是你知道節(jié)點(diǎn)與節(jié)點(diǎn)之間是如何建立連接的嗎?
本期將會(huì)對(duì)區(qū)塊鏈的分布式網(wǎng)絡(luò)中,節(jié)點(diǎn)與節(jié)點(diǎn)之間如何建立連接進(jìn)行介紹,希望對(duì)你有幫助。
一、分布式網(wǎng)絡(luò)基本概念
在介紹分布式網(wǎng)絡(luò)之前我們先明確它的基本概念,分布式網(wǎng)絡(luò)是什么?
分布式網(wǎng)絡(luò)也叫網(wǎng)狀網(wǎng)絡(luò),它和中心化網(wǎng)絡(luò)(中央控制式網(wǎng)絡(luò))相對(duì)應(yīng),是一套全新的網(wǎng)絡(luò)結(jié)構(gòu)。分布式網(wǎng)絡(luò)是由分布在不同地點(diǎn)的多個(gè)終端節(jié)點(diǎn)互相連接而成,形成縱橫交錯(cuò)的網(wǎng)狀結(jié)構(gòu),在這種網(wǎng)狀結(jié)構(gòu)中無(wú)中心節(jié)點(diǎn)。
上面是中心化網(wǎng)絡(luò)和分布式網(wǎng)絡(luò)對(duì)比圖,中心化網(wǎng)絡(luò)中終端與終端之間連接通訊,需要經(jīng)過(guò)中央處理器統(tǒng)一處理,分布式網(wǎng)絡(luò)中終端節(jié)點(diǎn)之間可以直接建立連接。
分布式網(wǎng)絡(luò)相較于中心化網(wǎng)絡(luò)的優(yōu)點(diǎn)在于:它沒(méi)有中心化控制中心,不會(huì)因?yàn)橹行姆?wù)器遭到破壞而造成整體崩潰。當(dāng)分布式網(wǎng)絡(luò)中的某個(gè)節(jié)點(diǎn)損壞時(shí),通信信息可通過(guò)其他的節(jié)點(diǎn)進(jìn)行傳輸,具有較高的可靠性和傳輸速度。
二、一個(gè)終端如何加入?yún)^(qū)塊鏈網(wǎng)絡(luò)?
在分布式系統(tǒng)中每個(gè)終端節(jié)點(diǎn)都是平等的,不存在任何中心化節(jié)點(diǎn)幫助它們互相連接,那當(dāng)一個(gè)新的節(jié)點(diǎn)要加入網(wǎng)絡(luò)中來(lái)時(shí),它該如何找到自己的小伙伴的呢?
以比特幣網(wǎng)絡(luò)為例:安裝了比特幣客戶端的終端,可認(rèn)為是一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)。
舉個(gè)例子:來(lái)看一個(gè)新節(jié)點(diǎn)A是如何加入比特幣網(wǎng)絡(luò)的,這個(gè)節(jié)點(diǎn)在啟動(dòng)之后會(huì)做如下的幾件事。
1. 告訴伙伴它在哪?
如果節(jié)點(diǎn)A是第一次連入比特幣網(wǎng)絡(luò),那它首先會(huì)通過(guò)一種算法找到距離它最近的一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)。
節(jié)點(diǎn)將一條包含自身IP地址的消息發(fā)送給相鄰節(jié)點(diǎn),相鄰的節(jié)點(diǎn)再將這條消息向與自己連接的節(jié)點(diǎn)進(jìn)行分發(fā)廣播,以此類推,最終導(dǎo)致新節(jié)點(diǎn)的IP地址在全網(wǎng)進(jìn)行分發(fā),每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)都知道節(jié)點(diǎn)A的地址,可以與之建立直接連接。
2. 找到伙伴在哪
節(jié)點(diǎn)A在找到相鄰最近的節(jié)點(diǎn)之后,還會(huì)向與它相鄰的節(jié)點(diǎn)索要它們已知節(jié)點(diǎn)的IP地址列表,拿到這些節(jié)點(diǎn)的IP地址列表之后,節(jié)點(diǎn)A便可以主動(dòng)與這些節(jié)點(diǎn)建立直接的連接。
3. 更快的找到伙伴
當(dāng)節(jié)點(diǎn)A加入到網(wǎng)絡(luò)中之后,一般會(huì)與正活躍的節(jié)點(diǎn)連接。如果難以找到這樣的節(jié)點(diǎn),節(jié)點(diǎn)A會(huì)根據(jù)自己得到的IP地址列表,來(lái)找到那些長(zhǎng)期穩(wěn)定運(yùn)行的節(jié)點(diǎn),這種節(jié)點(diǎn)就是種子節(jié)點(diǎn),通過(guò)種子節(jié)點(diǎn)能夠幫助節(jié)點(diǎn)A更快速的發(fā)現(xiàn)網(wǎng)絡(luò)中的其他節(jié)點(diǎn)。
三、比特幣網(wǎng)絡(luò)中不同節(jié)點(diǎn)的數(shù)據(jù)如何同步
比特幣網(wǎng)絡(luò)中的節(jié)點(diǎn)在連接到相鄰的節(jié)點(diǎn)之后,首先會(huì)和相鄰的節(jié)點(diǎn)同步數(shù)據(jù),然后再去和更多的節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交換和同步。
在節(jié)點(diǎn)與節(jié)點(diǎn)之間進(jìn)行數(shù)據(jù)同步的過(guò)程中會(huì)根據(jù)一個(gè)哈希值(可以暫時(shí)理解為一種獨(dú)一無(wú)二的數(shù)據(jù)標(biāo)記,后面期刊中會(huì)詳細(xì)介紹)來(lái)判斷誰(shuí)的數(shù)據(jù)為最新的數(shù)據(jù)。
如果節(jié)點(diǎn)發(fā)現(xiàn)本身的數(shù)據(jù)不是最新的,就會(huì)尋找擁有最新數(shù)據(jù)的節(jié)點(diǎn)進(jìn)行下載。如果發(fā)現(xiàn)自己的數(shù)據(jù)為最新數(shù)據(jù),則會(huì)告訴其他節(jié)點(diǎn)需要從它這里補(bǔ)充數(shù)據(jù)。其他的節(jié)點(diǎn)下載數(shù)據(jù)并驗(yàn)證通過(guò)之后,將會(huì)更新到自己的本地?cái)?shù)據(jù)中。
通過(guò)這種方式能保證網(wǎng)絡(luò)中的所有節(jié)點(diǎn)都能及時(shí)得到最新數(shù)據(jù)。
四、總結(jié)
分布式是區(qū)塊鏈的核心,我們通過(guò)了解節(jié)點(diǎn)之間如何建立連接,應(yīng)該體會(huì)到分布式它不僅僅是一種網(wǎng)路架構(gòu),更是一種先進(jìn)的思想!
點(diǎn)對(duì)點(diǎn)之間的影響通過(guò)網(wǎng)絡(luò)形成了非線性的因果關(guān)系,整個(gè)網(wǎng)絡(luò)形成了去中心,自組織的形態(tài),這是事物發(fā)展的必然過(guò)程。更加高效、更加平等、更加低成本是新制度進(jìn)化的必然方向。
分布式思想可能給我們帶來(lái)的不僅僅是科技上的革命,更可能會(huì)帶來(lái)整個(gè)人類社會(huì)結(jié)構(gòu)的改變。
讓我們拭目以待!
作者:liheng,區(qū)塊鏈探索者、互聯(lián)網(wǎng)產(chǎn)品經(jīng)理,超級(jí)個(gè)體修煉中,只創(chuàng)作對(duì)用戶有價(jià)值的內(nèi)容
本文由 @liheng 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
666