基于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 相关文章推荐
flash用php连接数据库的代码
Apr 21 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
php生成随机数的三种方法
Sep 10 PHP
PHP使用JSON和将json还原成数组
Feb 12 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
PHP正则匹配到2个字符串之间的内容方法
Dec 24 PHP
PHP asXML()函数讲解
Feb 03 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 PHP
PHP日期和时间函数的使用示例详解
Aug 06 PHP
如何使用php生成zip压缩包
Apr 21 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 实用代码收集
2010/01/22 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
javascript 二分法(数组array)
2010/04/24 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
javascript几个易错点记录
2014/11/26 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
js编写选项卡效果
2017/05/23 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python持久性管理pickle模块详细介绍
2015/02/18 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
捐款仪式主持词
2015/07/04 职场文书
pandas进行数据输入和输出的方法详解
2022/03/23 Python