基于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安全编程之加密功能
Oct 09 PHP
php URL验证正则表达式
Jul 19 PHP
5种PHP创建数组的实例代码分享
Jan 17 PHP
php使用curl和正则表达式抓取网页数据示例
Apr 13 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
PHP的mysqli_select_db()函数讲解
Jan 23 PHP
php中钩子(hook)的原理与简单应用demo示例
Sep 03 PHP
php7 list()、session及其他模块的修改实例分析
May 25 PHP
PHP执行linux命令6个函数代码实例
Nov 24 PHP
PHP7 标准库修改
Mar 09 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概述.
2006/10/09 PHP
简单采集了yahoo的一些数据
2007/02/14 PHP
smarty实现多级分类的方法
2014/12/05 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
php中使用websocket详解
2016/09/23 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
javascript的事件描述
2006/09/08 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
2014/01/09 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
layUI实现三级导航菜单效果
2019/07/26 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
keras得到每层的系数方式
2020/06/15 Python
css3实现超立体3D图片侧翻倾斜效果
2014/04/16 HTML / CSS
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
营销与策划专业毕业生求职信
2013/11/01 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
银行招聘自荐信
2015/03/06 职场文书
二年级作文之动物作文
2019/11/13 职场文书