Paxos算法是一个高容错性的分布式一致性算法。Paxos算法的作者Leslie Lamport 在1982年提出的。下面的分布式协议个人感觉也是借鉴paxos。
paxos算法解决分布式数据一致性。具体步骤如下
1、lead提出议案且这个议案编号是最新议案(一但提出后历史议案作废)
2、follow确认议案是否通过投票
3、lead收集议案结果,如果follow半数通过议案就通过,否则不通过。
lead、follow发送的议案编号可能应为网络延时导致不能及时到达。可能follow确认的议案是历史议案,这就需要保证lead、follow之间的议案编号最新了。我这边方案可以采用类似3次握手确认方案,lead可以确认follow的投票是否最新。
无解。必须选选择一个follow充当lead。
paxos算法首先不是一种负载均衡的算法,强调的是lead承担请求,然后转发给follow处理。所以lead的网络资源首先会成为瓶颈。
不能。需要等待新节点数据集追上集群的数据同步后才能提供服务。
写lead点需要等待follow投票,那么读是否需要?如果不需要如何保证数据一致性?设计系统我觉得应该给follow划分一个数据同步级别,比如100%的同步就可以从follow读取,否则从lead读取。这样设计保证数据一致性,但是网络抖动性能会差。