dedecms如何做网站,贵阳seo计费管理,百度百家自媒体平台注册,外贸石材网站关于共识算法Raft的常见误解 Raft 共识算法最终一致性与线性一致性日志的覆盖与删除Remove节点时需要skip 总结参考文档 Raft 共识算法
最近翻了翻Raft相关的资料#xff0c;同时也总结了日常工作的一些积累#xff0c;就当做Raft技术笔记吧。 由于工作的关系#xff0c;Ra… 关于共识算法Raft的常见误解 Raft 共识算法最终一致性与线性一致性日志的覆盖与删除Remove节点时需要skip 总结参考文档 Raft 共识算法
最近翻了翻Raft相关的资料同时也总结了日常工作的一些积累就当做Raft技术笔记吧。 由于工作的关系Raft是所有组件共用的算法核心包括RocketMQ、Consul、CubeFS等所以对Raft也算脸熟了当然它可能不怎么认识我工作中这种情况挺常见的不知道为什么:- 最终一致性与线性一致性
最终一致性常表述为弱一致性这里的弱是较于强而言后续会有个人基于现实场景中遇到的问题进行对比而线性一致性常说的是强一致性。
日志的覆盖与删除
摘抄网上一篇文章的片段“由于从节点的最大日志数据二元组是7,12与leader发送过来的日志数据6,10不匹配索引11、12的数据将被删除”
Raft 主从同步流程如下 索引6-10会从leader同步Append Entries但是由于leader的索引只是到10follower上的committed index 会重置到10与Leader保持一致参考Raft 安全性原则索引11、12不会做任何更改当leader收到新的写请求后索引递增到11、12那么follower会从leader同步数据此时会覆盖follower上索引11、12的内容会被leader上新写入的内容覆盖由此leader、follower上索引11、12保持一致
上述流程中可以发现并没有删除流程Raft 的读写都从Leader上进行同时Leader是Append-Only的所以删除流程对于Raft来说是不存在的操作。
Remove节点时需要skip
回放时需要跳过remove自身节点的日志否则当前节点无法加入集群 这点尤为重要曾经线上遇到某个节点恢复上线时总是保持分钟级在线然后就自动下线了四处排查总是找不到原因本地也无法复现最后滤逻辑和日志发现remove self了哭笑不得。 总结
未完待续
参考文档
1、Raft wiki