Zookeeper实例原生API--复用sessionId和sessionPasswd
来源:互联网 发布:算王算量软件破解版 编辑:程序博客网 时间:2024/06/08 09:10
import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.ZooKeeper;/** * * @ClassName: ZooKeeper_Constructor_Usage_With_SID_PASSWD * @Description: TODO(Java API -> 创建连接 -> 创建一个最基本的ZooKeeper对象实例,复用sessionId和) * @author RongShu* @date 2017年6月11日 下午8:25:09 * */public class ZooKeeper_Constructor_Usage_With_SID_PASSWD implements Watcher { private static CountDownLatch connectedSemaphore = new CountDownLatch(1); public static void main(String[] args) throws Exception{ ZooKeeper zookeeper = new ZooKeeper("localhost:2181",5000,new ZooKeeper_Constructor_Usage_With_SID_PASSWD()); connectedSemaphore.await(); long sessionId = zookeeper.getSessionId(); byte[] passwd = zookeeper.getSessionPasswd(); //Use illegal sessionId and sessionPassWd zookeeper = new ZooKeeper("localhost:2181", 5000,new ZooKeeper_Constructor_Usage_With_SID_PASSWD(),1l,"test".getBytes()); //Use correct sessionId and sessionPassWd zookeeper = new ZooKeeper("localhost:2181", 5000, new ZooKeeper_Constructor_Usage_With_SID_PASSWD(),sessionId,passwd); Thread.sleep( Integer.MAX_VALUE ); } public void process(WatchedEvent event) { System.out.println("Receive watched event:" + event); if (KeeperState.SyncConnected == event.getState()) { connectedSemaphore.countDown(); } }}输出Receive watched event:WatchedEvent state:SyncConnected type:None path:nullReceive watched event:WatchedEvent state:Expired type:None path:nullReceive watched event:WatchedEvent state:SyncConnected type:None path:null
注意:
客户端传入sessionId和sessionPasswd的目的是为了复用会话,以维持之前会话的有效性。
第一次使用了错误的sessionId和sessionPasswd来创建Zookeeper客户端实例,结果客户端接收到服务端的Expired事件通知;而第二次使用了正确的sessionId和sessionPasswd来创建客户端实例,结果链接成功。
参考
1.《从Paxos到Zookeeper:分布式一致性原理与实践》
2.https://zookeeper.apache.org/doc/r3.5.3-beta/javaExample.html
阅读全文
0 0
- Zookeeper实例原生API--复用sessionId和sessionPasswd
- Zookeeper实例原生API--同步创建节点
- Zookeeper实例原生API--异步创建节点
- Zookeeper实例原生API--删除节点
- Zookeeper实例原生API--创建一个基本的Zookeeper会话
- Zookeeper实例原生API--同步获取子节点列表
- Zookeeper实例原生API--异步获取子节点列表
- Zookeeper实例原生API--同步获取节点数据
- Zookeeper实例原生API--异步获取节点数据
- Zookeeper实例原生API--同步更新节点数据
- Zookeeper实例原生API--异步更新节点数据
- Zookeeper实例原生API--检查节点是否存在
- Zookeeper实例原生API--创建会话(包含权限信息)
- Zookeeper实例原生API--删除节点接口权限
- ZooKeeper的原生API
- Zookeeper实例原生API--无权限信息的Zookeeper会话访问有权限信息的节点
- zookeeper C API实例
- Zookeeper Java API 实例
- C语言程序设计(43)
- 洛谷 P1345 奶牛的电信Telecowmunication
- 最长上升子序列问题(LIS)
- HTML基础学习-17-border 边框相关属性学习
- [SG函数] HDU1848: Fibonacci again and again
- Zookeeper实例原生API--复用sessionId和sessionPasswd
- UVA12511
- ActionBar、TitleBar、ToolBar的联系和区别
- Bug生命周期
- 傅盛认知三部曲之一:所谓成长就是认知升级
- UML9种图(1)
- Spring-JDBC-3
- 几种线程池的实现算法分析
- C++中的宏