亚洲精品中文免费|亚洲日韩中文字幕制服|久久精品亚洲免费|一本之道久久免费

      
      

            <dl id="hur0q"><div id="hur0q"></div></dl>

                理解 RAFT 分布式共識算法

                理解 RAFT 分布式共識算法

                理解 RAFT 分布式共識算法——第 1 部分

                為什么我們需要共識

                我們大多數(shù)人在我們的編程生涯中至少使用過一次關(guān)系數(shù)據(jù)庫,如 MySQL、Oracle。當(dāng)您INSERT或UPDATE一個值然后對其執(zhí)行 SELECT時,您會得到最新的值——這通常是因為我們使用一臺機器來管理我們的數(shù)據(jù)。

                現(xiàn)在想象一下,您有大量數(shù)據(jù)分布在 10 臺機器上。為了更好地提供數(shù)據(jù),您已啟用數(shù)據(jù)復(fù)制。假設(shè)一條數(shù)據(jù)在 3 臺機器上復(fù)制,應(yīng)用程序是全球性的,然后想從世界任何地方查詢準(zhǔn)確的數(shù)據(jù),為了解決這個問題,我們需要一種機制,通過該機制,多個服務(wù)器可以就一個值達成一致,并且無論哪臺機器為您的SELECT請求提供服務(wù),每次都會得到相同的結(jié)果。

                簡而言之,您需要對分布式系統(tǒng)有一個連貫的視圖,這樣它的行為就好像只有一臺機器在為所有請求提供服務(wù),這就是我們需要達成共識的地方。

                如果你想構(gòu)建一個強一致的分布式系統(tǒng)(CAP定理中的CP系統(tǒng)),需要有共識。

                Raft

                Raft(復(fù)制和容錯)是解決這個問題的算法/協(xié)議。它來自于 2014 年斯坦福大學(xué) Diego Ongaro 和 John Ousterhout 的博士論文。 Raft 的設(shè)計易于理解,前身算法如 Paxos 和 Multi-Paxos 是眾所周知的共識算法,已知很難理解理解,只有少數(shù)人能正確理解它們。

                Raft 沒有標(biāo)準(zhǔn)的實現(xiàn),它只是定義了幾個步驟以容錯的方式達成共識。目前已經(jīng)有數(shù)百種 Raft 實現(xiàn),大多數(shù)工程師在他們的一生中不需要實現(xiàn)任何共識算法,但是理解分布式系統(tǒng)的核心并沒有什么壞處。

                Q. Raft 是如何實現(xiàn)的?A. Raft 通常被實現(xiàn)為服務(wù)內(nèi)部的一個模塊,如分布式數(shù)據(jù)庫或分布式鍵值存儲如 etcd等。Raft 本身不是作為服務(wù)或微服務(wù)實現(xiàn)的。它就像系統(tǒng)中的后臺進程一樣工作。

                前提條件概念

                在我們深入了解 Raft 之前,請先了解以下概念。

                法定人數(shù)

                如果你的分布式系統(tǒng)有N節(jié)點,你至少需要(N/2) + 1節(jié)點來就一個值達成一致——基本上你需要多數(shù)票(超過 50%)來達成共識,就像任何國家的憲法選舉一樣。多數(shù)投票確保當(dāng)(N/2) + 1節(jié)點運行和響應(yīng)時,即使存在網(wǎng)絡(luò)分區(qū)或系統(tǒng)中的其他故障,至少一個節(jié)點包含讀取和寫入請求中給定數(shù)據(jù)的最新值。

                問:當(dāng)我們有一個基于仲裁的節(jié)點系統(tǒng)時,我們可以容忍多少個節(jié)點故障N?A.如果N是奇數(shù),我們可以忍受N/2節(jié)點故障。如果N是偶數(shù),我們可以忍受(N/2)-1節(jié)點故障。

                下面是一個簡單的表格來說明這個事實:

                Q. 生產(chǎn)時應(yīng)該選擇偶數(shù)還是奇數(shù)N?A.考慮一下N = 4,根據(jù)上表,所需的多數(shù)是3& 你只能容忍1節(jié)點故障。對于N = 5,大多數(shù)仍然是3但可以容忍2節(jié)點故障。

                問:生產(chǎn)中 N 的最差值是多少?A.如果N = 1or N = 2,如果丟失了一個節(jié)點,將丟失整個系統(tǒng),因為您實際上根本無法容忍任何節(jié)點故障。事實上N = 2,您實際上已經(jīng)使系統(tǒng)中的單點故障翻了一番——如果任何一個節(jié)點出現(xiàn)故障,您的整個系統(tǒng)就會出現(xiàn)故障。所以在生產(chǎn)中選擇一個奇數(shù)值N 3。

                問:在生產(chǎn)中什么是好的合理N?A.這個數(shù)字顯然取決于您對數(shù)據(jù)、帶寬、吞吐量和成本要求的估計。但是,5是一個不錯的數(shù)字,因為2節(jié)點總數(shù)停機,而3節(jié)點仍在運行。

                問:如果大多數(shù)節(jié)點不可用會怎樣?

                理想情況下,系統(tǒng)可能會完全停止響應(yīng),具體取決如何配置讀寫用例。通常寫入完全停止,但如果您將讀取請求設(shè)計為最終一致,則可用節(jié)點仍可能為讀取請求提供服務(wù)。

                節(jié)點狀態(tài)

                Raft 節(jié)點可以處于三種狀態(tài):Leader, Follower& Candidate。我們將在后面的部分看到節(jié)點轉(zhuǎn)換是如何發(fā)生的?,F(xiàn)在只需要記住Raft 是一個基于領(lǐng)導(dǎo)者的共識協(xié)議,日志總是從領(lǐng)導(dǎo)者流向追隨者。

                日志

                這不是常規(guī)日志文件,是基于磁盤的文件,通常稱為日志條目的對象以二進制數(shù)據(jù)的形式順序添加。

                已提交和未提交的日志

                • 只有當(dāng)集群中的多數(shù)節(jié)點復(fù)制日志條目時,才會提交日志條目。提交的日志永遠(yuǎn)不會被覆蓋。提交的日志是持久的,最終會被 Raft 集群中的所有節(jié)點執(zhí)行。
                • 如果客戶端命令/日志條目尚未復(fù)制到大多數(shù)集群節(jié)點,則稱為未提交日志。未提交的日志可以在追隨者節(jié)點中被覆蓋。

                狀態(tài)機

                狀態(tài)機本質(zhì)上可能非常復(fù)雜。通常這意味著——根據(jù)輸入到系統(tǒng)的輸入,數(shù)據(jù)(鍵)的狀態(tài)會發(fā)生變化。在 Raft 上下文中,認(rèn)為這就像一個存儲密鑰最終商定值的模塊。每個節(jié)點都有自己的狀態(tài)機。Raft 必須確保無論提交什么日志條目,它們最終都會應(yīng)用于狀態(tài)機,該狀態(tài)機作為內(nèi)存中數(shù)據(jù)的真實來源。對于容錯,狀態(tài)機也可以持久化。

                學(xué)期

                表示節(jié)點充當(dāng)領(lǐng)導(dǎo)者的時間段,該概念基于邏輯時間(不是全局時間) -它只是由每個節(jié)點單獨管理的計數(shù)器。一旦一個任期結(jié)束,另一個任期就會從一個新的領(lǐng)導(dǎo)者開始。即使在給定的時間點,節(jié)點之間的學(xué)期可能會有所不同,但 Raft 有一種機制可以將它們同步并收斂到相同的值。

                也稱為租約或領(lǐng)導(dǎo)租約,只是它的另一個名稱。

                RPC

                像 Facebook 移動應(yīng)用程序通過 HTTP 之上的 REST API 與 Facebook 服務(wù)器通信一樣,參與 Raft 的節(jié)點之間使用 TCP 之上的遠(yuǎn)程過程調(diào)用 (RPC) 進行通信。該協(xié)議適用于跨數(shù)據(jù)中心、內(nèi)部系統(tǒng)和服務(wù)(不是面向用戶的產(chǎn)品或服務(wù))的通信。

                Raft 使用兩個不同的 RPC 請求。在高水平:

                • RequestVote (RV):當(dāng)一個節(jié)點想成為領(lǐng)導(dǎo)者時,它通過發(fā)送這個請求來請求其他節(jié)點為它投票。
                • AppendEntries (AE):通過此消息,領(lǐng)導(dǎo)者要求追隨者將條目添加到他們的日志文件中。領(lǐng)導(dǎo)者可以發(fā)送空消息以及向追隨者指示它還活著的心跳。

                Q. 基于領(lǐng)導(dǎo)者的系統(tǒng)的主要優(yōu)勢是什么?A.當(dāng)抽象基于領(lǐng)導(dǎo)者時,系統(tǒng)變得易于理解和操作??蛻敉ǔMㄟ^領(lǐng)導(dǎo)者進行交互,領(lǐng)導(dǎo)者負(fù)責(zé)重要的決策制定、系統(tǒng)的元數(shù)據(jù)狀態(tài)。

                問:基于領(lǐng)導(dǎo)的系統(tǒng)的主要缺點是什么?一個。領(lǐng)導(dǎo)者成為單點故障。因此,系統(tǒng)應(yīng)該能夠在當(dāng)前領(lǐng)導(dǎo)者失敗時快速做出反應(yīng)以選擇另一個領(lǐng)導(dǎo)者。此外,由于所有客戶端交互都通過領(lǐng)導(dǎo)者進行,因此系統(tǒng)可能會在規(guī)模上變得更慢。

                隨機超時

                Raft 使用隨機選舉超時的概念——跟隨者等待成為候選者的時間量(有關(guān)狀態(tài)轉(zhuǎn)換的更多詳細(xì)信息,請參見圖 3)。當(dāng)集群啟動時,每個節(jié)點都會為自己選擇一個介于150-300毫秒之間的隨機超時,并開始倒計時。現(xiàn)在有2種可能:

                • 在節(jié)點超時之前,它會收到來自另一個節(jié)點的消息——它可能是來自領(lǐng)導(dǎo)者的心跳或日志復(fù)制消息或來自另一個對等方的投票請求。在這種情況下,超時被重置并且倒計時再次開始。
                • 超時期間節(jié)點根本沒有收到任何消息。

                Q. 為什么選擇隨機超時?A.假設(shè)所有節(jié)點都有固定的超時時間。因此,在沒有領(lǐng)導(dǎo)者的情況下,它們同時超時并且無法保證領(lǐng)導(dǎo)者選舉,因為該過程可以重復(fù)多次或無限期地并且所有節(jié)點再次開始倒計時相同的超時值。所以隨機化在這里有幫助。如果領(lǐng)導(dǎo)者仍未確定,則該過程會以跨節(jié)點的一組新的隨機超時重新開始,最終我們將擁有一個領(lǐng)導(dǎo)者。經(jīng)過一兩次試驗,我們不太可能沒有選擇領(lǐng)導(dǎo)者。

                終生期限

                當(dāng)集群中沒有領(lǐng)導(dǎo)者并且節(jié)點X超時時,它會啟動一個新的選舉期限,T通過添加1上一個任期的值來增加其任期。提醒您一下——術(shù)語是由所有節(jié)點管理的本地計數(shù)器。這里又有2個案例:

                • 如果X被選為新的領(lǐng)導(dǎo)者,任期T繼續(xù),即;添加到領(lǐng)導(dǎo)者X和此后的所有新日志條目都使用 term 傳播給追隨者T。
                • X輸?shù)暨x舉,新的選舉開始于新的任期Uwhere U > T。

                因此,從圖形上看,術(shù)語圖如下所示:

                鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
                用戶投稿
                上一篇 2022年6月24日 12:53
                下一篇 2022年6月24日 12:53

                相關(guān)推薦

                • 什么是推廣cpa一篇文章帶你看懂CPA推廣渠道

                  CPA渠道 CPA指的是按照指定的行為結(jié)算,可以是搜索,可以是注冊,可以是激活,可以是搜索下載激活,可以是綁卡,實名認(rèn)證,可以是付費,可以是瀏覽等等。甲乙雙方可以根據(jù)自己的情況來定…

                  2022年11月25日
                • 百度關(guān)鍵詞快速排名的4大原理解析(百度怎么刷關(guān)鍵詞)

                  近期百度公告驚雷算法2.0,升級之快還是第一次吧,看來百度對于刷點擊行為是零容忍了。之前尹華峰SEO技術(shù)博客介紹過一篇如何使用刷點擊工具,其實市面上有很多這類SEO快速排名的軟件,…

                  2022年11月25日
                • 抖音直播帶貨有哪些方法技巧(抖音直播帶貨有哪些痛點)

                  如今抖音這個短視頻的變現(xiàn)能力越來越突顯了,尤其是在平臺上開通直播,更具有超強的帶貨屬性,已經(jīng)有越來越多的普通人加入到其中了。不過直播帶貨雖然很火,但是也不是每個人都能做好的,那么在…

                  2022年11月24日
                • 免費清理c盤的軟件(清理c盤空間不影響系統(tǒng))

                  電腦用久了慢如龜速,還卡頓,這最大的原因啊就是C盤空間不足造成的。 即使電腦配置再好,或者硬盤再快,如果長時間沒有打掃C盤,打開文件或者穩(wěn)定之類的,都卡得讓人頭大。 這時候呢不要去…

                  2022年11月24日
                • 明查|美國新冠后遺癥患者中有16%癥狀嚴(yán)重以致無法工作?

                  點擊進入澎湃新聞全球事實核查平臺 速覽 – 網(wǎng)傳數(shù)據(jù)比例無權(quán)威信源佐證,該比例有可能是結(jié)合了美國疾病防控中心和布魯金斯學(xué)會的數(shù)據(jù)得出,但這兩個機構(gòu)的調(diào)研目的和樣本都不同…

                  2022年11月24日
                • ipad怎么刷機(ipad怎么刷機重新激活)

                  今天小編給各位分享ipad怎么刷機的知識,其中也會對ipad怎么刷機重新激活進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧! ipad密碼忘了怎么刷機? ip…

                  2022年11月24日
                • win11怎么退回win10 win11怎么還原到win10

                  許多朋友在更新完win11后發(fā)現(xiàn)使用起來不方便,而且有不少漏洞和bug,有時候還會出現(xiàn)卡頓,因此想要還原到win10系統(tǒng),但是不知道是否可以還原,下面就跟著小編一起來操作一下吧。 …

                  2022年11月22日
                • 笑死!華人推特員工陪馬斯克熬夜加班后光速被裁

                  買下推特后,埃隆?馬斯克對其進行了大刀闊斧的改革。今日早間,他還發(fā)布推文,貼出了他凌晨大約 1 點 30 分在推特舊金山總部與工程師們的合影。他表示剛與推特工程師們審查完代碼。正準(zhǔn)…

                  2022年11月21日
                • ios16.1.1續(xù)航怎么樣 ios16.1.1耗電信號問題改善了沒

                  ios系統(tǒng)雖然好用,但是它的續(xù)航信號總是被人吐槽,以至于每次系統(tǒng)升級,用戶對于信號和續(xù)航還要發(fā)熱問題都非常關(guān)心,最新推送的ios 16.1.1怎么樣呢,續(xù)航、信號及發(fā)熱改善了嗎,別…

                  2022年11月21日
                • 淘寶運營數(shù)據(jù)分析的3個指標(biāo)解析(運營數(shù)據(jù)分析怎么做)

                  我們知道淘寶運營工作中對于數(shù)據(jù)的分析與整理是很重要的,這些工作乍一聽可能比較難,但是也有一些相關(guān)的技巧可以讓我們能夠有效的找出對我們有用的數(shù)據(jù),這樣我們也能夠更加直觀的看出我們店鋪…

                  2022年11月20日

                聯(lián)系我們

                聯(lián)系郵箱:admin#wlmqw.com
                工作時間:周一至周五,10:30-18:30,節(jié)假日休息