日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

漫画:什么是拜占庭将军问题

發布時間:2023/12/3 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 漫画:什么是拜占庭将军问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自?漫畫:什么是拜占庭將軍問題

什么是拜占庭將軍問題?

在很久很久以前,拜占庭是東羅馬帝國的首都。那個時候羅馬帝國國土遼闊,為了防御目的,因此每個軍隊都分隔很遠,將軍與將軍之間只能靠信使傳遞消息。

?

?

?

在打仗的時候,拜占庭軍隊內所有將軍必需達成一致的共識,才能更好地贏得勝利。但是,在軍隊內有可能存有叛徒,擾亂將軍們的決定。

?

?

這時候,在已知有成員不可靠的情況下,其余忠誠的將軍需要在不受叛徒或間諜的影響下達成一致的協議。

?

萊斯利·蘭伯特(?Leslie Lamport?)通過這個比喻,表達了計算機網絡中所存在的一致性問題。這個問題被稱為拜占庭將軍問題。

?

?

?

?

?

?

?

?

什么是 Raft 算法?

?

Raft 算法是一種簡單易懂的共識算法。它依靠?狀態機?和?主從同步?的方式,在各個節點之間實現數據的一致性。

?

在學習Raft算法的時候,大家需要了解Raft的兩個核心要點:

?

1.選取主節點

?

2.同步數據

?

?

不難理解,使用主從同步的方式,可以讓集群各個節點的數據更新以主節點為準,從而保證了一致性。那么,如何選取主節點呢?

?

?

?

?

?

?

?

?

我們的出生,離不開無數小蝌蚪之間的激烈競爭。在競爭的過程中,某個速度最快運氣最好的小蝌蚪最終勝出,讓我們誕生到了這個世界。

?

同樣道理,Raft算法在選擇主節點的過程中,也是通過多個節點之間的投票競爭。

?

說到這里,不得不說一下Raft算法的狀態機。Raft算法為節點定義了三種角色:

?

1.Leader(主節點)

2.Follower(從節點)

3.Candidate(參與投票競爭的節點)

?

讓我們來看一看選主的具體流程:

?

第一步,在最初,還沒有一個主節點的時候,所有節點的身份都是Follower。每一個節點都有自己的計時器,當計時達到了超時時間(Election Timeout),該節點會轉變為Candidate。

?

?

?

?

?

第二步,成為Candidate的節點,會首先給自己投票,然后向集群中其他所有的節點發起請求,要求大家都給自己投票。

?

?

?

?

?

第三步,其他收到投票請求且還未投票的Follower節點會向發起者投票,發起者收到反饋通知后,票數增加。

?

?

?

?

第四步,當得票數超過了集群節點數量的一半,該節點晉升為Leader節點。Leader節點會立刻向其他節點發出通知,告訴大家自己才是老大。收到通知的節點全部變為Follower,并且各自的計時器清零。

?

?

?

?

這里需要說明一點,每個節點的超時時間都是不一樣的。比如A節點的超時時間是3秒,B節點的超時時間是5秒,C節點的超時時間是4秒。這樣一來,A節點將會最先發起投票請求,而不是所有節點同時發起。

?

為什么這樣設計呢?設想如果所有節點同時發起投票,必然會導致大家的票數差不多,形成僵局,誰也當不成老大。

?

那么,成為Leader的節點是否就坐穩了老大的位置呢?并不是。Leader節點需要每隔一段時間向集群其他節點發送心跳通知,表明你們的老大還活著。

?

?

?

?

一旦Leader節點掛掉,發不出通知,那么計時達到了超時時間的Follower節點會轉變為Candidate節點,發起選主投票,周而復始......

?

?

?

?

?

?

?

?

?

讓我們來看一看數據同步的流程:

?

第一步,由客戶端提交數據到Leader節點。

?

?

?

?

?

第二步,由Leader節點把數據復制到集群內所有的Follower節點。如果一次復制失敗,會不斷進行重試。

?

?

?

?

?

第三步,Follower節點們接收到復制的數據,會反饋給Leader節點。

?

?

?

?

第四步,如果Leader節點接收到超過半數的Follower反饋,表明復制成功。于是提交自己的數據,并通知客戶端數據提交成功。

?

?

?

?

第五步,由Leader節點通知集群內所有的Follower節點提交數據,從而完成數據同步流程。

?

?

?

?

?

共識算法的應用場景?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

Paxos 算法:

早期的共識算法,由拜占庭將軍問題的提出者?Leslie Lamport?所發明。谷歌的分布式鎖服務?Chubby 就是以 Paxos 算法為基礎。

?

?

ZAB 算法:

Zookeeper 所使用的一致性算法,在流程上和 Raft 算法比較接近。

?

?

PBFT 算法:

區塊鏈技術所使用的共識算法之一,適用于私有鏈的共識。


?

?

?

?

總結

以上是生活随笔為你收集整理的漫画:什么是拜占庭将军问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。