基于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 相关文章推荐
MySQL相关说明
Jan 15 PHP
PHP执行zip与rar解压缩方法实现代码
Dec 05 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
Oct 27 PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 PHP
深入php list()函数的详解
Jun 05 PHP
Yii使用migrate命令执行sql语句的方法
Mar 15 PHP
PHP树-不需要递归的实现方法
Jun 21 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
Jul 06 PHP
thinkPHP内置字符串截取函数用法详解
Nov 15 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
php 中htmlentities导致中文无法查询问题
Sep 10 PHP
通过PHP实现获取访问用户IP
May 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下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
PHP中array_merge和array相加的区别分析
2013/06/17 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
JS中对象与字符串的互相转换详解
2016/05/20 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
2018/09/20 jQuery
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
详解React 条件渲染
2020/07/08 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
Python Flask框架模板操作实例分析
2019/05/03 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
公司董事长助理工作职责
2014/07/12 职场文书
纪录片信仰观后感
2015/06/08 职场文书
人民的好儿女观后感
2015/06/18 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL