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

    浏览量

    19380
  • Mark
    +关注

    关注

    0

    文章

    20

    浏览量

    8463
收藏 人收藏

    相关推荐

    浅谈分布式光伏系统在工业企业的设计及应用

    主要对工业厂区屋顶分布式光伏发电系统的设计及应用进行研究,为工业厂区能源供应提供一种全新的解决思路和技术支持。介绍了工业厂区屋顶分布式光伏系统及其优势,分析了工业厂区屋顶
    的头像 发表于 03-21 14:24 130次阅读
    浅谈<b class='flag-5'>分布式</b>光伏<b class='flag-5'>系统</b>在工业企业的设计及应用

    分布式云化数据库有哪些类型

    分布式云化数据库有哪些类型?分布式云化数据库主要类型包括:关系型分布式数据库、非关系型分布式数据库、新SQL分布式数据库、以列方式存储数据、
    的头像 发表于 01-15 09:43 221次阅读

    基于ptp的分布式系统设计

    。 PTP概述 PTP是一种网络时间同步协议,它允许网络中的设备同步它们的时钟。PTP基于IEEE 1588标准,旨在提供亚微秒级别的时间同步精度。PTP通过在网络中传播时间信息,并使用这些信息来校正本地时钟,从而实现精确的时间同步。 系统架构 基于PTP的
    的头像 发表于 12-29 10:09 299次阅读

    安科瑞Acrel-1000DP分布式光伏监控系统在8.3MWp分布式光伏发电中的应用

    安科瑞分布式光伏监控系统在上海汽车变速器有限公司 8.3MWp分布式光伏发电项目中的应用
    发表于 12-16 15:03 0次下载

    安科瑞分布式光伏集中监控系统

    1、概述 “十四五”期间,随着“双碳”目标提出及逐步落实,本就呈现出较好发展势头的分布式光伏发展有望大幅提速。就“十四五”光伏发展规划,国家发改委能源研究所可再生能源发展中心副主任陶冶表示,“双碳
    的头像 发表于 11-12 15:23 429次阅读
    安科瑞<b class='flag-5'>分布式</b>光伏集中监控<b class='flag-5'>系统</b>

    浅谈屋顶分布式光伏发电技术的设计与应用

    【摘要】为了缓解城市用电紧张袁降低人们的用电成本,可以在工业园区、办公楼屋顶等场所应用屋顶分布式光伏发电技术进行就近转换、并网发电袁充分利用建筑物屋顶的太阳资源。概述屋顶分布式光伏发电技术,分析屋顶
    的头像 发表于 11-11 15:10 1435次阅读
    浅谈屋顶<b class='flag-5'>分布式</b>光伏发电技术的设计与应用

    解决电网逆流难题,实现分布式光伏发电全部自发自用

    自用模式时,需要配置防逆流装置。在分布式光伏系统中,当光伏发电的功率大于本地负荷功率时,多余的电力无法被本地负荷完全消纳,就会流入电网,形成逆流。电网逆流会导致电网
    的头像 发表于 10-31 08:09 1284次阅读
    解决电网逆流难题,实现<b class='flag-5'>分布式</b>光伏发电全部自发自用

    分布式输电线路故障定位中的分布式是指什么

    所谓分布式指的是产品的部署方式,是相对于集中式而言的。 一、部署方式 分散安装:分布式输电线路故障定位系统中的采集装置需要安装在输电线路的多个位置,通常是每隔一定距离设置一个监测点,以确保对整条线路
    的头像 发表于 10-16 11:39 458次阅读
    <b class='flag-5'>分布式</b>输电线路故障定位中的<b class='flag-5'>分布式</b>是指什么

    分布式光纤测温系统DTS

    随着城市用电量的持续增长,电缆负荷日益加重,电缆故障频发成为一个不容忽视的问题。传统的电缆监测手段已经无法满足对电缆状态实时、精准监控的需求,因此部分供电公司采用鼎信分布式光纤测温系统(DTS)来
    的头像 发表于 06-27 17:18 789次阅读

    分布式SCADA系统的特点的组成

    在工业自动化和能源管理领域,SCADA(Supervisory Control And Data Acquisition)系统扮演着至关重要的角色。其中,分布式SCADA系统凭借其独特的结构和功能
    的头像 发表于 06-07 14:43 681次阅读

    【技术分享】EtherCAT 分布式时钟简介

    分布式时钟是EtherCAT技术亮点之一,其精准同步使得整个系统都运行在统一的时钟下,每个EtherCAT从站的同步性远小于1us。本文将介绍引入分布式时钟同步的原因并阐述三种同步模式
    的头像 发表于 06-04 08:25 905次阅读
    【技术分享】EtherCAT <b class='flag-5'>分布式</b>时钟简介

    分布式能源是什么意思?分布式能源有什么优势?

    分布式能源指的是在用户端或靠近用户端的小型能源供应系统,它能够直接满足用户的多种能源需求,如电力、热能和冷能。
    的头像 发表于 04-29 17:26 2757次阅读

    Acrel-1000DP光伏监控系统分布式光伏10KV并网系统的应用

    分布式光伏发电系统的发电量,提高分布式光伏发电系统的利用率。发展分布式光伏发电对优化能源结构、实现“双碳目标”、推动节能减排、实现经济可持续
    的头像 发表于 04-22 15:57 628次阅读
    Acrel-1000DP光伏监控<b class='flag-5'>系统</b>在<b class='flag-5'>分布式</b>光伏10KV并网<b class='flag-5'>系统</b>的应用

    分布式光伏监控系统解决方案

    分布式光伏发电系统的发电量,提高分布式光伏发电系统的利用率。发展分布式光伏发电对优化能源结构、实现“双碳目标”、推动节能减排、实现经济可持续
    的头像 发表于 04-22 15:56 1187次阅读
    <b class='flag-5'>分布式</b>光伏监控<b class='flag-5'>系统</b>解决方案

    HarmonyOS实战案例:【分布式账本】

    Demo基于Open Harmony系统使用ETS语言进行编写,本Demo主要通过设备认证、分布式拉起、分布式数据管理等功能来实现。
    的头像 发表于 04-12 16:40 1482次阅读
    HarmonyOS实战案例:【<b class='flag-5'>分布式</b>账本】