我們在前面的文章中看到,連結串列為提供了概念基礎,其中“區塊”是一個資料包,而區塊透過某種型別的連結機制(如指標、引用、地址等)串聯在一起。在第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發表了一篇很有影響力的論文而被人們知曉。
更多區塊鏈資訊:www.qukuaiwang.com.cn/news