【发布时间】:2018-11-01 10:26:10
【问题描述】:
我试图针对多个备份节点系统实现一个简单的单个主节点,以了解分布式和容错架构。
目前我的系统是这样的:
N 个不同的节点,每个节点都相同。 1 个主节点运行一个简单的网络服务器。
所有节点都使用简单的心跳协议相互通信,并且每个节点都保持全局状态(可用节点的数量、谁是主节点、彼此的停机时间和正常运行时间。)
如果任何节点在一段时间内没有收到主节点的消息,则发出警报。如果达成共识,master 宕机,则选举新的 master。
-
如果节点网络被分区。
- 并且master在minor partition,那么它会停止服务请求,并在设定的一段时间后自行down掉。 Minor group 不能选举 master(一些最小节点需要做出决定)
- 在未收到旧 master 的消息后,新 master 在主分区中被选中。
Now I am stuck with a problem, that is, in the step 4 above, there is a time gap where the old master is still serving the requests, while new master getting elected in the major node.
如果某些客户端决定将新数据写入旧主机,这似乎会导致整个系统的数据不一致。我们如何避免这个问题。如果有人指出我正确的方向会很高兴。
【问题讨论】:
标签: distributed-computing distributed-system fault-tolerance