Android设备连接ZooKeeper服务器
最近一直在学习ZooKeeper的相关知识,主要完成了用Android手机连接到ZooKeeper服务器,并进行建立节点、读取节点数据、删除节点等操作。下面对这一学习过程做一下总结。
- 初识ZooKeeper
- ZooKeeper客户端脚本
- ZooKeeper Java客户端API
- Android客户端连接ZooKeeper服务器
- 源码示例
初识ZooKeeper
ZooKeeper是Apache开源的分布式应用程序协调服务,其设计目标是将复杂易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并为用户提供简单易用的接口。
ZooKeeper主要有以下特性:
-顺序一致性:从同一个客户端发起的事务请求,最终会严格按照其发起顺序被应用到ZooKeeper中去。
-原子性:所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的。即要么整个集群的所有机器都成功应用了某一事务,要么都没有应用。
-单一视图:无论客户端连接了哪个ZooKeeper服务器,其看到的服务端数据模型都是一致的。
-可靠性:一旦服务端成功应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会被一直保留下来,除非有别的事务又对其做了变更。
-实时性:ZooKeeper能保证在一定的时间段内,客户端一定能从服务端读取到最新的数据状态。
ZooKeeper客户端脚本
搭建好ZooKeeper集群后,进入ZooKeeper的bin目录,执行./zkCli.sh
即可启动客户端。
-创建节点
create [-s] [-e] path data acl
-读取指定节点下所有子节点
ls path [watch]
-获取指定节点的数据内容和属性信息
get path [watch]
-更新指定节点的数据内容
set path data [version]
-删除指定节点
delete path [version]
ZooKeeper Java客户端API
-创建会话
ZooKeeper(String connectString, int sessionTimeout, Watcher watcher);
connectString指要连接的ZooKeeper服务器列表,host:port形式,多个服务器地址之间用英文逗号隔开。sessionTimeout指会话超时时间,以毫秒为单位。watcher是已经声明的Watcher类的一个对象,指定为默认的Watcher事件通知处理器。
例:ZooKeeper zk = new ZooKeeper("192.168.3.6:2181", 5000, watcher);