區(qū)塊鏈那些事(一)

區(qū)塊鏈系統(tǒng)厘贼,首先是一個分布式系統(tǒng)界酒。首要面臨的問題就是一致性的保障。

一致性問題

定義
一致性(consistency)是指對于分布式系統(tǒng)中的多個節(jié)點嘴秸,給定一系列操作毁欣,在約定協(xié)議的保障下,試圖是的它們對結(jié)果處理達(dá)成"某種程度"的認(rèn)同。

理想情況下岳掐,各個服務(wù)節(jié)點嚴(yán)格遵循相同的處理協(xié)議凭疮,構(gòu)成相同的處理狀態(tài)機(jī)制,給定相同的初始狀態(tài)和輸入序列岩四,則可以保障在處理過程中每個環(huán)節(jié)的結(jié)果都是相同的(無論是對錯)哭尝。

一致性并不代表結(jié)果正確與否,而是系統(tǒng)對外呈現(xiàn)一致的狀態(tài)剖煌。
挑戰(zhàn)
節(jié)點間的通信網(wǎng)絡(luò)是不可靠的材鹦,包括消息延遲逝淹、亂序、內(nèi)容錯誤等
節(jié)點處理時間無法保障桶唐,結(jié)果會出現(xiàn)錯誤甚至自身宕機(jī)
采用同步可以簡化這一序列栅葡,但會嚴(yán)重降低分布式系統(tǒng)的可擴(kuò)展性,甚至退化為單點系統(tǒng)尤泽。
將可能引發(fā)不一致的并行操作進(jìn)行串行化也成為解決一致性問題的基礎(chǔ)思路
一致性要求

分布式系統(tǒng)達(dá)成一致需要滿足:

可終止性(termination): 一致結(jié)果需在有限時間內(nèi)完成欣簇;
約同性(agreement):不同節(jié)點最終完成決策的結(jié)果是相同的
合法性(validity):決策的結(jié)果必須是某個節(jié)點提出的提案。
可終止性:有限時間內(nèi)保障服務(wù)可用坯约,完成決策熊咽。

約同性:要么不給出結(jié)果,要么給出的結(jié)果必定是達(dá)成了共識的闹丐,保障安全性(safety)

合法性:達(dá)成的結(jié)果必須是節(jié)點執(zhí)行操作的結(jié)果横殴。

一般來說一致性包括:強(qiáng)一致性和最終一致性,對一致性要求越強(qiáng)往往會造成越弱的處理性能卿拴,以及越差的可擴(kuò)展性衫仑。

帶約束的一致性

順序一致性: 一種比較強(qiáng)的約束,保證所有進(jìn)程看到的全局執(zhí)行順序的一致堕花,并且每個進(jìn)程看到自身的執(zhí)行順序跟實際發(fā)生順序一致文狱。比如 A->B->C 不能出現(xiàn) A->C->B.
順序一致性限制了各個進(jìn)程內(nèi)指令的偏序關(guān)系,不同的進(jìn)程間按照物理時間進(jìn)行全局排序缘挽。
線性一致性:在順序一致性前提下加強(qiáng)了進(jìn)程間的操作排序瞄崇,形成全局唯一順序,通常依賴于全局的時鐘或鎖到踏,具有很強(qiáng)的原子性保證杠袱。
最終一致性(弱一致性)

由于強(qiáng)一致性比較難實現(xiàn),實際中會適當(dāng)放寬對一致性的要求窝稿,進(jìn)而降低系統(tǒng)實現(xiàn)的難度楣富。保證系統(tǒng)總會某一個時刻,達(dá)到一致的狀態(tài)。

共識算法

共識(consensus)經(jīng)常會和一致性(consistency)放在一起討論伴榔,但兩者含義嚴(yán)謹(jǐn)?shù)刂v并不相同纹蝴。

