操作zookeeper,zoo.conf详解

上文中,zk的环境变量已经配置完成。

启动zk

zkServer.sh start

进入zk客户端

zkCli.sh

查找

ls /  ls/zookeeper

创建并赋值

create /zh value

获取值

get /zh

设置值

set /zh value1
可以看到zk集群的数据一致性

递归删除节点

rmr /path 递归删除节点

删除指定某个节点

delete /path/node

创建节点有两种类型:短暂(ephemeral)持久(persistent)

zoo.conf详解

tickTime:基本事件单元,以毫秒为单位。这个时间是zk服务器之间或客户端与服务器之间维持心跳的时间间隔。

datadir:存储内存中数据快照的位置,zk保存数据的目录,默认情况下,将写数据的日志文件也保存在这个位置。

clientPort:这个端口就是客户端连接zk服务器的端口,zk会监听这个端口,接收客户端的请求访问。

initLimit:配置zk接收客户端初始化连接时最长能忍受多少个心跳时间间隔。当超过10个心跳的时间(tickTime)长度后,zk服务器还没有收到客户端的返回信息,那么这个客户端连接失败,总的时长10*2000*20秒。

syncLimit:这个配置标识Leader与Follower之间发送消息,请求和应答时间长度。最长不能超过多个tickTime的时间长度,总时长5*2000*10秒。

server.0=a:b:c:0表示第几个服务器,a标识第几个服务器地址,b表示这个服务器与集群中lader服务器交换信息的端口,d表示万一集群中的lader的服务器挂了,需要一个端口从新进行选举,选出一个新的lader。

java操作zk?

准备工作:zookeeper-3.4.5.jar

public class ZookeeperBase {

	/** zookeeper地址 */
	static final String CONNECT_ADDR = "192.183.131.88:2181,192.168.183.134:2181,192.168.183.135:2181";
	/** session超时时间 */
	static final int SESSION_OUTTIME = 2000;//ms 
	/** 信号量,阻塞程序执行,用于等待zookeeper连接成功,发送成功信号 */
	static final CountDownLatch connectedSemaphore = new CountDownLatch(1);
	
	public static void main(String[] args) throws Exception{
		
		ZooKeeper zk = new ZooKeeper(CONNECT_ADDR, SESSION_OUTTIME, new Watcher(){
			@Override
			public void process(WatchedEvent event) {
				//获取事件的状态
				KeeperState keeperState = event.getState();
				EventType eventType = event.getType();
				//如果是建立连接
				if(KeeperState.SyncConnected == keeperState){
					if(EventType.None == eventType){
						//如果建立连接成功,则发送信号量,让后续阻塞程序向下执行
						connectedSemaphore.countDown();
						System.out.println("zk 建立连接");
					}
				}
			}
		});

		//进行阻塞
		connectedSemaphore.await();
		
		System.out.println("..");
		//创建父节点
//		zk.create("/testRoot", "testRoot".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
		
		//创建子节点
//		zk.create("/testRoot/children", "children data".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
		
		//获取节点洗信息
//		byte[] data = zk.getData("/testRoot", false, null);
//		System.out.println(new String(data));
//		System.out.println(zk.getChildren("/testRoot", false));
		
		//修改节点的值
//		zk.setData("/testRoot", "modify data root".getBytes(), -1);
//		byte[] data = zk.getData("/testRoot", false, null);
//		System.out.println(new String(data));		
		
		//判断节点是否存在
//		System.out.println(zk.exists("/testRoot/children", false));
		//删除节点
//		zk.delete("/testRoot/children", -1);
//		System.out.println(zk.exists("/testRoot/children", false));
		
		zk.close();
		
		
		
	}
	
}

 

转载于:https://my.oschina.net/2286252881/blog/860888

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值