基于Zookeeper的使用详解


Posted in PHP onMay 02, 2013

更多内容请查看zookeeper官网

Zookper: 一种分布式应用的协作服务

Zookper是一种分布式的,开源的,应用于分布式应用的协作服务。它提供了一些简单的操作,使得分布式应用可以基于这些接口实现诸如同步、配置维护和分集群或者命名的服务。Zookper很容易编程接入,它使用了一个和文件树结构相似的数据模型。可以使用Java或者C来进行编程接入。

众所周知,分布式的系统协作服务很难有让人满意的产品。这些协作服务产品很容易陷入一些诸如竞争选择条件或者死锁的陷阱中。Zookper的目的就是将分布式服务不再需要由于协作冲突而另外实现协作服务。

设计目标 Zookeeper是简易的

Zookeeper通过一种和文件系统很像的层级命名空间来让分布式进程互相协同工作。这些命名空间由一系列数据寄存器组成,我们也叫这些数据寄存器为znodes。这些znodes就有点像是文件系统中的文件和文件夹。和文件系统不一样的是,文件系统的文件是存储在存储区上的,而zookeeper的数据是存储在内存上的。同时,这就意味着zookeeper有着高吞吐和低延迟。

Zookeeper实现了高性能,高可靠性,和有序的访问。高性能保证了zookeeper能应用在大型的分布式系统上。高可靠性保证它不会由于单一节点的故障而造成任何问题。有序的访问能保证客户端可以实现较为复杂的同步操作。

Zookeeper是可重用的

ZooKeeper Service

基于Zookeeper的使用详解

组成Zookeeper的各个服务器必须要能相互通信。他们在内存中保存了服务器状态,也保存了操作的日志,并且持久化快照。只要大多数的服务器是可用的,那么Zookeeper就是可用的。

客户端连接到一个Zookeeper服务器,并且维持TCP连接。并且发送请求,获取回复,获取事件,并且发送连接信号。如果这个TCP连接断掉了,那么客户端可以连接另外一个服务器。

Zookeeper是有序的

Zookeeper使用数字来对每一个更新进行标记。这样能保证Zookeeper交互的有序。后续的操作可以根据这个顺序实现诸如同步操作这样更高更抽象的服务。

Zookeeper是高效的

Zookeeper的高效更表现在以读为主的系统上。Zookeeper可以在千台服务器组成的读写比例大约为10:1的分布系统上表现优异。

数据结构和分等级的命名空间

Zookeeper的命名空间的结构和文件系统很像。一个名字和文件一样使用/的路径表现,zookeeper的每个节点都是被路径唯一标识

ZooKeeper's Hierarchical Namespace

基于Zookeeper的使用详解

实现

下图显示了ZooKeeper服务的高级组件服务。除了请求处理器,Zookeeper服务器组的每个服务器复制他们自己的每个组件。

ZooKeeper Components

基于Zookeeper的使用详解

replicated database是一个存储在内存中的包含整个数据树的结构。所有的更新操作都做日志到硬盘上了。并且写操作在作用在数据库的时候会序列化存储到硬盘上。

每个ZooKeeper服务器都连接了许多个客户端。客户端连接到一个服务器来提交请求。

PHP 相关文章推荐
php中用文本文件做数据库的实现方法
Mar 27 PHP
php获取mysql数据库中的所有表名的代码
Apr 23 PHP
php处理斐波那契数列非递归方法
Feb 04 PHP
解析左右值无限分类的实现算法
Jun 20 PHP
获取URL文件名后缀
Oct 24 PHP
PHP错误和异长常处理总结
Mar 06 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
Jul 02 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
php验证session无效的解决方法
Nov 04 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
Dec 15 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
关于尾递归的使用详解
May 02 #PHP
基于Zend的Config机制的应用分析
May 02 #PHP
Zend的Registry机制的使用说明
May 02 #PHP
Zend的MVC机制使用分析(二)
May 02 #PHP
Zend的MVC机制使用分析(一)
May 02 #PHP
基于Zend的Captcha机制的应用
May 02 #PHP
PHP静态调用非静态方法的应用分析
May 02 #PHP
You might like
php计算十二星座的函数代码
2012/08/21 PHP
php常用表单验证类用法实例
2015/06/18 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
JS location几个方法小姐
2008/07/09 Javascript
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
Jquery ui css framework
2010/06/28 Javascript
JavaScript的arguments对象应用示例
2014/09/15 Javascript
JS实现转动随机数抽奖特效代码
2020/04/16 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
JS判断数组四种实现方法详解
2020/06/29 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
使用Python的PIL模块来进行图片对比
2016/02/18 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
个人简历中的自我评价范例
2013/10/29 职场文书
会计电算化专业毕业生自荐信
2013/12/20 职场文书
财务部出纳岗位职责
2013/12/22 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
2016新年致辞
2015/08/01 职场文书
小学总务工作总结
2015/08/13 职场文书
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript
Python循环之while无限迭代
2022/04/30 Python