區塊鏈技術:分佈式系統

我們在前面的文章中看到,鏈表為區塊鏈提供了概念基礎,其中“區塊”是一個數據包,而區塊通過某種類型的鏈接機制(如指針、引用、地址等)串聯在一起。在第2部分中,我們將看到這個簡單的概念如何產生強大的思想,為分佈式系統奠定基礎。


區塊鏈技術:分佈式系統


當鏈表中的一個鏈接或分佈式系統中的一臺計算機(又名“節點”)響應緩慢、 被黑客攻擊或崩潰時,會發生什麼?完整的鏈如何從這樣的悲劇事件中恢復?這就引出了分佈式系統中的容錯概念。一旦對其中一個節點中的數據進行了更改,我們如何確保相同的信息與其他節點一致?這就引入了對協商共識的要求。

將鏈的類比推進了一步來看,管理鏈的算法經過精心設計,不會破壞鏈。也就是說將附加鏈連接到開始和結束,是一個簡單的操作(我們只需要確保標記正確性,表明開始和結束的列表更新是正確的即可)。然而,刪除一個鏈或添加一個鏈是有點棘手的。當需要刪除或插入列表的中間位置時,會有一點複雜,但是對於已知的解決方案來說,這是一個眾所周知的問題。我們將不在本文中討論細節,因為本文的目的不是描述這些操作,而是傳達一個高級的歷史視角。

在分佈式系統中,容錯成為一個非常重要的概念。從某種意義上說,它是在一臺計算機上管理鏈表的邏輯擴展。顯然,在實際應用中,分佈式系統中的每個節點都是經濟實體,它們依賴於其他經濟實體來實現其目標。系統內的故障必須儘可能地減少。當故障不可避免時,恢復必須儘可能迅速和完整。計算機科學家在20世紀50年代中期開始研究容錯方法,結果在捷克斯洛伐克出現了第一臺容錯計算機SAPO。

除了容錯之外,當需要向分佈式系統添加信息時(有點像添加、刪除或更新鏈表的元素),不同的方面必須達成一致。達成協議的原因是,進入“鏈表”的數據是由這些當事人之間的交易產生的數據。沒有協議的話就是一個很混亂的概念舉個例子:我的節點會記錄我給你發送了90美元,而你的節點只會記錄19美元!因此交易雙方之間應達成協議。分佈式系統中一個更強的要求是,一旦雙方同意某件事,在沒有另一方或多方同意的情況下,任何一方都不能更改已同意的數據。這一要求的最強版本是“不變性”,在技術上不可能對同意並提交給鏈的數據進行任何更改。

容錯和共識

因此,分佈式系統在不同程度上需要不同的容錯性、共識性和不變性,這取決於業務需求。容錯和協商共識的機制從早期就開始發展。顯著的進展是:

· Lamport、Shostak和Pease在1982年開發的拜占庭容錯(BFT),用於處理分佈式系統中的一個或多個節點出現故障或惡意的情況。

· 工作量證明(POW),在1993年首次被描述,這個術語在1999年被創造出來,它是一種為惡意攻擊提供經濟上的阻礙技術。1992年,Cynthia Dwork和Moni Naor提出了POW的前身,作為一種打擊垃圾郵件的手段——早在1992年,這個問題就已經是一個嚴重的麻煩了!他們的解決方案是要求發件人解決一個計算問題,這個問題對於正常發送電子郵件來說足夠簡單,但對於發送大量垃圾郵件來說,計算成本就變得非常昂貴。

· Hashcash是一種POW算法,由Adam在1997年提出。2008年,中本聰(Satoshi Nakamoto)將其作為比特幣中POW的基礎,讓更多的人認識到了POW。

· 1999年Miguel Castro 和Barbara Liskov發明了高性能的BFT,稱為實用拜占庭容錯(PBFT);等等。

· Paxos是一個共識算法家族, Dwork、Lynch和Stockmeyer在1988年的一篇文章中有過描述,並於1998年由Leslie Lamport首次發表。

· Raft consensus算法由Diego Ongaro和John Ousterhout開發。它於2014年發佈,旨在成為一個更容易理解的Paxos替代品。

狀態機複製(SMR)是容錯框架,而協商共識是解決衝突或在狀態值上達成一致的一種方法。SMR最早出現在20世紀80年代初,1984年Leslie Lamport發表了一篇很有影響力的論文而被人們知曉。


分享到:


相關文章: