分布式存储的节点个数为什么必须是奇数

为什么zoo-keeper 的节点必须是奇数个, 或者分布式存储的节点必须是奇数个

  1. 系统要求节点获得大多数支持时才可以更新数据,当集群脑裂时, 如果小集群的节点数相等,那么都没有大多数的支持,也就无法提供服务。
  2. 当集群恢复时,必须以大多数的小集群去覆盖少数的小集群, 如果平分了集群,则无法恢复数据

分布式存储的目标和不可能三角CAP

CAP很多人都知道,图片也很清除了。这里不多说

分布式的算法 Raft 简介

Raft 涉及的阶段

  1. 选举: 每个集群都要有领导节点。选举等待超时后, 节点向其它节点拉票, 得到majority票的节点成为领导节点
  2. 二段提交: 领导节点接受更新请求,并保存到binlog, 然后同步binlog 到其它节点, 同步成功之后。领导节点提交,然后通知其它节点提交
  3. 心跳超时: 领导节点定时向所有节点发送心跳,收到心跳后,重置心跳超时,如果心跳超时,则节点会发起新的选举

Raft 的流程

1 -> 2 -> 3 -> 1 循环

心跳办法, 有java的 jgroups

最后raft 官网

https://raft.github.io/

猜你喜欢

转载自www.cnblogs.com/hustcpp/p/12424979.html