一致性:分布式系統(tǒng)中多個副本對外呈現(xiàn)數(shù)據(jù)的狀態(tài)。
共識:分布式系統(tǒng)中多個節(jié)點之間踪少,彼此對某個狀態(tài)達(dá)成一致結(jié)果的過程塘安。
一致性描述的是結(jié)果狀態(tài),共識則是達(dá)成結(jié)果的一種手段援奢;達(dá)成共識并不意味著保障了一致性兼犯。
含義
共識算法是對某個提案大家達(dá)成一致意見過程的解決方案。對分布式系統(tǒng)來說,各個節(jié)點通常是相同的確定性狀態(tài)機(jī)模型(又稱狀態(tài)機(jī)復(fù)制問題state-machine replication)切黔,從相同初始狀態(tài)開始接收相同順序的指令砸脊,則可以保證相同的結(jié)果狀態(tài)。

挑戰(zhàn)
不同節(jié)點之間通信存在延遲(光速物理限制纬霞,通信處理延遲)凌埂,并且任意環(huán)節(jié)都可能存在故障,比如網(wǎng)絡(luò)中斷诗芜、節(jié)點發(fā)生故障瞳抓、甚至惡意節(jié)點偽造信息等

常見算法

解決兩種類型問題:

1、非拜占庭錯誤(non-byzantine fault)或故障錯誤(crash fault): 出現(xiàn)故障(crash)/不響應(yīng)(fail-stop),但不會偽造信息的情況

2伏恐、拜占庭問題(Byzantine Fault): 偽造信息惡意響應(yīng)的情況孩哑,對應(yīng)節(jié)點稱為拜占庭節(jié)點。

根據(jù)上面解決錯誤情況(是否為拜占庭問題)翠桦,共識算法分為:Crash Fault Tolerance(CFT)類算法和Byzantine Fault Tolerance(BFT)類算法臭笆。

非拜占庭錯誤: Paxos、Raft及其變種秤掌,此類算法容錯往往比較好、處理較快鹰霍,容忍不超過一半的故障節(jié)點闻鉴。

容忍拜占庭錯誤: PBFT (Practical Byzantine Fault Tolerance ) 為代表的確定性系列算法、 PoW 為代表的概率算法等茂洒。確定性算法孟岛,一旦達(dá)成對某個結(jié)果的共識就不可逆轉(zhuǎn),共識即是最終結(jié)果督勺;概率類算法渠羞,共識結(jié)果是臨時的,隨時間推移或某種強(qiáng)化智哀,共識結(jié)果被推翻概率越來越小次询,成為事實上的最終結(jié)果。容錯性能比較差瓷叫,容忍不超過1/3的故障節(jié)點屯吊。

實踐中,一致性的結(jié)果往往還需要客戶端的額外支持摹菠,典型情況如通過訪 問 足夠多個服務(wù)節(jié)點來比對驗證盒卸,確保獲取共識后的正確結(jié)果 。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末次氨,一起剝皮案震驚了整個濱河市蔽介,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖虹蓄,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件犀呼,死亡現(xiàn)場離奇詭異,居然都是意外死亡武花,警方通過查閱死者的電腦和手機(jī)圆凰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來体箕,“玉大人专钉,你說我怎么就攤上這事±矍Γ” “怎么了跃须?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長娃兽。 經(jīng)常有香客問我菇民,道長,這世上最難降的妖魔是什么投储? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任第练,我火速辦了婚禮,結(jié)果婚禮上玛荞,老公的妹妹穿的比我還像新娘娇掏。我一直安慰自己,他們只是感情好勋眯,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布婴梧。 她就那樣靜靜地躺著,像睡著了一般客蹋。 火紅的嫁衣襯著肌膚如雪塞蹭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天讶坯,我揣著相機(jī)與錄音番电,去河邊找鬼。 笑死辆琅,一個胖子當(dāng)著我的面吹牛钧舌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼骤宣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起撞牢,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤率碾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后屋彪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體所宰,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年畜挥,在試婚紗的時候發(fā)現(xiàn)自己被綠了仔粥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蟹但,死狀恐怖躯泰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情华糖,我是刑警寧澤麦向,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站客叉,受9級特大地震影響诵竭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜兼搏,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一卵慰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佛呻,春花似錦呵燕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽氧苍。三九已至夜矗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間让虐,已是汗流浹背紊撕。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留赡突,地道東北人对扶。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像惭缰,于是被迫代替她去往敵國和親浪南。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容