在分布式系统中,有许多场景需要节点之间达成共识,比如:
- 选举 在有主节点的架构中,有时会出现主节点宕机的情况,这时候就需要进行新的一轮选举。这里经常出现的是裂脑(split brain)。
- 原子提交 也就是常说的分布式事务,在不同节点执行一个原子事务操作。
对于分布式事务,最简单的有效解决方法是两段提交。但它存在明显的单点(协调者)问题:一旦协调者在请求阶段和提交阶段之间宕机,系统将陷入阻塞状态。工程中的实现叫做XA。
进一步的,有三段提交,但是它要求明确的宕机检测机制:当请求发送超过一定时长(即超时),就能确认节点宕机。而这个要求在网络不稳定的情况下很难达到。
在分布式系统中,考虑到节点容错情况下的共识实现算法有:zab,Paxos,Raft。这些算法达成了全局消息顺序一致性,以此来保证全局数据一致性。
网友评论