基于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 存取 MySQL 数据库的一个例子
Oct 09 PHP
用PHP 快速生成 Flash 动画的方法
Mar 06 PHP
PHP高级OOP技术演示
Aug 27 PHP
php使用异或实现的加密解密实例
Sep 04 PHP
php中利用str_pad函数生成数字递增形式的产品编号
Sep 30 PHP
PHP+javascript制作带提示的验证码源码分享
May 28 PHP
php中current、next与reset函数用法实例
Nov 17 PHP
PHP工程师VIM配置分享
Dec 15 PHP
PHP面向对象程序设计组合模式与装饰模式详解
Dec 02 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 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读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
如何判断图片地址是否失效
2007/02/02 Javascript
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
详解如何配置vue-cli3.0的vue.config.js
2018/08/23 Javascript
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
微信小程序结合Storage实现搜索历史效果
2019/05/18 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
js实现盒子拖拽动画效果
2020/08/09 Javascript
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
Python中编写ORM框架的入门指引
2015/04/29 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
python线程的几种创建方式详解
2019/08/29 Python
python:动态路由的Flask程序代码
2019/11/22 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
openCV提取图像中的矩形区域
2020/07/21 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
酒店门卫岗位职责
2013/12/29 职场文书
给男朋友的道歉信
2014/01/12 职场文书
求职意向书范文
2014/04/01 职场文书
购房委托书
2014/10/15 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS
python装饰器代码解析
2022/03/23 Python
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL