基于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 ? EasyUI DataGrid 资料存的方式介绍
Nov 07 PHP
ajax取消挂起请求的处理方法
Mar 18 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
May 08 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
PHP函数http_build_query使用详解
Aug 20 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
php开发工具有哪五款
Nov 09 PHP
php验证手机号码
Nov 11 PHP
Yii2中cookie用法示例分析
Jul 18 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
一个非常实用的php文件上传类
Jul 04 PHP
PHP底层运行机制与工作原理详解
Jul 31 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代码实现爬虫记录――超管用
2015/07/31 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
javascript常用的设计模式
2017/02/09 Javascript
js模态对话框使用方法详解
2017/02/16 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
Python 中的 else详解
2016/04/23 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
django修改models重建数据库的操作
2020/03/31 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
电气自动化专业职业规划范文
2014/02/16 职场文书
外国人聘用意向书
2014/04/01 职场文书
2014年最新学校运动会广播稿
2014/09/17 职场文书
学习心理学的体会
2014/11/07 职场文书
思想道德自我评价2015
2015/03/09 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
粗暴解决CUDA out of memory的问题
2021/05/22 Python
新手初学Java网络编程
2021/07/07 Java/Android