RAFT中的COMMIT

RAFT中的COMMIT涉及到日志的安全应用和Leader的角色。当Leader确定大多数节点已复制日志并更新LeadCommit参数,日志被视为Committed。在投票过程中,仅比较LastLogIndex和LastLogTerm,可能导致已执行的日志被新Leader覆盖,引发不一致。Raft算法通过不让Leader提交前任期日志来避免此问题,确保Commit的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先上结论:
Commit这个概念不仅仅需要考虑被大多数节点说接受,同时也需要考虑是否在当前任期,Leader只能Commit当前任期内的内容。

1. commit意味着什么

看下原文中的两处介绍。
An entry is considered committed if it is safe for that entry to be applied to state machines.
当日志安全被应用在状态机中时,则其为Commited。

The leader decides when it is safe to apply a log entry to the state machines; such an entry is called committed.
Leader决定将log应用到状态机的时间,应用的log则为Commited.

2. 需要明确的概念

Commit是如何进行维护的呢?

  1. 首先是Leader确定大多数节点已经将日志复制到本地,随后Leader更新LeadCommit参数。

  2. 接着各Server接受到新的心跳,收到Leader的信息,更新本地CommitIndex

  3. 投票选举的过程
    · 每一个Server会维持一个LastLogIndex和LastLogTerm,作为与其他节点交流时,进行新旧比较的依据。
    · 当Candidate发送给Follower RequestVote RPC请求后,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值