0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分布式系統(tǒng)模式—High-Water Mark

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-24 12:56 ? 次閱讀

作者: Unmesh Joshi

譯者: java達人

預寫日志中的索引,顯示最近一次成功的復制。

問題

服務器崩潰并重新啟動后,可使用“Write-Ahead Log”模式恢復狀態(tài)。但是,如果服務器發(fā)生故障,Write-Ahead Log不足以提供可用性。如果單個服務器發(fā)生故障,則客戶端將無法運行,直到服務器重新啟動。為了獲得更多可用的系統(tǒng),我們可以在多個服務器上復制日志。使用領(lǐng)導者和追隨者模式,領(lǐng)導者會將其所有日志條目復制到追隨者法定數(shù)?,F(xiàn)在,如果領(lǐng)導者失敗,則可以選舉新的領(lǐng)導者,并且客戶可以像以前一樣繼續(xù)使用集群。但是仍然有幾處可能出問題:

? leader在將其日志發(fā)送給任何追隨者之前可能會失敗。? 領(lǐng)導者可能會在向一些追隨者發(fā)送日志條目時失敗,無法將其發(fā)送給大多數(shù)的追隨者。

在這些錯誤場景中,一些追隨者可能在其日志中丟失條目,而一些追隨者可能擁有比其他追隨者更多的條目。因此,對于每個follower來說,了解日志的哪一部分對客戶端是安全可用的就變得很重要了。

解決方案

high-water mark是日志文件的一個索引,它記錄已知已成功復制到追隨者Quorum的最后一個日志條目。在復制過程中,領(lǐng)導者還會將high-water mark傳遞給追隨者。集群中的所有服務器應該只向請求低于high-water mark更新的客戶端傳輸數(shù)據(jù)。

這是操作順序:

Figure 1: High-Water Mark

對于每個日志條目,leader將其附加到其本地預寫日志中,然后將其發(fā)送給所有追隨者。

