zookeeper(3) zookeeper的实践及原理

一、基于java API初探zookeeper的使用

   (1)建立连接

  

public static void main(String[] args) {
		
		//NOT_CONNECTED-->CONNECTING-->CONNECTED-->CLOSE 连接的状态
		try {
			final CountDownLatch countDownLatch = new CountDownLatch(1); 
			ZooKeeper zooKeeper = new ZooKeeper("192.168.25.129:2181,192.168.25.130:2181,192.168.25.131:2181", 4000, new Watcher() {
				@Override
				public void process(WatchedEvent event) {
					// TODO Auto-generated method stub
					if(Event.KeeperState.SyncConnected == event.getState()){
						//如果接收到服务端响应事件,连接成功
						countDownLatch.countDown();
					}
				}
			});
			countDownLatch.await();
			System.out.println(zooKeeper.getState());//CONNECTING
			//Thread.sleep(1000);
			//System.out.println(zooKeeper.getState());//CONNECTED
			zooKeeper.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

  (2)节点数据

public static void main(String[] args) {
		
		//NOT_CONNECTED-->CONNECTING-->CONNECTED-->CLOSE 连接的状态
		try {
			final CountDownLatch countDownLatch = new CountDownLatch(1); 
			ZooKeeper zooKeeper = new ZooKeeper("192.168.25.129:2181,192.168.25.130:2181,192.168.25.131:2181", 4000, new Watcher() {
				@Override
				public void process(WatchedEvent event) {
					// TODO Auto-generated method stub
					if(Event.KeeperState.SyncConnected == event.getState()){
						//如果接收到服务端响应事件,连接成功
						countDownLatch.countDown();
					}
				}
			});
			countDownLatch.await();
			System.out.println(zooKeeper.getState());//CONNECTING
			//Thread.sleep(1000);
			//System.out.println(zooKeeper.getState());//CONNECTED
			
			//添加节点
			zooKeeper.create("/lf00","123".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
			Thread.sleep(1000);
			Stat stat = new Stat();
			//得到当前节点的值
			byte[] data = zooKeeper.getData("/lf00", null, stat);
			System.out.println(data.toString()+"---"+stat.getVersion());
			//修改当前节点的值
			zooKeeper.setData("/lf00", "124".getBytes(), stat.getVersion());
			//得到当前节点的值
			byte[] data2 = zooKeeper.getData("/lf00", null, stat);
			System.out.println(data2.toString()+"---"+stat.getVersion());
			//删除节点
			zooKeeper.delete("/lf00", stat.getVersion());
			zooKeeper.close();
			System.in.read();//阻塞进程
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

  

的增删改查

    

猜你喜欢

转载自www.cnblogs.com/flgb/p/10533325.html