摘要

这是一个关于ZooKeeper正在使用的全序广播协议(Zab)的简短概述。它在概念上很容易理解,也很容易实现,并且提供很高的性能。在这篇文章里,我们会呈现ZooKeeper在Zab上的需求,也会展示这个协议该如何使用,然后我们总体概述一下这个协议是如何工作的。

 

1. 简介

在雅虎(Yahoo!),我们开发了一款叫做ZooKeeper[9]的高性能高可用的协作服务,它允许大规模的应用群执行协作任务,比如Leader选举、状态传播和会合(rendezvous)。该服务实现了一个层级的数据结点空间——znodes,客户端可以用它来实现自己的协作任务。我们已经发现这个服务有很强的性能扩展性,因此它很容易就满足雅虎的网络规模,关键任务的产品需求。ZooKeeper放弃了锁,通过实现了无等待(wait-free)的共享数据对象,并保证在这些对象上的操作是有序的,以此来代替锁。客户端充分利用这些保障来实现自己的协作任务。一般而言,一个引出ZooKeeper的主要原因就是,对于应用来说,保持更新操作的有序性比其他特定的协作技术更加重要,比如阻塞。

集成到ZooKeeper里的是一个全序的广播协议:Zab。有序的广播是实现我们的客户端保障的关键,同时它也需要在每一台ZooKeeper服务器上维护ZooKeeper的状态副本。这些副本通过使用我们的全序广播协议来保持一致性,比如使用复制状态机[13]。这篇文章主要关注ZooKeeper在该广播协议上的需求以及对它实现的一个概述。

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式