2011-01-28 146 views
0

你好我是mohamad硕士学位的学生 我想问一个关于Zookeeper的问题。问阿帕奇动物园管理员

我读到zookeeper中的写入操作首先与连接到服务器的服务器联系,然后领导者投票,当他获得超过一半的服务器时,他回复服务器连接到这个cliend以便继续这个操作。

但我的问题是,什么是投票procccess?我的意思是他们为什么投票? ,第二个问题是他们如何投票发送消息,或者他们如何通知领导者。第三个问题是他们为什么需要投票,我读到有一个版本号码来检查更新数据,为什么他们需要投票?

请任何人都可以尽快回复我。

在此先感谢

回答

1

这是最快我可以。您需要获得Nancy Lynch编写的“分布式算法”一书,以更好地理解这些系统的工作原理。

背景 - 算法范式被称为Paxos,虽然Zookeeper有自己的实现,这有点不同。 Zookeeper以两阶段提交提交数据。使用原子广播协议通过FIFO通道进行所有通信以保持排序。

什么是投票流程 - 投票流程是为了找到领导而不是两个分阶段提交。没有选票没有。 Zxid最高的节点是领导者。

投票是领导选举。两阶段提交用于写入操作。欲了解更多信息,请查看动物园管理员文档,更重要的是了解distal algos书籍,以了解为什么这些事情的行为方式是他们:)。

--Sai

+0

其实在两阶段提交中也有投票。追随者“投票”提交。如果有足够的追随者“投”了提交,那么主人可以提交写入。在这种情况下,可以保证在每个仲裁(超过一半的服务器)中至少有一台服务器已经看到提交。 – 2011-01-28 14:19:59

1

动物园管理员如下一个简单的客户端 - 服务器模型,其中客户端节点(即,机器),使使用该服务,和服务器是提供服务的节点。 ZooKeeper服务器的集合形成一个ZooKeeper集合。在任何时候,一个ZooKeeper客户端连接到一个ZooKeeper服务器。每个ZooKeeper服务器可以同时处理大量的客户端连接。每个客户端周期性地向它连接的ZooKeeper服务器发送ping命令,让它知道它是活着的并且已连接。有问题的ZooKeeper服务器会响应ping的确认,表明服务器也处于活动状态。当客户端在指定的时间内没有收到服务器的确认信息时,客户端连接到集成中的另一台服务器,客户端会话将透明地传输到新的ZooKeeper服务器。 Check this了解动物园管理员架构

当客户端请求读取特定znode的内容时,读取发生在客户端连接到的服务器上。因此,由于只涉及集合中的一台服务器,所以读取快速且可扩展。但是,要成功完成写入操作,ZooKeeper集合的绝大多数节点必须可用。当ZooKeeper服务启动时,来自整体的一个节点被选为领导者。当客户端发出写请求时,连接的服务器将请求传递给领导。然后该领导者向集合的所有节点发出相同的写入请求。如果绝大多数节点(也称为仲裁)成功响应此写入请求,则认为写入请求已成功。然后成功的返回代码返回给发起写入请求的客户端。如果法团的法定节点在集体中不可用,则ZooKeeper服务不起作用。 Check this了解写操作的投票过程

为了服务的可靠性和可扩展性,它被复制到一组机器上。 ZooKeeper使用着名的Paxos算法的一个版本来保持副本的一致性。

动物园管理员给出以下稠度从客户端保证

顺序一致性更新将在它们被发送的顺序来应用。

原子性更新成功或失败 - 没有部分结果。

单个系统映像无论服务器连接到哪个服务器,客户端都会看到相同的服务视图。

可靠性一旦应用更新,它将一直持续到此时间,直到客户机覆盖更新为止。这个保证有两个推论:

及时性该系统的客户端视图保证在一定的时间范围内(大约几十秒)是最新的。客户可以在此范围内看到任何系统更改,或者客户端将检测到服务中断。

以下是回答您的问题

问题1:投票是写操作是否应该被提交或不。

问题2:在动物园管理员合奏客户端和服务器之间的通信发生在使用ZAB protocol

问题3通过消息交换的TCP连接:对于服务是可靠的和容错,数据必须复制到服务器的法定人数。