51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

ZooKeeper的3种连接方式

有 命令行终端链接 zookeeper ,webj界面链接,还有 java代码或者 python的方式。

(1)web界面链接:

这个方法请参考:zkWEB (zookeeper 可视化插件)

(2) 使用客户端命令连接Zookeeper

我们安装完 zookeeper后

直接在终端输入:

zkCli.sh # 连接本地
zkCli.sh -server elk101:2181  # 连接指定节点
zkCli.sh -server elk101:2181,elk102:2181,elk103:2181  # 连接集群

quit 退出终端

链接成功后


2023-06-03 10:50:54,454 [myid:localhost:2181] - INFO  [main-SendThread(localhost:2181):o.a.z.ClientCnxn$SendThread@1179] - SASL config status: Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2023-06-03 10:50:54,471 [myid:localhost:2181] - INFO  [main-SendThread(localhost:2181):o.a.z.ClientCnxn$SendThread@1011] - Socket connection established, initiating session, client: /0:0:0:0:0:0:0:1:55912, server: localhost/0:0:0:0:0:0:0:1:2181
2023-06-03 10:50:54,488 [myid:localhost:2181] - INFO  [main-SendThread(localhost:2181):o.a.z.ClientCnxn$SendThread@1452] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, session id = 0x1000506ed6c0004, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] 

然后我们输入:

ls /

列出所有的 zknode

其他的命令参考:

2.zookeeper的基本使用
- 查:
	- ls /
		查看/路径下有多少个znode。(可以理解为linux目录)
		
	- get /baimei
		查看"/baimei"是否有数据。
	
	- stat /school
		查看/school的znode状态信息。

	
- 增:
	- create /baimei
		在"/"路径下创建一个baimei的znode。
		
	- create /school www.baimei.com
		在创建"/school"同时写入数据。

	-  create /school/class baimei
		在"/school"路径下,创建一个名为"class"的znode,其数据为baimei。
	
	- create -s /school/class 123
		创建"/school/class"为前缀,
		
		
- 改:
	- set /baimei 123
		修改"/baimei"的znode的数据。
		
	
- 删:
	- delete /baimei
		删除"/baimei"的znode。
	
	- deleteall /school
		递归删除"/school"下的所有znode数据。

(3)java代码方式链接:

POM添加引用

<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.8.1</version>
</dependency>

版本要对应的, 使用代码模拟增删改查

import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;

import java.io.IOException;
import java.util.concurrent.CountDownLatch;

public class zkClient {
    public static void main(String[] args) throws IOException, KeeperException, InterruptedException {
        final CountDownLatch countDownLatch = new CountDownLatch(1);

        ZooKeeper zk = new ZooKeeper("10.168.x.23:2181,10.168.x.23:2182,10.168.x.23:2183", 3000, new Watcher() {
            @Override
            public void process(WatchedEvent event) {
                if (event.getState() == Event.KeeperState.SyncConnected) {
                    countDownLatch.countDown();
                }
                System.out.println("Watch =>" + event.getType());
            }
        });
        countDownLatch.await();

        System.out.println(zk.getState());
        String node = "/app1";
        Stat state = zk.exists(node, false);
        if (state == null) {
            System.out.println("创建节点");
            String createResult = zk.create(node, "0".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            System.out.println(createResult);
        }


        byte[] b = zk.getData(node, false, state);
        System.out.println("获取data值 =》" + new String(b));

        state = zk.setData(node, "1".getBytes(), state.getVersion());
        System.out.println("after update, version changed to =>" + state.getVersion());
        zk.delete(node,state.getVersion());
        System.out.println("delete complete");


        zk.close();
    }

ok

欢迎来撩 :zookeeper汇总

赞(2)
未经允许不得转载:工具盒子 » ZooKeeper的3种连接方式