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

    文章

    157

    浏览量

    19945
  • Mark
    +关注

    关注

    0

    文章

    21

    浏览量

    8834
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AI Ceph 分布式存储教程资料大模型学习资料2026

    内存层构建分布式缓存池。通过感知训练任务的读取模式系统能够预测下一步需要的数据块,并提前将其从底层存储介质加载至缓存层,实现计算与 I/O 的流水线并行。此外,为了解决 Python 数据加载框架(如
    发表于 05-01 17:35

    绿色能源,智慧监控——安科瑞分布式光伏监控系统助力低碳未来

    的焦点。 一、系统概述:一体化监控,全场景覆盖 Acrel-1000DP分布式光伏监控系统适用于 0.4kV~35kV 电压等级、装机容量从几千瓦到数十兆瓦的
    的头像 发表于 04-22 16:16 911次阅读
    绿色能源,智慧监控——安科瑞<b class='flag-5'>分布式</b>光伏监控<b class='flag-5'>系统</b>助力低碳未来

    分布式迭代求解策略:分布式混合电推进系统飞发一体化设计与能量管理协同优化方法

    随着全球航空业对绿色环保要求的不断提高,分布式混合电推进系统作为传统航空动力向全电飞行器过渡的关键技术,展现出巨大的发展潜力。本文围绕半涡电分布式推进系统的动态实时建模与控制方法展开
    的头像 发表于 03-27 08:54 351次阅读
    <b class='flag-5'>分布式</b>迭代求解策略:<b class='flag-5'>分布式</b>混合电推进<b class='flag-5'>系统</b>飞发一体化设计与能量管理协同优化方法

    分布式能源管理物联网解决方案

    分布式能源系统(如光伏电站、储能电站等)具有设备多样、分布较广、数据量大等特点,传统人工抄表或本地监控模式存在数据滞后、管理低效、优化困难等问题。物通博联(WideIOT)结合边缘计算
    的头像 发表于 01-21 11:39 574次阅读
    <b class='flag-5'>分布式</b>能源管理物联网解决方案

    零碳园区自主供能模式分布式光伏系统

    在零碳园区自主供能体系中,分布式光伏系统是 “就近发电、就近消纳” 的核心载体,其类型选择需适配园区屋顶、空地、水域等不同空间资源,匹配生产、办公、生活等多元用能场景。不同分布式光伏系统
    的头像 发表于 12-20 10:21 583次阅读
    零碳园区自主供能<b class='flag-5'>模式</b>的<b class='flag-5'>分布式</b>光伏<b class='flag-5'>系统</b>

    Acrel-1000DP分布式光伏监控系统成功落地奉贤平高食品 4.4MW 分布式光伏项目

    一、概述 上海华电奉贤平高食品 4408.085kwp 分布式光伏发电项目(以下简称“本项目”)是响应国家“优化能源结构,提供更加清洁、可靠的能源”的号召,投资建设的分布式光伏发电应用示范项目。上海
    的头像 发表于 11-12 10:17 645次阅读

    如何解决分布式光伏计量难题?

    %。同时,可提升发电效率、降低发电成本的新型技术逐步落地,推动光伏系统向更高效、更紧凑的方向发展,进而对电表在精度、数据更新速度及适配性方面也提出了更高要求。 分布式光伏遇计量难题 分布式光伏常用 “自己发的电自己用,用不完的卖
    的头像 发表于 11-07 14:55 498次阅读
    如何解决<b class='flag-5'>分布式</b>光伏计量难题?

    分布式智能展厅控制系统:打造AI互动展示新模式

    近日,某江西某历史博物馆成功应用讯维全新分布式智能展厅控制系统,为数字展厅的音视频交互和环境控制带来了革新。讯维全新分布式智能展厅控制系统通过采用先进的
    的头像 发表于 09-24 16:23 961次阅读
    <b class='flag-5'>分布式</b>智能展厅控制<b class='flag-5'>系统</b>:打造AI互动展示新<b class='flag-5'>模式</b>!

    【节能学院】Acrel-1000DP分布式光伏监控系统在奉贤平高食品 4.4MW 分布式光伏中应用

    摘要:在“双碳”和新型电力系统建设背景下,分布式光伏接入比例不断提高,对配电网电压、调度运行及调峰等环节造成强烈冲击。本文设计包含平台层、设备层二层架构体系的分布式光伏管控平台,以及小容量工商业
    的头像 发表于 08-23 08:04 3762次阅读
    【节能学院】Acrel-1000DP<b class='flag-5'>分布式</b>光伏监控<b class='flag-5'>系统</b>在奉贤平高食品 4.4MW <b class='flag-5'>分布式</b>光伏中应用

    分布式光伏发电监测系统技术方案

    分布式光伏发电监测系统技术方案 柏峰【BF-GFQX】一、系统目标 :分布式光伏发电监测系统旨在通过智能化的监测手段,实现对
    的头像 发表于 08-22 10:51 3607次阅读
    <b class='flag-5'>分布式</b>光伏发电监测<b class='flag-5'>系统</b>技术方案

    园区分布式光伏发电监控系统

    简婷 安科瑞电气股份有限公司 上海嘉定  201801 技术支持18701998775 园区部署分布式光伏发电监控系统,是实现光伏项目高效运营、风险可控、收益大的核心保障,其必要性体现在以下多个维度
    的头像 发表于 07-31 15:49 1341次阅读
    园区<b class='flag-5'>分布式</b>光伏发电监控<b class='flag-5'>系统</b>

    分布式光伏总出问题?安科瑞分布式光伏监控系统来“救场”

    一、分布式光伏的痛点大揭秘 在 “双碳” 目标的大力推动下,分布式光伏作为绿色能源领域的重要力量,正以前所未有的速度蓬勃发展,越来越多的企业和家庭选择安装分布式光伏系统。然而,随着
    的头像 发表于 07-16 16:50 1032次阅读
    <b class='flag-5'>分布式</b>光伏总出问题?安科瑞<b class='flag-5'>分布式</b>光伏监控<b class='flag-5'>系统</b>来“救场”

    Ceph分布式存储系统解析

    在当今数据爆炸的时代,企业对存储系统的需求日益增长,传统的集中式存储已经无法满足大规模数据处理的要求。分布式存储系统应运而生,而Ceph作为开源分布式存储
    的头像 发表于 07-14 11:15 1352次阅读

    分布式光伏发电监控系统

    对高、低压并网分布式光伏电站的升压系统、光伏逆变器等设备进行全面监控,采集微机保护装置、自动控制设备、电能质量监测装置、光伏逆变器、一体化电源等设备数据,并提供有功功率控制(AGC)、电压无功综合
    的头像 发表于 06-25 13:41 1274次阅读
    <b class='flag-5'>分布式</b>光伏发电监控<b class='flag-5'>系统</b>

    双电机分布式驱动汽车高速稳定性机电耦合控制

    摘要:为了利用所设计的双电机防滑差速驱动系统来提高分布式驱动汽车的动力学性能,在前期同轴耦合驱动控制理论研究的基础上,开展该车的高速稳定性机电耦合控制研究。建立并验证包含所设计驱动系统在内的
    发表于 06-18 16:37