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

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

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

分布式系統(tǒng)模式概述——Low-Water Mark

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-12-24 18:51 ? 次閱讀

作者: Unmesh Joshi

譯者: java達(dá)人

預(yù)寫日志中的索引,表示可以丟棄日志的哪一部分。

問題

預(yù)寫日志維護(hù)對持久性存儲的每一次更新。隨著時間的進(jìn)展,它會無限制地增長。Segmented Log允許一次處理較小的文件,但是如果不檢查,總磁盤存儲量將無限制增長。

解決方案

有一種機制可以告訴日志記錄機器可以安全地丟棄日志的哪一部分。該機制提供了最低的偏移量或low water mark,在此之前的日志可以丟棄。讓任務(wù)在后臺的單獨線程中運行,該任務(wù)連續(xù)檢查可以丟棄日志的哪一部分并刪除磁盤上的文件。

this.logCleaner = newLogCleaner(config);this.logCleaner.startup();

日志清理器可以實現(xiàn)為定時任務(wù)

public void startup() { scheduleLogCleaning();}

private void scheduleLogCleaning() { singleThreadedExecutor.schedule(() -> { cleanLogs(); }, config.getCleanTaskIntervalMs(), TimeUnit.MILLISECONDS);}基于快照的Low-Water Mark

大多數(shù)共識實現(xiàn)(例如Zookeeper或etcd(在RAFT中定義))都實現(xiàn)了快照機制。在此實現(xiàn),存儲引擎需要定期快照。除快照外,它還存儲成功應(yīng)用的日志索引。參考“Write-Ahead Log”模式中的簡單鍵值存儲實現(xiàn),可以采取以下快照:

public SnapShot takeSnapshot() { Long snapShotTakenAtLogIndex = wal.getLastLogEntryId(); return new SnapShot(serializeState(kv), snapShotTakenAtLogIndex);}

一旦快照成功保存在磁盤上,日志管理器將獲得Low-Water Mark,以丟棄較舊的日志。

List<WALSegment> getSegmentsBefore(Long snapshotIndex) { List<WALSegment> markedForDeletion = new ArrayList<>(); List<WALSegment> sortedSavedSegments = wal.sortedSavedSegments; for (WALSegment sortedSavedSegment : sortedSavedSegments) { if (sortedSavedSegment.getLastLogEntryId() < snapshotIndex) { markedForDeletion.a(chǎn)dd(sortedSavedSegment); } } return markedForDeletion;}基于時間的Low-Water Mark

在某些系統(tǒng)中,不一定要使用日志來更新系統(tǒng)狀態(tài),可以在給定的時間窗口后丟棄日志,而不必等待任何其他子系統(tǒng)共享可以刪除的最低日志索引。例如,在像Kafka這樣的系統(tǒng)中,日志將保留7周;消息時間超過7周的所有日志段都將被丟棄。對于此實現(xiàn),每個日志條目還包括創(chuàng)建時的時間戳。然后,日志清理器可以檢查每個日志段的最后一個條目,并丟棄早于配置的時間窗口的日志段。

private List<WALSegment> getSegmentsPast(Long logMaxDurationMs) { long now = System.currentTimeMillis(); List<WALSegment> markedForDeletion = new ArrayList<>(); List<WALSegment> sortedSavedSegments = wal.sortedSavedSegments; for (WALSegment sortedSavedSegment : sortedSavedSegments) { if (timeElaspedSince(now, sortedSavedSegment.getLastLogEntryTimestamp()) > logMaxDurationMs) { markedForDeletion.a(chǎn)dd(sortedSavedSegment); } } return markedForDeletion;}
private long timeElaspedSince(long now, long lastLogEntryTimestamp) { return now - lastLogEntryTimestamp;}

例子

?所有共識算法(例如Zookeeper和RAFT)中的日志實現(xiàn)均實現(xiàn)基于快照的日志清理

