0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分布式系统模式—High-Water Mark

电子设计 来源:电子设计 作者:电子设计 2020-12-24 12:56 次阅读

作者: Unmesh Joshi

译者: java达人

预写日志中的索引,显示最近一次成功的复制。

问题

服务器崩溃并重新启动后,可使用“Write-Ahead Log”模式恢复状态。但是,如果服务器发生故障,Write-Ahead Log不足以提供可用性。如果单个服务器发生故障,则客户端将无法运行,直到服务器重新启动。为了获得更多可用的系统,我们可以在多个服务器上复制日志。使用领导者和追随者模式,领导者会将其所有日志条目复制到追随者法定数。现在,如果领导者失败,则可以选举新的领导者,并且客户可以像以前一样继续使用集群。但是仍然有几处可能出问题:

? leader在将其日志发送给任何追随者之前可能会失败。? 领导者可能会在向一些追随者发送日志条目时失败,无法将其发送给大多数的追随者。

在这些错误场景中,一些追随者可能在其日志中丢失条目,而一些追随者可能拥有比其他追随者更多的条目。因此,对于每个follower来说,了解日志的哪一部分对客户端是安全可用的就变得很重要了。

解决方案

high-water mark是日志文件的一个索引,它记录已知已成功复制到追随者Quorum的最后一个日志条目。在复制过程中,领导者还会将high-water mark传递给追随者。集群中的所有服务器应该只向请求低于high-water mark更新的客户端传输数据。

这是操作顺序:

Figure 1: High-Water Mark

对于每个日志条目,leader将其附加到其本地预写日志中,然后将其发送给所有追随者。

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); }

通过查看所有追随者的日志索引和领导者本身的日志,并获取大多数服务器上可用的索引,可以计算出High-Water Mark。

class ReplicationModule…
Long computeHighwaterMark(List

领导者将high-water mark作为常规心跳的一部分或作为单独的请求向追随者传播。追随者随后相应地设定了他们的high-water mark。

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9119

    浏览量

    85311
  • 分布式系统
    +关注

    关注

    0

    文章

    146

    浏览量

    19218
  • Mark
    +关注

    关注

    0

    文章

    17

    浏览量

    8397
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    分布式光纤测温系统DTS

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

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

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

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

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

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

    程瑜 安科瑞电气股份有限公司 上海嘉定 201801 摘 要: 分布式光伏发电特指在用户场地附近建设,运行方式多为自发自用,余电上网,部分项目采用全额上网模式分布式光伏全额上网的优点是可以充分利用
    的头像 发表于 04-22 15:56 961次阅读
    <b class='flag-5'>分布式</b>光伏监控<b class='flag-5'>系统</b>解决方案

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

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

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

    安科瑞薛瑶瑶18701709087 分布式光伏现状 自发自用、余电上网模式 完全自发自用(防逆流)模式 全额上网模式 0.4kV并网系统  
    的头像 发表于 03-18 11:18 784次阅读
    <b class='flag-5'>分布式</b>光伏电力监控<b class='flag-5'>系统</b>解决方案

    分布式控制系统的七个功能和应用

    分布式控制系统的七个功能和应用  分布式控制系统是一种由多个独立的控制单元组成的系统,每个控制单元负责系统中的一部分功能。它具有分散的、自治的特性,可以提高
    的头像 发表于 02-01 10:51 1353次阅读

    分布式大屏控制系统对网络环境的要求

    分布式大屏控制系统对网络环境的要求较高,主要是因为该系统需要实时传输大量的视频信号数据,以保证多个显示屏幕的同步显示。以下是几个关键的网络环境要求: 高带宽:分布式大屏控制
    的头像 发表于 01-29 14:52 569次阅读

    分布式大屏控制系统的应用场景

    分布式大屏控制系统具有广泛的应用场景,主要涉及以下几个方面: 监控指挥中心:如交通指挥中心、电力调度中心、应急指挥中心等,用于实时监控、调度和指挥,保证系统的安全、稳定、高效运行。 会议中心:在
    的头像 发表于 01-29 14:25 732次阅读

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

    分布式大屏控制系统是一种基于分布式计算、云计算和大数据技术的控制系统,具有高效、稳定、灵活的特点。该系统通过将各个子
    的头像 发表于 01-29 14:24 743次阅读

    什么是分布式架构?

    分布式架构是指将一个系统或应用拆分成多个独立的节点,这些节点通过网络连接进行通信和协作,以实现共同完成任务的一种架构模式。这种架构模式旨在提高系统
    的头像 发表于 01-12 15:04 1225次阅读
    什么是<b class='flag-5'>分布式</b>架构?

    分布式节点服务器是什么?

    部署在不同的服务器上进行处理和存储,以实现负载均衡和容错处理。这种架构模式旨在提高系统的可扩展性、可靠性和性能表现,以满足大规模数据处理、复杂任务处理等需求。 分布式节点服务器的实现方式有多种,其中最常用的
    的头像 发表于 01-12 15:04 735次阅读
    <b class='flag-5'>分布式</b>节点服务器是什么?

    分布式锁的三种实现方式

    分布式锁的三种实现方式  分布式锁是在分布式系统中用于实现对共享资源进行访问控制的一种机制。分布式锁的实现需要考虑高可用性、高性能和正确性等
    的头像 发表于 12-28 10:01 891次阅读