Raft 协议论文里面的commitIndex 和lastApplied 分别指啥
log 还分已应用的未应用的。log 对应的其实是一个状态机。log存储的是这个状态机的一系列操作。应用 log 导致状态机的状态发生变更。raft 假设log一定是连续应用的,即应用 i th log 需等待 0到i-1 log 都应用完毕。lastApplyIndex 就是指最后一个应用到状态机的 log 序号
■网友
可以把server和raft分层来对待。
打个比方,一个县有三个社区(server), 每个社区都有一个自己的居委会(raft), 负责商议各项提案(request)是否执行。现在这个县收到一个上级(client)的提案(request)。由master居委会(master raft)所在的社区接收这个提案,居委会将其记录在案(log),然后组织三个居委会开始讨论商议(appendentry),只要两个及以上的居委会表示赞成,那么这个县就决定执行这个提案,但是决议不代表这个事就完成了,还要发动社区的人去做事的(commit != execute)。 为了号召相应社区的群众去完成这个提案,必须在社区公告上对该提案进行公示通知(记录commitIndex),意思说群众们,咱们社区又有事要干了。但是完成事情是要时间的,社区(server)只能按照公告栏上提案被公示的时间顺序(commitIndex表示的是最后公示的提案)来一件一件完成相应的提案(lastApplied的表示这个社区刚做完的提案)。所以一个关系是,社区做完的事永远慢于社区需要做的事(lastApplied \u0026lt;= commitIndex)。只有等社区完成了(而不是仅仅通过了)这个提案,上级才能看的到。
【Raft 协议论文里面的commitIndex 和lastApplied 分别指啥】 如果题主在学MIT6.824分布式系统,欢迎交流。
■网友
commitindex指的是已经被大多数节点保存的日志的位置;lastapplyindex是这些被应用到状态机的日志的位置。只有日志被大多数节点commit之后,commitindex才会被更新,之后才可以被apply。
■网友
commit了不一定apply了。举个例子:commitIndex为10,lastAppliedIndex为10,这个时候新的commitIndex出来了,比如说15,这个时候你需要应用11~15的log到状态机中,应用完毕之后lastAppliedIndex就变为15。
推荐阅读
- 非计算机专业想要利用课余时间深入自学C++,想要找到比较体面的工作大概需要啥水平
- 这样的情况我该咋办
- 贵州对于大数据有哪些方面的地域优势为啥都是贵州呢
- 想要找图形图像方面的CTO合伙人,怎样寻找靠谱
- 提问知乎:容联云通讯是咋付费删负面的
- 网络存储,数通,安全,这三个方面的工程师主要都是干啥,在现今那个技术找工作容易些呢
- 请问这段代码是啥意思,从一个仿造网站上下载的软件里面的,对电脑有危害吗
- 关于环艺 建筑 展示这三方面的网站或书籍杂志推荐
- ucloud售前架构师怎样在销售团队里面的职责主要是啥
- 自己做邮件群发需要学习哪些电脑方面的知识
