zookeeper java api

一、建立zookeeper会话 Zookeeper(String connect , int timeout, Watcher watcher)

1: Watcher : 用于接受会话事情一个对象,这个对象需要我们自己创建。客户端需要实现watcher接口来监控与zookeeper之间会话的情况。

2、如果zookeeper服务至少由三台服务器组成,那么一个服务器的故障并不会导致服务中断。而客户端也会很快收到disconnected 事情,之后便为syncConnected事件 。

3、当zookeeper启动后,可以telnet连接,然后再通过stat 和 dump 命令看看服务器 运行情况和状态。

4、获取管理权: 我们使用zookeeper实现简单的群首选举法。所有的机器都会尝试创建/master节点,但只有一个成功,这个成功的机器会成为主节点。 处理两种关键的异常: ConnectionLossException 和 InterruptedException

6、异步获取管理权: 

void create(string path , byte[] data , List<ACL> acl,CreateMode createmode,AsyncCallback cb,Object ctx)

(1) 该方法调用后通常在create请求发送到服务端前,就返回。 当服务器接收到create请求的结果时,会执行回调对象的方法,同时上下文参数也会传到回调对象的方法中。

(2) 回调函数处理: 因为只有一个单独的线程处理所有回调调用,一般避免使用同步的方法。

7、设置元数据(协同数据): 需要设置三个永久的目录 /workers , /task , /assgin

8、注册从节点: 每个从节点会在/workers 下创建一个临时性的znode节点。 需要将从节点的状态信息存入代表从节点的znode节点,可以就可以查znode,得到从节点的状态。

(在设置状态时,要使用同步检测的方式,避免出现连接丢失是补发操作)

9、任务队列化:我们会在 /tasks节点来添加子节点,表示需要执行的命令。会使用有序节点,这样做有两个好处,第一,序列号指定了任务被队列化的顺序,第二,可以创建基于序列号的唯一路径。

猜你喜欢

转载自kayak2015.iteye.com/blog/2299349