基于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 a simple smtp class
Nov 26 PHP
php2html php生成静态页函数
Dec 08 PHP
PHP实现微信公众平台音乐点播
Mar 20 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
php实现可逆加密的方法
Aug 11 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 PHP
Yii2 GridView实现列表页直接修改数据的方法
May 16 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
php+mysql+jquery实现日历签到功能
Feb 27 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
Mar 25 PHP
php 如何设置一个严格控制过期时间的session
May 05 PHP
PHP实现的简单适配器模式示例
Jun 22 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 生成文字png图片的代码
2011/04/17 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
PHP静态文件生成类实例
2014/11/29 PHP
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
2014/10/17 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
2018/03/03 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
Java多态性的定义以及类型
2014/09/16 面试题
俄语专业职业生涯规划
2014/02/26 职场文书
经典安踏广告词
2014/03/21 职场文书
推广活动策划方案
2014/08/23 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
旅游项目合作意向书
2015/05/08 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL