国产成人综合一区精品,久久精品爱国产免费久久,中文精品视频一区二区在线观看

廣州總校區切換校區
復制成功
微信號:togogoi
添加微信好友, 詳細了解課程
已復制成功,如果自動跳轉微信失敗,請前往微信添加好友
打開微信
圖片
news

新聞資訊

分布式強一致性算法

發布時間: 2022-11-10

分布式強一致性算法以Raft算法為基礎進行設計,在保證分布式節點狀態一致的前提下,相比其他算法邏輯簡單、實現方便,能夠保證控制器集群實現的簡單性,產生錯誤的概率大為降低。

Raft是一種基于Paxos的分布式一致性協議,相比于Paxos,它更加容易理解和實現,并且能夠保證正確性和算法性能。Raft在最初就是從工程的角度設計的,充分考慮了在現實中實現時可能存在的問題,并予以優化或規避。當集群系統內某個節點出現故障時,只要集群內仍存在多數節點,就能保證分布式系統的可用性和數據一致性。

Raft將分布式數據庫系統的節點進行抽象,稱為復制狀態機(Replicated State Machine)。假設狀態機的初始狀態相同,在系統運行期間,只要每個狀態機按照完全相同的序列執行同樣的操作,那么它們的最終狀態就是一致的。如果映射到網絡操作系統中,操作即網絡狀態變化、流表變化,操作序列即網絡狀態變化、流表增刪的順序。因此,保證操作和操作序列的一致性,就能保證狀態機節點數據的一致性。

在分布式系統中,每個節點均對設備具有感知、管控的權利,針對每個設備,彈性通信網絡操作系統或為Master角色或為Slave角色,由彈性通信網絡操作系統之間協商針對設備的角色狀態,Master角色的彈性通信網絡操作系統具有對設備的資源管控、狀態獲取的權利,而Slave角色的彈性通信網絡操作系統只有狀態獲取的權利。

彈性通信網絡操作系統之間采用單點更新的方式實現集群節點數據的一致性。集群節點之間通過選舉產生一個主節點,該主節點只作為集群節點之間的數據提交決策節點,所有變化的數據均需要通過該主節點進行決策是否滿足集群內的同步狀態,完成系統內的數據同步。集群節點的狀態分為三種:主節點(Leader)、從節點(Follower)、候選節點(Candidate)。

每個節點在同一時刻只能擔任其中一個角色,但在算法運行過程中角色可以發生改變。分布式系統處于非選舉狀態時,彈性通信網絡操作系統只存在兩種角色的節點,即主節點和從節點。整個算法的實現流程包括主節點選舉(Leader Election)和信息復制 (Log Replication)兩個階段。主節點選舉就是通過選舉確定集群的主節點,并在后面的信息復制階段中承擔起主節點的工作。

圖1展示了選舉過程中三種節點角色狀態的轉換情況,這是一個不確定性有限自動機(Non-deterministic Finite Automation,NFA)。隨著選舉的推進,節點可能轉變為任一角色。

選舉算法的本質是多數派決議。節點在選舉開始時會向所有節點提出預案,即希望自己能成為新任期內的主節點,各個節點會對預案進行投票,如果該預案獲得包括自己在內的半數以上節點的認可,那么該節點就能成功當選。

選舉過程中,任何一個節點都可能收到多個節點的預案投票請求(Request Vote),最終節點會投票給任期編號最大的預案。另外,選舉算法規定在同一任期內,每個節點只有一次投票權,優先到達的預案將得到選票,而后來的預案將被該節點否決。可以看出,在不考慮日志的情況下,節點對預案進行投票依據兩個因素:預案的任期編號和節點已投票情況。下面根據圖1簡要介紹選舉算法的第一輪選舉流程。



圖1 角色狀態轉換圖

(1)一開始,所有的彈性通信網絡操作系統節點都是從節點,此時它們并沒有所屬的主節點。

(2)當從節點在一段時間內未收到主節點的心跳消息,則定時器超時,變為候選節點。

(3)候選節點為自己投一票,同時向所有從節點發起請求投票。

(4)從節點收到請求投票消息,如果發現自己在這個任期還沒有投票,就同意投票,否則不投票,即先到先得的原則。

(5)候選節點收到來自大多數(過半)從節點的投票后,則成為新的主節點。

為保證集群內彈性通信網絡操作系統拓撲信息、流表信息的一致性,需要實現上述信息的同步,其具體的信息同步流程如下。

(1)某一節點發現拓撲改變或流表改變,向主節點發送寫請求。

(2)主節點收到寫請求后,首先在本地日志中增加一條寫操作記錄,但不提交,接著主節點把該條日志記錄發送至分布式系統中的所有節點。

(3)主節點等待收到過半其他節點的寫日志記錄成功的回復,然后響應請求節點一個寫請求成功的回復。

(4)主節點在本地提交日志記錄,同時向所有其他節點發起提交日志的請求。

(5)各節點在本地提交日志記錄。

通過以上步驟保證彈性通信網絡操作系統集群內的拓撲狀態、流表狀態的一致性。

當一個節點從故障中恢復或剛啟動時,其角色為從節點,同時啟動一個定時器(Follower Timer)。若從節點接收到主節點發送的心跳消息,會重置定時器,保持從節點角色狀態不變。否則,定時器最終會超時,而從節點認為此時集群中沒有有效的主節點存在,因此,它將轉變為候選節點,準備競爭成為新的主節點。

候選節點首先提升自己的任期編號,重置自己的定時器,然后向其他節點發出投票請求并等待回復。之后,候選節點將可能出現三種情況:

(1)獲得同一任期內的過半節點選票,成為主節點。

(2)等待期間接收到心跳消息,說明集群中已經有節點當選,此時轉變為從節點。

(3)如果前面兩種情況都沒有發生,候選節點將持續等待,直到定時器超時,然后重新發起新一輪選舉。

某一節點成為主節點后,便開始發送日志信息,并重置其他節點的定時器。只要主節點沒有在與其他節點通信時發現具有更大任期編號的節點,會一直保持主節點這一角色。

上一篇: 分布式最終一致性算法

下一篇: 可重構網絡基礎設施架構

<
在線咨詢 ×

您好,請問有什么可以幫您?我們將竭誠提供最優質服務!

  • <strong id="6ngzx"><bdo id="6ngzx"><strong id="6ngzx"></strong></bdo></strong>

        <strong id="6ngzx"><bdo id="6ngzx"><strong id="6ngzx"></strong></bdo></strong>

        <menuitem id="6ngzx"><b id="6ngzx"></b></menuitem>
        <center id="6ngzx"><center id="6ngzx"></center></center><strong id="6ngzx"><bdo id="6ngzx"><strong id="6ngzx"></strong></bdo></strong>

        主站蜘蛛池模板: 介休市| 上高县| 定结县| 韶关市| 桂东县| 利辛县| 山阳县| 仙游县| 万盛区| 获嘉县| 大足县| 河源市| 如皋市| 九龙城区| 陇南市| 洛川县| 赣州市| 平定县| 蒙阴县| 永登县| 凌源市| 漯河市| 安宁市| 汉阴县| 客服| 浑源县| 惠安县| 寻乌县| 扎赉特旗| 霞浦县| 葫芦岛市| 长兴县| 鄂尔多斯市| 彭山县| 临高县| 西乌珠穆沁旗| 汤阴县| 淳化县| 嘉义县| 哈尔滨市| 五寨县|