欢迎来到天天文库
浏览记录
ID:21833909
大小:397.14 KB
页数:15页
时间:2018-10-25
《zookeeper-入门及应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、如何使用Zookeeper作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的B录节点树方式的数据存储,但是Zookeeper并不是用来专门存储数据的,它的作用主要是用來维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到棊于数据的集群管理,后面将会详细介绍Zookeeper能够解决的一些典型问题,这里先介绍一下,Zookeeper的操作接口和简单使用示例、常用接口列表客户端耍连接Zookeeper服务器可以通过创建org.apache.z
2、ookeeper.ZooKeeper的一个实例对象,然后调用这个类提供的接U来和服务器交互。前面说了ZooKeeper主要是用来维护和监控一个0录节点树中存储的数据的状态,所有我们能够操作ZooKeeper的也和操作F1录节点树大体一样,如创建一个目录节点,给某个目录节点设置数据,获取某个目录节点的所有子目录节点,给某个目录节点设置权限和监控这个目录节点的状态变化。这些接UI如下表所示:表1org.apache.zookeeper.ZooKeeper方法歹0表方法名方法功能描述创建一个给定的目录节点path,
3、并给它设置数据,CreateMode标识有四种形式的A录节点,分别是Stringcreate(Stringpath,byte口data,Listacl,CreateModeMode)PERSISTENT:持久化目录节点,这个目录节点,存储的数据不会丢失;crpatpPERSISTENT_SEQUENTIAL:顺序自动编号的目录节点,这种目录节点会根据当前已近存在的节点数自动加1,然后返回给客户端已经成功创建的目录节点名;EPHEMERAL:临时目录节Statexists(Stringpath,boo
4、leanwatch)Statexists(Stringpath,Watcherwatcher)voiddelete(Stringpath,intversion)ListgetChiIdren(Stringpath,booleanwatch)StatsetData(Stringpath,byte[]data,intversion)点,一旦创建这个节点的客户端与服务器端U也就是session超时,这种节点会被自动删除;EPHEMERAL_SEQUENTIAL:临时自6编号节点判断某个path是否存
5、在,并设置是否监控这个A泶节点,这里的watcher是在创建ZooKeeper实例时指定的watcher,exists方法还有一个重载方法,可以指定特定的watcher重载方法,这里给某个目录节点设置特定的watcher,Watcher在ZooKccpcr是一个核心功能,Watcher可以监控目录节点的数据变化以及子目录的变化,一旦这些状态发生变化,服务器就会通知所有设置在这个目录节点上的Watcher,从而每个客户端都很快知道它所关注的S录节点的状态发生变化,而做出相应的反应删除path对应的目录节点,ve
6、rsion为-1可以匹配任何版本,也就删除Y这个A录节点所有数据获取指定path下的所有子目录节点,同样getChi1dren方法也有一个重载方法可以设置特定的watcher监控子节点的状态给path设置数据,可以指定这个数据的版本byte[]getData(Stringpath,booleanwatch,Statstat)voidaddAuthlnfo(Stringscheme,byte[]auth)StatsetACL(Stringpath,Listacl,intversion)List7、>getACL(Stringpath,Statstat)号,如果version为-1怎可以匹配任何版本获取这个path对应的A泶节点存储的数据,数据的版本等信息可以通过stat来指定,同时还可以设置是否监控这个0录节点数据的状态客户端将自己的授权信息提交给服务器,服务器将根据这个授权信息验证客户端的访问权限。给某个目录节点重新设罝访问权限,需要注意的是Zookeeper中的S录节点权限不具冇传递性,父目录节点的权限不能传递给子目录节点。目录节点ACL由网部分组成:perms和id。Perms有ALL、READ8、、WRITE、CREATE、DELETE、ADMIN儿种而id标识了访问目录节点的身份列表,默认情况下有以下两种:ANYONE_ID_UNSAEE=newId(〃'vorld〃,"anyone”)和八UTH_TDS二newIdCauth",〃〃)分别表示任何人都可以访问和创建者拥有访问权限。获取某个目录节点的访问权限列表除了以上这些上表中列出的方法之外还有一些重载方法,如都提供了一个iHj调类的重载
7、>getACL(Stringpath,Statstat)号,如果version为-1怎可以匹配任何版本获取这个path对应的A泶节点存储的数据,数据的版本等信息可以通过stat来指定,同时还可以设置是否监控这个0录节点数据的状态客户端将自己的授权信息提交给服务器,服务器将根据这个授权信息验证客户端的访问权限。给某个目录节点重新设罝访问权限,需要注意的是Zookeeper中的S录节点权限不具冇传递性,父目录节点的权限不能传递给子目录节点。目录节点ACL由网部分组成:perms和id。Perms有ALL、READ
8、、WRITE、CREATE、DELETE、ADMIN儿种而id标识了访问目录节点的身份列表,默认情况下有以下两种:ANYONE_ID_UNSAEE=newId(〃'vorld〃,"anyone”)和八UTH_TDS二newIdCauth",〃〃)分别表示任何人都可以访问和创建者拥有访问权限。获取某个目录节点的访问权限列表除了以上这些上表中列出的方法之外还有一些重载方法,如都提供了一个iHj调类的重载
此文档下载收益归作者所有