摘要
这是一个关于ZooKeeper正在使用的全序广播协议(Zab)的简短概述。它在概念上很容易理解,也很容易实现,并且提供很高的性能。在这篇文章里,我们会呈现ZooKeeper在Zab上的需求,也会展示这个协议该如何使用,然后我们总体概述一下这个协议是如何工作的。
1. 简介
在雅虎(Yahoo!),我们开发了一款叫做ZooKeeper[9]的高性能高可用的协作服务,它允许大规模的应用群执行协作任务,比如Leader选举、状态传播和会合(rendezvous)。该服务实现了一个层级的数据结点空间——znodes,客户端可以用它来实现自己的协作任务。我们已经发现这个服务有很强的性能扩展性,因此它很容易就满足雅虎的网络规模,关键任务的产品需求。ZooKeeper放弃了锁,通过实现了无等待(wait-free)的共享数据对象,并保证在这些对象上的操作是有序的,以此来代替锁。客户端充分利用这些保障来实现自己的协作任务。一般而言,一个引出ZooKeeper的主要原因就是,对于应用来说,保持更新操作的有序性比其他特定的协作技术更加重要,比如阻塞。
集成到ZooKeeper里的是一个全序的广播协议:Zab。有序的广播是实现我们的客户端保障的关键,同时它也需要在每一台ZooKeeper服务器上维护ZooKeeper的状态副本。这些副本通过使用我们的全序广播协议来保持一致性,比如使用复制状态机[13]。这篇文章主要关注ZooKeeper在该广播协议上的需求以及对它实现的一个概述。
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26