zookeeper入门系列-理论基础-paxos协议

本文介绍了PAXOS算法,一种用于解决分布式系统中最终一致性的算法。PAXOS由Leslie Lamport提出,通过两阶段提交的方式确保提案的选定。在第一阶段,proposer选择编号最大的提案并获取多数acceptor的同意;第二阶段,proposer根据反馈提交提案。算法的关键点包括超过半数的投票、选择最大编号的提案以及保证已选值的一致性。对于理解有困难的读者,推荐查看相关文献和示例。
摘要由CSDN通过智能技术生成

上一章讨论了一种强一致性的情况,即需要分布式事务来解决,本章我们来讨论一种最终一致的算法,paxos算法。

paxos算法是由大牛lamport发明的,关于paxos算法有很多趣事。比如lamport论文最初由故事描述来引入算法,以至于那班习惯数学公式的评委将该论文打回,导致该论文延误了8年才公开发表。另外,google的chubby的作者Mike Burrows说过,世界上只有一种一致性算法,那就是paxos。

两将军问题

为了引入该算法,首先提出一种场景,即两将军问题(见文献1):

 

有两支军队,它们分别有一位将军领导,现在准备攻击一座修筑了防御工事的城市。这两支军队都驻扎在那座城市的附近,分占一座山头。一道山谷把两座山分隔开来,并且两位将军唯一的通信方式就是派各自的信使来往于山谷两边。不幸的是,这个山谷已经被那座城市的保卫者占领,并且存在一种可能,那就是任何被派出的信使通过山谷是会被捕。 请注意,虽然两位将军已经就攻击那座城市达成共识,但在他们各自占领山头阵地之前,并没有就进攻时间达成共识。两位将军必须让自己的军队同时进攻城市才能取得成功。因此,他们必须互相沟通,以确定一个时间来攻击,并同意就在那时攻击。如果只有一个将军进行攻击,那么这将是一个灾难性的失败。

两将军问题本质上就是通信被篡改时能否解决一致性问题。这个问题已经被很多人证明不能。(见文献1)。因而由此推及的拜占庭将军

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ZooKeeper是一个开源的分布式协调服务,主要用于维护分布式应用程序中的配置信息和提供命名服务、同步、组服务等功能。它是分布式系统中的一个重要组件,特别适合于大规模的分布式环境。 **入门初体验:** 1. **安装ZooKeeper**: 首先,你需要从Apache官网下载ZooKeeper的安装包,然后根据操作系统(如Linux、Windows或Mac)的指导进行安装。安装完成后,通常会启动一个本地的ZooKeeper服务。 2. **配置客户端**: 在使用ZooKeeper之前,你需要在客户端配置连接到ZooKeeper集群的地址。通常使用的是ZooKeeper的IP和端口号(默认为2181)。 3. **使用命令行工具**: ZooKeeper提供了简单的命令行工具,如`zkCli.sh`,你可以通过这个工具与ZooKeeper交互。例如,`bin/zkCli.sh` 命令行工具可以帮助你查看节点、创建节点、读取数据等。 4. **创建节点**: 使用`create`命令可以创建一个新的ZNode(节点)。例如,`create /myzookeeperpath mydata` 创建一个名为`mydata`的子节点在路径`/myzookeeperpath`下。 5. **数据同步与监听**: ZooKeeper支持数据的实时同步,你可以使用`watch`命令来监听节点变化。当某个节点的数据被修改时,ZooKeeper会发送通知。 6. **理解数据模型**: ZooKeeper的数据模型基于树形结构,根节点(/)下可以有多个子节点,每个节点都有一个数据值和一个状态(如ephemeral、sequential等)。 **相关问题--:** 1. ZooKeeper的主要应用场景是什么? 2. 如何设置ZooKeeper的读写权限? 3. ZooKeeper的ephemeral节点有什么特点?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值