**refer to zookeeper 3.2.2**
zookeeper 利用场合:
a.全局配置服务.
其实相当于是利用了zk的高可用性和快速访问的特点,可以将某些全局属性置于其中,当然 由于每个znode是1m存储上限,所以不能是大量的数据.事实上,可以把zk看成是高可用的文件系统也是可以的(high available file system)
b.锁服务
由于zk有EPHEMERAL_SEQUENTIAL创建znode的模式,所以当加入 一个新node时,自动在后缀加1;同时由于是ephemeral的,即便lock znode死了,其它znodes也可以重新进行leader election。
c.队列 管理
与b相似
d。统一命令服务
就是利用了它的树型目录结构的特点,产生唯一的名称。可以在建立znode时指定
---------------------
1.写流程
从以上图可以看出,当client要写操作时,
a)通过已经连接上的follow(也可能是leader)生成一个Request,然后有一串的RequestProcessors传递,直到递到leader;
b1)leader此时开始2pc中的first phase:vote_request,
b2)各followers接受到vote_request后,进行决择 是否可以提交,返回 vote_commit或vote_abort;
--以上b为表决 阶段
c1)当leader收集到所有的表决 結果后进行分析 ,如果 commit人数大于指定quorum便生成一个global_commit,否则生成一个global_abort,transform to all flowers
c2)当所有followers收到leader命令后进行相应 操作,commit or abort 。
--以上c为决定阶段
这样就 构成 一个distributed transaction commit 了。当然 实现上可能不至于这么简单。
可以看出2pc无非就是比较1pc比了b phase,所以是比它安全多了,减少了不一致的概率。当然 ,2pc也可能出现 当global message传递时再现1pc中的情况,但按照概率 的理论,如果 cluster environment比较稳定时效果是理想的。
当然为了防止leader失效时follower不知所措的情况,zookeeper实现为让followers自己重新elect,其实这也是3pc的实现呀!!
置于具体的更新 过程,当follower收到global后,先是进行disk上的update,然后再对znode trees in memory 进行update.
2.读流程
由于client已经连接上了follower,所以读取时直接从当前 peer上读取即可,这就是本页中
为什么可以快速访
问的原因 之一了。
当然它的过程与wite时是相反的,query from memory only .
3.zookeeper中的watch分为zookeeper status event 和 znode events,其中这些events都 是一次性的。即想要获得下次的event必须要调用读取方法时加入watch或true参数。
4.zk中的znode data也是有版本的:
[zk: localhost:2181(CONNECTED) 1] get /test
b
cZxid = 871
ctime = Wed May 25 14:45:32 CST 2011
mZxid = 880
mtime = Wed May 25 15:40:55 CST 2011
pZxid = 871
cversion = 0
dataVersion = 4
其中dataVersion就是真正的版本号,每次修改加1.在命令行中set path data [version]时,version就是此版本,如果 指定的版本与最新 版本不匹配时,将产生错误;置于api中setData(path,value,version)没试过,估计也是此意,此时-1代表忽略版本号。
5.簡易
zookeeper形如一个文件系统,高度精简。
6.decouple
类似spring ioc一样,zookeeper是独立运行的一个组件,可以置于项目中,也可以单独成群。
7.high avaiable
因为所有的server都是peer的运行在replicated mode中,避免了single point failure
8.快速访问capacity
由于读取直接从内存副本中直接 读取,避免了直接access disk的io开销
9.zk怎样实现广播式移除一个peer node?
参见 zab
10.zk怎样实现监听?
thread,http?
see also
:http://leibnitz.iteye.com/blog/908805
http://zookeeper.apache.org/doc/r3.2.2/zookeeperOver.html
- 大小: 102 KB
分享到:
相关推荐
apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper...
#Zookeeper的日志可以用LogFormatter查看 ##命令方式如下 java -classpath .:slf4j-api-1.7.2.jar:zookeeper-3.4.6.jar org.apache.zookeeper.server.LogFormatter /var/lib/zookeeper/version-2/log.1 ##window...
zookeeper 3.6.3 源码
zookeeper linux 搭建流程,zookeeper linux 搭建流程zookeeper linux 搭建流程zookeeper linux 搭建流程。
zookeeper可视化工具
【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】...
dubbo2.6.0 + Zookeeper3.4.9 + Zookeeper3.8.0 + Zookeeper3.7.1
ZooKeeper 未授权访问【原理扫描】,zookeeper安全漏洞修复方法和操作步骤
修改 zookeeper 3.4.14 源码,添加黑、白名单功能。
Zookeeper可以进行集群的配置管理,名字服务,分布式锁,集群管理等等
linux下编译zookeeper3.7.0出的头文件和库: proto.h recordio.h zookeeper.h zookeeper.jute.h zookeeper_log.h zookeeper_version.h libzookeeper_mt.a libzookeeper_mt.la libzookeeper_mt.so libzookeeper_mt....
zookeeper windows
zookeeper-3.4.8zookeeper-3.4.8zookeeper-3.4.8zookeeper-3.4.8
zookeeper教程zookeeper教程zookeeper教程zookeeper教程zookeeper教程
Zookeeper是一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据 ,这里能很好的作为Dubbo服务的注册中心。 Dubbo能与Zookeeper做到集群部署,当提供者出现断电等异常停机时,Zookeeper注册中心...
针对zookeeper的安全漏洞,增加了对访问ip地址的限制。
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、...
zookeeper3.5.5镜像
Zookeeper
包含Zookeeper-3.4.10和Zookeeper-3.5.7的压缩包