ZAB協議 乙個簡單的全序廣播協議

2021-07-11 18:59:27 字數 885 閱讀 1088

介紹

為了正確性,

zookeeper

還有額外的

字首屬性

prefix property

)需求:如果m是

leader l

投遞的最後

乙個訊息,那麼在

m之前被

l提交的任何訊息都已經被投遞。

注意乙個程序可能會被多次被選舉;然而為了實現

字首屬性

,每一次都要看成不同的

leader

。通過以下

3個保證我們能夠維護正確的

zookeeper

資料庫副本:

zab必須要考慮兩種型別的

因果關係

:違反因果順序的例子:

為了展示違反上述第2個

因果關係

帶來的問題,請看下面的例子:

在這個場景中,客戶端收到對w1

的成功返回訊息,但是對於w2

會接收到乙個錯誤,因為

leader

掛掉了。如果l1

最終恢復了,重新稱為

leader

,並嘗試投遞訊息w2

,那麼就會違反

client

請求的因果順序

,副本的狀態就變得不正確了。

為什麼要使用另外乙個協議

協議 如上圖:訊息投遞協議。協議的多個

instance

可以併發執行。一旦

leader

發出commit

,訊息就被成功投遞了。

廣播崩潰恢復

乙個簡單的UDP廣播程式

一般使用的socket程式設計都是使用的是一些繫結埠和ip的普通的程式,一旦想要編寫一些特殊的網路應用程式就會出現一些問題。就那這個udp廣播資料的車姑娘許來說,需要設定socket的選項,也就是使用setsockopt來設定socket的一些特殊選項。include include include...

乙個簡單的問題 全排列

全排列一共分為兩種情況,有重複元素和無重複元素,大一開始做的時候不會寫,現在特意寫一下這個問題的各種解法。1.無重複元素,這種相對簡單一些,用遞迴就可以了 首先找到第乙個字母,然後找到剩餘的字母中的第乙個字母,依次類推,很簡單,如下 本來準備用dfs寫,發現兩個的複雜度是一樣的,就沒有必要了。inc...

程序,執行緒,協程的乙個簡單解釋

我們都知道計算機的核心是cpu,它承擔了所有計算機的任務,它就像乙個工廠,時刻執行著。假定工廠的電力有限,一次只能供給乙個車間使用,也就是說,乙個車間開工的時候,其他車間都必須停工,背後的含義就是,單個cpu一次只能執行乙個任務。程序就好比工廠裡的車間,他代表cpu所能處理的單個任務。任意時刻,cp...