Unreliable Failure Detectors for Reliable Distributed Systems
TL;DR
- Consensus 和 Atomic broadcast是 equivalent的,能解 consensus的演算法,就可以解 atomic broadcast
- 要在 asynchronous的環境解決 consensus,至少需要 weak accuracy的failure detector
- 要在 asynchronous環境解決 BGP問題,至少需要strong accuracy的failure detector
- 因為FLP Theorem已經證明了無解,所以以上現實中不存在weak accuracy failure detector和strong accuracy failure detector
- 現實系統還是能用asynchronous架構,因為我們不需要weak accuracy永遠滿足,只需要足夠長的時間滿足,就可以應用此理論來設計系統
Note 因為這篇論文內容非常的多,這篇只會放名詞定義跟結論,重要的證明會放在 Unreliable Failure Detectors for Reliable Distributed Systems (證明篇)
Introduction
藉由引入failure detector
和failure pattern
,我們就可以說某個asynchoronous algorithm能不能用此failure detector
和failure pattern
來解決某個分散式系統問題。反過來,我們也可以說需要多強的failure detector
才可以在某個failure pattern
條件下,解決某個分散式系統問題。
對應標題的unreliable
,failure detector
的結果可能會出錯,即使failure detector
的結果出錯,也不應該影響此演算法的行為。例如解決consensus的演算法,即使所有的detector都誤認為process fail了,也不應該影響參與決策並且達成共識。
Failure Detector
Detector擁有兩個properties:
- Completeness
- Accuracy
Completeness
Strong Completeness: Eventaully 每個 faulty process,都存在"每個"detector的error list裡面。
Weak Completeness: Eventaully 至 少有一個detector 辨識出所有的faulty processs。
單純只看 completeness是沒有意義的,假設某個detector把所有的process,不管是correct 或是 faulty都送進 error list裡面,它也滿足 strong completeness,但此detector是沒有用處的。
Accuracy
Accuracy 分成四個屬性:
Strong Accuracy: 所有fault process在crash之前,沒有被suspect。
Weak Accuracy: 至少有一個correct process在crash之前,從來沒被誤判成faulty process。
Eventual Strong Accuracy: Eventually (在某個時間點 以後),所有的correct process都沒被誤判成faulty process。
Eventual Weak Accuracy: Eventually (在某個時間點 以後),至少有一個correct process 沒被誤判成faulty process。
Failure Detector Classes
Completeness和Accuracy總共有8種組合 (2x4),但我們可以證明Weak Completeness detector 可以reduce成 Strong Completeness dector,所以任合需要Strong Completeness dector的演算法,都可以使用Weak Completeness detector來處理,因此實際上只有4種組合。
Reliable Broadcast
我們定義 Reliable Broadcast 保證:
- 所有的correct process 都deliver 同樣的message set
- 所有correct process的message都delivered
- Spurious message不會被deliver
Reliable Broadcast提供兩個operation:R-broadcast和R-deliver。
Solving Consesus using Unreliable Failure Detectors
- 如果failure detector擁有weak accuracy,要解決Consensus問題,可以允許任何數目的node failure
- 如果failure detector擁有eventual weak accuracy,至少需要majority的correct process才能處理consensus
- eventual strong detector也無法在沒有majority的情況下解決consensus