Zookeeper技术:分布式架构详解、分布式技术详解、分布式事务
2、如CAP理论里面的示例,当向machine1的db1的表tbl_person、tbl_order插入数数据时,同时要把插入的数据同步到machine2、machine3,当machine3的网络有问题时,同步失败,但是过一会网络恢复了就同步成功了,这个同步失败的状态就称为软状态,因为最终还是同步成功了。 最终一致性:data replications经过一段时间达到一致性。 5. Paxos算法 5.1 介绍Paxos算法之前我们先来看一个小故事 拜占庭将军问题 拜占庭帝国就是5~15世纪的东罗马帝国,拜占庭即现在土耳其的伊斯坦布尔。我们可以想象,拜占庭军队有许多分支,驻扎在敌人城外,每一分支由各自的将军指挥。假设有11位将军,将军们只能靠通讯员进行通讯。在观察敌人以后,忠诚的将军们必须制订一个统一的行动计划——进攻或者撤退。然而,这些将军里有叛徒,他们不希望忠诚的将军们能达成一致,因而影响统一行动计划的制订与传播。 问题是:将军们必须有一个协议,使所有忠诚的将军们能够达成一致,而且少数几个叛徒不能使忠诚的将军们作出错误的计划——使有些将军进攻而另一些将军撤退。 假设有9位忠诚的将军,5位判断进攻,4位判断撤退,还有2个间谍恶意判断撤退,虽然结果是错误的撤退,但这种情况完全是允许的。因为这11位将军依然保持着状态一致性。 总结: 1)11位将军进攻城池 2)同时进攻(议案、决议)、同时撤退(议案、决议) 3)不管撤退还是进攻,必须半数的将军统一意见才可以执行 4)将军里面有叛徒,会干扰决议生成 5.2 下面就来介绍一下Paxos算法 Google Chubby的作者Mike Burrows说过这个世界上只有一种一致性算法,那就是Paxos,其它的算法都是残次品。 Paxos:多数派决议(最终解决一致性问题) Paxos算法有三种角色:Proposer,Acceptor,Learner Proposer:提交者(议案提交者) 提交议案(判断是否过半),提交批准议案(判断是否过半) Acceptor:接收者(议案接收者) 接受议案或者驳回议案,给proposer回应(promise) Learner:学习者(打酱油的) 如果议案产生,学习议案。 设定1:如果Acceptor没有接受议案,那么他必须接受第一个议案 设定2:每个议案必须有一个编号,并且编号只能增长,不能重复。越往后越大。 设定3:接受编号大的议案,如果小于之前接受议案编号,那么不接受 (编辑:宿州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |