基于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 12 PHP
一个漂亮的php验证码类(分享)
Aug 06 PHP
PHP上传图片进行等比缩放可增加水印功能
Jan 13 PHP
php sybase_fetch_array使用方法
Apr 15 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
Mar 27 PHP
PHP判断是否连接上网络的方法
Jul 01 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
PHP生成制作验证码的简单实例
Jun 12 PHP
php禁用cookie后session设置方法分析
Oct 19 PHP
详解php中生成标准uuid(guid)的方法
Apr 28 PHP
laravel框架实现去掉URL中index.php的方法
Oct 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
解决php表单重复提交实现方法
2015/09/29 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
javascript实现的listview效果
2007/04/28 Javascript
JavaScript 继承详解(三)
2009/07/13 Javascript
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
js实现抽奖效果
2017/03/27 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
three.js如何实现3D动态文字效果
2021/03/03 Javascript
python 写的一个爬虫程序源码
2016/02/28 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
python实现年会抽奖程序
2019/01/22 Python
Python通过for循环理解迭代器和生成器实例详解
2019/02/16 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
彪马英国官网:PUMA英国
2019/02/11 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
彪马法国官网:PUMA法国
2019/12/15 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
软件测试英文面试题
2012/10/14 面试题
中学生团员自我评价分享
2013/12/07 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书