raft相关:Raft 协议论文里面的commitIndex 和lastApplied 分别指什么?

转自知乎@爱搓麻将的小青年

可以把server和raft分层来对待。

打个比方,一个县有三个社区(server), 每个社区都有一个自己的居委会(raft), 负责商议各项提案(request)是否执行。现在这个县收到一个上级(client)的提案(request)。由master居委会(master raft)所在的社区接收这个提案,居委会将其记录在案(log),然后组织三个居委会开始讨论商议(appendentry),只要两个及以上的居委会表示赞成,那么这个县就决定执行这个提案,但是决议不代表这个事就完成了,还要发动社区的人去做事的(commit != execute)。 为了号召相应社区的群众去完成这个提案,必须在社区公告上对该提案进行公示通知(记录commitIndex),意思说群众们,咱们社区又有事要干了。但是完成事情是要时间的,社区(server)只能按照公告栏上提案被公示的时间顺序(commitIndex表示的是最后公示的提案)来一件一件完成相应的提案(lastApplied的表示这个社区刚做完的提案)。所以一个关系是,社区做完的事永远慢于社区需要做的事(lastApplied <= commitIndex)。只有等社区完成了(而不是仅仅通过了)这个提案,上级才能看的到。

给TA买糖
共{{data.count}}人
人已赞赏
百科知识

火车头采集:读取外部cookie功能

2021-5-13 14:21:56

手机数码

努比亚方糖充电器评测

2021-4-26 20:18:27

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索