zab协议与paxos协议为什么只保证超过半数的机器保持同步?那剩下的机器是不是会出现不一致的问题?
2023-09-14 09:02:30 时间
zab协议为什么只保证超过一半的机器保持数据同步?这样有什么好处,会造成什么影响,还有剩下的没保证同步的机器,后来是怎么重新进入数据同步状态的?paxos也有类似的问题
举个例子。假设一个集群系统中就存储着一条数据(比如这条数据代表所有人支付宝的总额,所有人都秉承共产主义理念往这个账户里存钱取钱)。这个系统可能有多个客服姑娘(client) 对外服务,响应外部对数据的读写请求(读:看看现在总额多少呀;写:转入或转出资金),而系统内部则是一个个真正干活的工人(host),负责接受客服姑娘的对数据的询问和按照姑娘的指示修改数据。假设在某个时间点,有几个客户同时打电话询问现在总额多少啊。每个客服在完成服务的过程中,需要询问若干个工人才能得到答案来作出判断,最终反馈给客户;并且每个客服在此过程中使用到若干工人非常可能是不一样的。比如,客服1用到了工人1,工人2,工人3;客服2用到了工人1,工人4,工人5;而且每个工人可能知道的数据也是不一样(比如工人5在某个时间点去上厕所了,没有听到把总额加100的要求)。但是尽管可能有部分工人拥有的数据是过时的(就当前情况来看是错误的),但是客服1和客服2通过获取这些工人的回应后判断出来的结果是一样的,这是一致性的一个基本要求(读一致性)。所以你看到,怎么能够保证客服1 客服2的判断出来的是一样的呢?最低要求就是有工人总数一半以上的工人回复的结果是一样的可以,也就是说集群中保证有一半以上的数据是一致的就可以,这样就能满足响应对外读取服务的一致性。至于内部的不一致的工人,通过一定机制同步一下就可以达到一致(比如在某个时间点互相广播一下当前最新记录的时间戳,落后的自动去跟别人获取落下的这段时间的增量日志,然后按照增量日志对自己的记录进行更新)
相关文章
- 快速入门Python机器学习(34)
- 机器学习的思维雏形,离不开两百年前看星星的数学家
- 50个最佳机器学习公共数据集(附链接)
- python数据分析、可视化、Scikit-learn、数据科学、机器学习、深度学习的区别2021.8.17
- 297个机器学习彩图知识点(2)
- 实验室机器安装Windows 10记录 - wuuconix's blog
- 机器学习(三):人工智能主要分支
- 200+机器学习竞赛最全分析:超550万美元总奖金,人人都用PyTorch,2070也能夺冠!
- Wiztalk | 100期 陶阳宇《机器学习平台如何兼顾工业界的高可用性和学术界的创新性-Angel详解及产业应用案例-2》
- TensorFlow 机器学习秘籍第二版:9~11
- Akka(16): 持久化模式:PersistentFSM-可以自动修复的状态机器详解编程语言
- 机器学习相关术语汇总(附带解析)
- 机械手设计与人工智能和机器视觉相结合
- Ansible直接通过IP操作机器
- 机器学习Linux带来的机器学习新机遇(linux linux)