蚂蚁金服开源 SOFAJRaft:出产级 Java Raft 算法库
3.Snapshot and log compaction:按时天生 snapshot,实现 log compaction 加快启动和规复,以及 InstallSnapshot 给 Followers 拷贝数据,如下图: 本图出自《In Search of an Understandable Consensus Algorithm》 4.Membership change:用于集群线上设置改观,好比增进节点、删除节点、替代节点等。 5.Transfer leader:主动改观 leader,用于重启维护,leader 负载均衡等。 6.Symmetric network partition tolerance:对称收集分区容忍性。 如上图 S1 为当前 leader,收集分区造成 S2 不绝增进当地 term,为了停止收集规复后 S2 提倡推举导致正在本心 事变的 leader step-down,从而导致整个集群从头提倡推举,SOFAJRaft 中增进了 pre-vote 来停止这个题目的产生。 SOFAJRaft 中在 request-vote 之前会先举办 pre-vote(currentTerm + 1, lastLogIndex, lastLogTerm),大都派乐成后才会转换状态为 candidate 提倡真正的 request-vote,以是分区后的节点,pre-vote 不会乐成,也就不会导致集群一段时刻内无法正常提供处事。 7.Asymmetric network partition tolerance:非对称收集分区容忍性。 如上图 S1 为当前 leader,S2 不绝超时触发选主,S3 晋升 term 打断当前 lease,从而拒绝 leader 的更新。
8.Fault tolerance:容错性,少数派妨碍不影响体系整体可用性,包罗但不限于: 1)呆板掉电 2)强杀应用 3)慢节点(GC, OOM 等) 4)收集妨碍 5)其他各类奇葩缘故起因导致 raft 节点无法正常事变 9.Workaround when quorate peers are dead:大都派妨碍时,整个 grop 已不具备可用性,安详的做法是守候大都节点规复,只有这样才气担保数据安详;可是假如营业越发追求体系可用性,可以放弃数据同等性的话,SOFAJRaft 提供了手动触发 reset_peers 的指令以敏捷重建整个集群,规复集群可用。 10.Metrics:SOFAJRaft 内置了基于 Metrics 类库的机能指标统计,具有富厚的机能统计指标,操作这些指标数据可以辅佐用户更轻易找出体系机能瓶颈。 11.Jepsen:除了几百个单位测试以及部门 chaos 测试之外, SOFAJRaft 还行使 jepsen 这个漫衍式验证和妨碍注入测试框架模仿了许多种环境,都已验证通过: 1)随机分区,一大一小两个收集分区 2)随机增进和移除节点 3)随机遏制和启动节点 4)随机 kill -9 和启动节点 5)随机分别为两组,互通一此中间节点,模仿分区环境 6)随机分别为差异的 majority 分组 机能优化 除了成果上的完备性,SOFAJRaft 还做了许多机能方面的优化,这里有一份 KV 场景(get/put)的 Benchmark 数据, 在小数据包,读写比例为 9:1,担保线性同等读的场景下,三副本最高可以到达 40w+ 的 ops。 这里挑重点先容几个优化点:
(编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |