精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

分布式系統模式概述——Low-Water Mark

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

作者: Unmesh Joshi

譯者: java達人

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

問題

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

解決方案

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

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

日志清理器可以實現為定時任務

public void startup() { scheduleLogCleaning();}

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

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

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.add(sortedSavedSegment); } } return markedForDeletion;}基于時間的Low-Water Mark

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

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.add(sortedSavedSegment); } } return markedForDeletion;}
private long timeElaspedSince(long now, long lastLogEntryTimestamp) { return now - lastLogEntryTimestamp;}

例子

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

?Kafka中的存儲實現遵循基于時間的日志清理

審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 分布式系統
    +關注

    關注

    0

    文章

    146

    瀏覽量

    19204
  • Mark
    +關注

    關注

    0

    文章

    17

    瀏覽量

    8386
收藏 人收藏

    評論

    相關推薦

    淺談屋頂分布式光伏發電技術的設計與應用

    【摘要】為了緩解城市用電緊張袁降低人們的用電成本,可以在工業園區、辦公樓屋頂等場所應用屋頂分布式光伏發電技術進行就近轉換、并網發電袁充分利用建筑物屋頂的太陽資源。概述屋頂分布式光伏發電技術,分析屋頂
    的頭像 發表于 11-11 15:10 ?308次閱讀
    淺談屋頂<b class='flag-5'>分布式</b>光伏發電技術的設計與應用

    分布式SCADA系統的特點的組成

    在工業自動化和能源管理領域,SCADA(Supervisory Control And Data Acquisition)系統扮演著至關重要的角色。其中,分布式SCADA系統憑借其獨特的結構和功能
    的頭像 發表于 06-07 14:43 ?503次閱讀

    Acrel-1000DP光伏監控系統分布式光伏10KV并網系統的應用

    分布式光伏發電系統的發電量,提高分布式光伏發電系統的利用率。發展分布式光伏發電對優化能源結構、實現“雙碳目標”、推動節能減排、實現經濟可持續
    的頭像 發表于 04-22 15:57 ?489次閱讀
    Acrel-1000DP光伏監控<b class='flag-5'>系統</b>在<b class='flag-5'>分布式</b>光伏10KV并網<b class='flag-5'>系統</b>的應用

    分布式光伏監控系統解決方案

    分布式光伏發電系統的發電量,提高分布式光伏發電系統的利用率。發展分布式光伏發電對優化能源結構、實現“雙碳目標”、推動節能減排、實現經濟可持續
    的頭像 發表于 04-22 15:56 ?919次閱讀
    <b class='flag-5'>分布式</b>光伏監控<b class='flag-5'>系統</b>解決方案

    HarmonyOS實戰案例:【分布式賬本】

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

    分布式光伏電力監控系統解決方案

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

    鴻蒙OS 分布式任務調度

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

    分布式大屏控制系統的工作原理

    分布式大屏控制系統是一種基于分布式計算、云計算和大數據技術的控制系統,具有高效、穩定、靈活的特點。該系統通過將各個子
    的頭像 發表于 01-29 14:24 ?692次閱讀

    什么是分布式架構?

    分布式架構是指將一個系統或應用拆分成多個獨立的節點,這些節點通過網絡連接進行通信和協作,以實現共同完成任務的一種架構模式。這種架構模式旨在提高系統
    的頭像 發表于 01-12 15:04 ?1175次閱讀
    什么是<b class='flag-5'>分布式</b>架構?

    分布式節點服務器是什么?

    部署在不同的服務器上進行處理和存儲,以實現負載均衡和容錯處理。這種架構模式旨在提高系統的可擴展性、可靠性和性能表現,以滿足大規模數據處理、復雜任務處理等需求。 分布式節點服務器的實現方式有多種,其中最常用的
    的頭像 發表于 01-12 15:04 ?712次閱讀
    <b class='flag-5'>分布式</b>節點服務器是什么?

    分布式系統硬件資源池原理和接入實踐

    把各個設備的硬件外設抽象為外設信息單元,外設信息在各個可信設備之間自動同步,如此,實現了外設信息的全局可見;結合分布式硬件虛擬化技術,實現任意設備之間的硬件外設能力跨設備調用;分布式硬件資源池作為系統
    發表于 12-06 10:02

    redis分布式鎖的缺點

    Redis分布式鎖是一種常見的用于解決分布式系統中資源爭用問題的解決方案。盡管Redis分布式鎖具有很多優點,但它也存在一些缺點。本文將從幾個方面詳細介紹Redis
    的頭像 發表于 12-04 14:05 ?1217次閱讀

    如何實現Redis分布式

    Redis是一個開源的內存數據存儲系統,可用于高速讀寫操作。在分布式系統中,為了保證數據的一致性和避免競態條件,常常需要使用分布式鎖來對共享資源進行加鎖操作。Redis提供了一種簡單而
    的頭像 發表于 12-04 11:24 ?668次閱讀

    redis分布式鎖的應用場景有哪些

    Redis分布式鎖是一種基于Redis實現的分布式鎖機制,可以在分布式環境下確保資源的獨占性,避免并發訪問時的數據爭用問題。下面將詳細介紹Redis分布式鎖的應用場景。
    的頭像 發表于 12-04 11:21 ?1400次閱讀

    zookeeper分布式原理

    Zookeeper是一個開源的分布式協調服務,可以用于構建高可用、高性能的分布式系統。它提供了一個簡單且高效的層次命名空間,可以用來存儲配置信息、狀態信息、命名服務等。Zookeeper的設計目標
    的頭像 發表于 12-03 16:33 ?623次閱讀