?Kafka中的存儲實現(xiàn)遵循基于時間的日志清理

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 分布式系統(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)設(shè)計

    。 PTP概述 PTP是一種網(wǎng)絡(luò)時間同步協(xié)議,它允許網(wǎng)絡(luò)中的設(shè)備同步它們的時鐘。PTP基于IEEE 1588標(biāo)準(zhǔn),旨在提供亞微秒級別的時間同步精度。PTP通過在網(wǎng)絡(luò)中傳播時間信息,并使用這些信息來校正本地時鐘,從而實現(xiàn)精確的時間同步。 系統(tǒng)架構(gòu) 基于PTP的
    的頭像 發(fā)表于 12-29 10:09 ?139次閱讀

    安科瑞分布式光伏集中監(jiān)控系統(tǒng)

    1、概述 “十四五”期間,隨著“雙碳”目標(biāo)提出及逐步落實,本就呈現(xiàn)出較好發(fā)展勢頭的分布式光伏發(fā)展有望大幅提速。就“十四五”光伏發(fā)展規(guī)劃,國家發(fā)改委能源研究所可再生能源發(fā)展中心副主任陶冶表示,“雙碳
    的頭像 發(fā)表于 11-12 15:23 ?277次閱讀
    安科瑞<b class='flag-5'>分布式</b>光伏集中監(jiān)控<b class='flag-5'>系統(tǒng)</b>

    淺談屋頂分布式光伏發(fā)電技術(shù)的設(shè)計與應(yīng)用

    【摘要】為了緩解城市用電緊張袁降低人們的用電成本,可以在工業(yè)園區(qū)、辦公樓屋頂?shù)葓鏊鶓?yīng)用屋頂分布式光伏發(fā)電技術(shù)進(jìn)行就近轉(zhuǎn)換、并網(wǎng)發(fā)電袁充分利用建筑物屋頂?shù)奶栙Y源。概述屋頂分布式光伏發(fā)電技術(shù),分析屋頂
    的頭像 發(fā)表于 11-11 15:10 ?749次閱讀
    淺談屋頂<b class='flag-5'>分布式</b>光伏發(fā)電技術(shù)的設(shè)計與應(yīng)用

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

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

    分布式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)勢?

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

    Acrel-1000DP光伏監(jiān)控系統(tǒng)分布式光伏10KV并網(wǎng)系統(tǒng)的應(yīng)用

    分布式光伏發(fā)電系統(tǒng)的發(fā)電量,提高分布式光伏發(fā)電系統(tǒng)的利用率。發(fā)展分布式光伏發(fā)電對優(yōu)化能源結(jié)構(gòu)、實現(xiàn)“雙碳目標(biāo)”、推動節(jié)能減排、實現(xiàn)經(jīng)濟可持續(xù)
    的頭像 發(fā)表于 04-22 15:57 ?531次閱讀
    Acrel-1000DP光伏監(jiān)控<b class='flag-5'>系統(tǒng)</b>在<b class='flag-5'>分布式</b>光伏10KV并網(wǎng)<b class='flag-5'>系統(tǒng)</b>的應(yīng)用

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

    分布式光伏發(fā)電系統(tǒng)的發(fā)電量,提高分布式光伏發(fā)電系統(tǒng)的利用率。發(fā)展分布式光伏發(fā)電對優(yōu)化能源結(jié)構(gòu)、實現(xiàn)“雙碳目標(biāo)”、推動節(jié)能減排、實現(xiàn)經(jīng)濟可持續(xù)
    的頭像 發(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語言進(jìn)行編寫,本Demo主要通過設(shè)備認(rèn)證、分布式拉起、分布式數(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>解決方案

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

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

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

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

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

    分布式大屏控制系統(tǒng)具有廣泛的應(yīng)用場景,主要涉及以下幾個方面: 監(jiān)控指揮中心:如交通指揮中心、電力調(diào)度中心、應(yīng)急指揮中心等,用于實時監(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次閱讀