[英]Raft Algorithm Normal Operations
我已經閱讀了Raft算法的論文,並得到了一個與Raft在收到客戶請求后執行的操作順序有關的問題:
為了克服單點故障情況,Raft依賴於在其他計算機上維護復制的日志,該算法還咨詢了共識模塊以進行完整的日志記錄管理。 操作順序如下:
如果上面的理解是正確的,那么我可以聲稱客戶端請求被保留了一段時間以完成復制過程,也可以聲明客戶端請求的成功在很大程度上取決於復制的成功進程(因為在接收到多數確認之前,領導者的機器上不執行客戶端命令/請求)。 問題是,復制過程完成后,客戶端請求平均需要多長時間才能收到響應,這對於實時系統是否有效?
http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed建議諸如Raft之類的系統要求CAP定理三位一體的一致性和可用性部分受到性能限制。 您可能也對https://pdfs.semanticscholar.org/7c45/54d064128043897ea2226021f6fda4c64251.pdf(Birman的可靠組播經驗的回顧)感興趣,該文獻描述了在高保證系統(例如空中交通管制)中可靠組播組的經驗。
我從中得出的結論是,一個實際的系統可能需要非常小心,以保護與Raft,Paxos和朋友之間的信息,以及它對信息的保護程度較差。 另一種觀點是采用Paxos的非常復雜的實現,例如Google Spanner,以便程序員不必擔心非ACID系統的問題。
如果上面的理解是正確的,那么我可以聲稱客戶端請求被保留了一段時間,以便復制過程完成
正確,當前術語的領導者只有將命令復制到集群中的大多數節點后,才會確認客戶端請求。
我還可以聲稱,客戶端請求的成功在很大程度上取決於復制過程的成功
沒錯 集群中至少大多數節點(包括領導者)都需要可用並具有響應能力,以便成功復制命令並使領導者確認請求。
復制過程完成后,客戶端請求平均需要多長時間才能收到響應
這取決於您的網絡拓撲。 對客戶端請求的響應延遲將由以下部分組成(假設沒有領導者崩潰):*在客戶端和領導者之間傳輸客戶端請求所需的等待時間。 *領導者對跟隨者復制條目的AppendEntries
請求的延遲(與所有跟隨者並行發送。*跟隨者對領導者的AppendEntries
響應的延遲。*領導者應用命令所需的時間到其狀態機(即最佳情況下的磁盤寫入)*客戶端響應從領導者傳輸到客戶端的延遲
各種消息的等待時間取決於節點之間的距離,但可能在十分之幾到幾百毫秒之間。
對實時系統也有效嗎?
這取決於您對特定案例的要求。 但是總的來說,實時系統要求的延遲在幾毫秒以下,因此答案很可能不是。 另外,請記住,在發生新領導人選舉的崩潰和不穩定時期,延遲可能會大大增加。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.