leader (class ReplicationModule...)
private Long appendAndReplicate(byte[] data) { Long lastLogEntryIndex = appendToLocalLog(data); logger.info("Replicating log entries from index " + lastLogEntryIndex); replicateOnFollowers(lastLogEntryIndex); return lastLogEntryIndex; }
private void replicateOnFollowers(Long entryAtIndex) { for (final FollowerHandler follower : followers) { replicateOn(follower, entryAtIndex); //send replication requests to followers } }

追隨者處理復制請求并將日志條目附加到它們的本地日志中。在成功附加日志條目之后,它們將擁有的最新日志條目索引響應到leader。該響應還包括服務器的當前Generation Clock。

follower (class ReplicationModule...)
private ReplicationResponse handleReplicationRequest(ReplicationRequest replicationRequest) { List

Leader在收到響應時跟蹤在每個服務器上復制的日志索引。

class ReplicationModule…
recordReplicationConfirmedFor(response.getServerId(), response.getReplicatedLogIndex()); long logIndexAtQuorum = computeHighwaterMark(logIndexesAtAllServers(), config.numberOfServers()); if (logIndexAtQuorum > replicationState.getHighWaterMark()) { var previousHighWaterMark = replicationState.getHighWaterMark(); applyLogAt(previousHighWaterMark, logIndexAtQuorum); replicationState.setHighWaterMark(logIndexAtQuorum); }

通過查看所有追隨者的日志索引和領(lǐng)導者本身的日志,并獲取大多數(shù)服務器上可用的索引,可以計算出High-Water Mark。

class ReplicationModule…
Long computeHighwaterMark(List

領(lǐng)導者將high-water mark作為常規(guī)心跳的一部分或作為單獨的請求向追隨者傳播。追隨者隨后相應地設定了他們的high-water mark。

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務器
    +關(guān)注

    關(guān)注

    12

    文章

    9256

    瀏覽量

    85755
  • 分布式系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    146

    瀏覽量

    19280
  • Mark
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    8406
收藏 人收藏

    評論

    相關(guān)推薦

    分布式云化數(shù)據(jù)庫有哪些類型

    分布式云化數(shù)據(jù)庫有哪些類型?分布式云化數(shù)據(jù)庫主要類型包括:關(guān)系型分布式數(shù)據(jù)庫、非關(guān)系型分布式數(shù)據(jù)庫、新SQL分布式數(shù)據(jù)庫、以列方式存儲數(shù)據(jù)、
    的頭像 發(fā)表于 01-15 09:43 ?55次閱讀

    基于ptp的分布式系統(tǒng)設計

    在現(xiàn)代分布式系統(tǒng)中,精確的時間同步對于確保數(shù)據(jù)一致性、系統(tǒng)穩(wěn)定性和性能至關(guān)重要。PTP(Precision Time Protocol)是一種網(wǎng)絡協(xié)議,用于在分布式
    的頭像 發(fā)表于 12-29 10:09 ?139次閱讀

    解決電網(wǎng)逆流難題,實現(xiàn)分布式光伏發(fā)電全部自發(fā)自用

    自用模式時,需要配置防逆流裝置。在分布式光伏系統(tǒng)中,當光伏發(fā)電的功率大于本地負荷功率時,多余的電力無法被本地負荷完全消納,就會流入電網(wǎng),形成逆流。電網(wǎng)逆流會導致電網(wǎng)
    的頭像 發(fā)表于 10-31 08:09 ?906次閱讀
    解決電網(wǎng)逆流難題,實現(xiàn)<b class='flag-5'>分布式</b>光伏發(fā)電全部自發(fā)自用

    分布式輸電線路故障定位中的分布式是指什么

    所謂分布式指的是產(chǎn)品的部署方式,是相對于集中式而言的。 一、部署方式 分散安裝:分布式輸電線路故障定位系統(tǒng)中的采集裝置需要安裝在輸電線路的多個位置,通常是每隔一定距離設置一個監(jiān)測點,以確保對整條線路
    的頭像 發(fā)表于 10-16 11:39 ?313次閱讀
    <b class='flag-5'>分布式</b>輸電線路故障定位中的<b class='flag-5'>分布式</b>是指什么

    分布式光纖測溫系統(tǒng)DTS

    隨著城市用電量的持續(xù)增長,電纜負荷日益加重,電纜故障頻發(fā)成為一個不容忽視的問題。傳統(tǒng)的電纜監(jiān)測手段已經(jīng)無法滿足對電纜狀態(tài)實時、精準監(jiān)控的需求,因此部分供電公司采用鼎信分布式光纖測溫系統(tǒng)(DTS)來
    的頭像 發(fā)表于 06-27 17:18 ?598次閱讀

    分布式SCADA系統(tǒng)的特點的組成

    在工業(yè)自動化和能源管理領(lǐng)域,SCADA(Supervisory Control And Data Acquisition)系統(tǒng)扮演著至關(guān)重要的角色。其中,分布式SCADA系統(tǒng)憑借其獨特的結(jié)構(gòu)和功能
    的頭像 發(fā)表于 06-07 14:43 ?580次閱讀

    分布式能源是什么意思?分布式能源有什么優(yōu)勢?

    分布式能源指的是在用戶端或靠近用戶端的小型能源供應系統(tǒng),它能夠直接滿足用戶的多種能源需求,如電力、熱能和冷能。
    的頭像 發(fā)表于 04-29 17:26 ?2422次閱讀

    分布式光伏監(jiān)控系統(tǒng)解決方案

    程瑜 安科瑞電氣股份有限公司 上海嘉定 201801 摘 要: 分布式光伏發(fā)電特指在用戶場地附近建設,運行方式多為自發(fā)自用,余電上網(wǎng),部分項目采用全額上網(wǎng)模式。分布式光伏全額上網(wǎng)的優(yōu)點是可以充分利用
    的頭像 發(fā)表于 04-22 15:56 ?1038次閱讀
    <b class='flag-5'>分布式</b>光伏監(jiān)控<b class='flag-5'>系統(tǒng)</b>解決方案

    HarmonyOS實戰(zhàn)案例:【分布式賬本】

    Demo基于Open Harmony系統(tǒng)使用ETS語言進行編寫,本Demo主要通過設備認證、分布式拉起、分布式數(shù)據(jù)管理等功能來實現(xiàn)。
    的頭像 發(fā)表于 04-12 16:40 ?1360次閱讀
    HarmonyOS實戰(zhàn)案例:【<b class='flag-5'>分布式</b>賬本】

    分布式光伏電力監(jiān)控系統(tǒng)解決方案

    安科瑞薛瑤瑤18701709087 分布式光伏現(xiàn)狀 自發(fā)自用、余電上網(wǎng)模式 完全自發(fā)自用(防逆流)模式 全額上網(wǎng)模式 0.4kV并網(wǎng)系統(tǒng) ?
    的頭像 發(fā)表于 03-18 11:18 ?846次閱讀
    <b class='flag-5'>分布式</b>光伏電力監(jiān)控<b class='flag-5'>系統(tǒng)</b>解決方案

    分布式控制系統(tǒng)的七個功能和應用

    分布式控制系統(tǒng)的七個功能和應用? 分布式控制系統(tǒng)是一種由多個獨立的控制單元組成的系統(tǒng),每個控制單元負責系統(tǒng)中的一部分功能。它具有分散的、自治的特性,可以提高
    的頭像 發(fā)表于 02-01 10:51 ?1493次閱讀

    鴻蒙OS 分布式任務調(diào)度

    鴻蒙OS 分布式任務調(diào)度概述 在 HarmonyO S中,分布式任務調(diào)度平臺對搭載 HarmonyOS 的多設備構(gòu)筑的“超級虛擬終端”提供統(tǒng)一的組件管理能力,為應用定義統(tǒng)一的能力基線、接口
    的頭像 發(fā)表于 01-29 16:50 ?534次閱讀

    分布式大屏控制系統(tǒng)對網(wǎng)絡環(huán)境的要求

    分布式大屏控制系統(tǒng)對網(wǎng)絡環(huán)境的要求較高,主要是因為該系統(tǒng)需要實時傳輸大量的視頻信號數(shù)據(jù),以保證多個顯示屏幕的同步顯示。以下是幾個關(guān)鍵的網(wǎng)絡環(huán)境要求: 高帶寬:分布式大屏控制
    的頭像 發(fā)表于 01-29 14:52 ?606次閱讀

    分布式大屏控制系統(tǒng)的應用場景

    分布式大屏控制系統(tǒng)具有廣泛的應用場景,主要涉及以下幾個方面: 監(jiān)控指揮中心:如交通指揮中心、電力調(diào)度中心、應急指揮中心等,用于實時監(jiān)控、調(diào)度和指揮,保證系統(tǒng)的安全、穩(wěn)定、高效運行。 會議中心:在
    的頭像 發(fā)表于 01-29 14:25 ?790次閱讀

    分布式大屏控制系統(tǒng)的工作原理

    分布式大屏控制系統(tǒng)是一種基于分布式計算、云計算和大數(shù)據(jù)技術(shù)的控制系統(tǒng),具有高效、穩(wěn)定、靈活的特點。該系統(tǒng)通過將各個子
    的頭像 發(fā)表于 01-29 14:24 ?802次閱讀