码迷,mamicode.com
首页 > 其他好文 > 详细

zookeeper 笔记

时间:2016-07-22 22:55:36      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

http://www.biaodianfu.com/zookeeper.html

=======

技术分享

 

 ----

zookeeper这种数据结构有如下这些特点:

1,每个子目录如NameService都被作为znode,这个znode是被她所在的路径唯一标示,

如果Server1这个zndoe的标示为/NameService/Server1

2,znode可以有字节点目录,每个znode可以存储数据,注意ephemeral类型的目录节点不能有字节点目录

3,znode是有版本的,每个znode中存储的数据可以有多个版本,也就是一个访问路径中可以村村多分数据

4,znode可以是临时节点,一旦创建这个znode的客户端与服务端失去联系,这个znode也将自动删除,zk的client和server通信采用长链接方式,每个客户端和服务器通过心跳来保持链接,这个链接状态成为session,如果znode是临时节点,这个session失效,znode也就删除了。

5,znode的目录名可以自动编号,app1-》app2

6,znode可以被监控,包括这个目录节点中存储的数据的修改,字节点目录的编号等。

===========

zookeeper client library 提供了api:

create(path,data,flags):创建一个znode,path为路径,data是要存储在盖znode上的数据,flags常用的有,

  presisten,presistent_sequentail,ephemeral,ephemeral_sequentail

delete(path,version):删除一个znode,可以通过ersion删除指定的版本,如果version是-1的话,表示删除所有的版本

exists(path,watch):判断指定的znode是否存在,并设置是否watch这个znode。这里如果要设置Watcher的话,watcher是在创建zookeeper实例时指定的,如果要设置特定的Watcher的话,可以调用另一个版本的exists(path,watcher)。以下几个带watch的API也都类似。

getData(path,watch):读取指定znode上的数据,并设置是否watch这个znode

setData(path,watch):读取指定znode的数据,并设置是否watch这个znode

getChildren(path,watch):获取指定znode的所有子znode的名字,并设置watch这个znode

sync(path):把所有在sync之前的更新操作都进行同步,达到每个请求都在半数以上的zookeeper server上生效。path目前没有用

setAcl(path,acl):设置指定znode的Acl信息

getAcl(path):获取指定znode的acl信息。

================

zookeeper的应用场景:

1,命名服务:在分布式系统中,通过使用命名服务,客户端能够根据名字获取资源或服务的地址,提供者等信息。被命名的实体通常可以是集群中的机器,提供的服务地址,远程对象等等--这些我们都可以统称为名字(Name)。其中较为常见的就是一些分布式服务框架中的服务地址列表。通过调用zk提供的创建节点的api,能够很容易创建一个全局惟一的path,这个path就可以作为一个名称。

2,配置管理,

技术分享

 

程序总是需要配置的,如果程序分散部署在多个机器上,要逐个配置变得困难。现在把这些配置全部放到zookeeper上,保存在zookeeper的某个目录节点中,然后所有相关应用程序对这个目录节点金像监听,一旦配置信息发生变化,每个应用程序就会受到zookeeper的通知,然后从zookeeper获取新的配置信息应用到系统中就好了。

3,

集群管理

所谓集群管理就在于:是否有及其退出和加入,选举master

对于第一个点,所有机器约定在父目录groupMembers下创建临时节点,然后监听目录节点的字节点变化消息。一旦有机器挂掉,该机器与zookeeper的链接断开,起所创建的临时目录节点被删除,所有其他及其都受到通知:某个兄弟目录被删除了,于是所有人都知道了:他上船了。新机器加入也是类似,所有机器收到通知:新兄弟目录加入,highcount又有了。

对于第二点:我们稍微改变一下,所有机器创建临时顺序编号目录节点,每次选取编号最小的机器作为master就好。

技术分享

 

 ==

4,分布式锁

有个zookeeper的一致性文件系统,锁的问题变得容易。

锁服务可以分为两类,一个保持独占,另一个控制时序。

http://www.biaodianfu.com/zookeeper.html

zookeeper 笔记

标签:

原文地址:http://www.cnblogs.com/li-daphne/p/5697440.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!