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(&quot;10.168.x.23:2181,10.168.x.23:2182,10.168.x.23:2183&quot;, 3000, new Watcher() {
        @Override
        public void process(WatchedEvent event) {
            if (event.getState() == Event.KeeperState.SyncConnected) {
                countDownLatch.countDown();
            }
            System.out.println(&quot;Watch =&gt;&quot; + event.getType());
        }
    });
    countDownLatch.await();
System.out.println(zk.getState());
String node = &amp;quot;/app1&amp;quot;;
Stat state = zk.exists(node, false);
if (state == null) {
    System.out.println(&amp;quot;创建节点&amp;quot;);
    String createResult = zk.create(node, &amp;quot;0&amp;quot;.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
    System.out.println(createResult);
}


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

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


zk.close();

}

ok

欢迎来撩 :zookeeper汇总

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