java - android 使用 zk 客户端和 curator 连接 zk 获取数据因 connectionLoss 失败
问题描述
zk 客户端:android 使用 curator 4.2
zk 服务器:zk 版本 3.5.6
问题:当我连接 zk 以从“/”获取数据时失败
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /
class MyThread implements Runnable {
@Override
public void run() {
try {
String ip = "192.168.0.111";
System.out.println("start new");
ExponentialBackoffRetry retry = new ExponentialBackoffRetry(10000, 3);
System.out.println("end new");
CuratorFramework curatorFramework = CuratorFrameworkFactory.newClient(ip, retry );
System.out.println("end new2");
curatorFramework.start();
Stat nodeStat = new Stat();
byte[] nodeInfo = curatorFramework.getData()
.storingStatIn(nodeStat)
.forPath("/");
System.out.println("===node info is:" + new String(nodeInfo));
curatorFramework.create().creatingParentContainersIfNeeded()
.withMode(CreateMode.PERSISTENT)
.withACL(ZooDefs.Ids.OPEN_ACL_UNSAFE)
.forPath("/nodeTest", "testData".getBytes());
System.out.println("wtf");
button1.setText("nihaoya");
} catch (Exception e) {
System.out.println( e.toString());
}
}
}
解决方案
ZooKeeper 中的连接字符串不仅仅是 IP 地址。您还必须包括客户端端口(通常为 2181)。此外,您应该在整体中包含所有服务器(我假设您有 3 个)。因此,一个常见的连接字符串是111.111.111.111:2181,222.222.222.222:2181,333.333.333.333:2181
(当然,使用您的 IP 地址)。
推荐阅读
- javascript - 虚拟键盘事件不会在 Web 上触发
- ruby - 有效地将 Jekyll::Document 附加到另一个
- python - 我无法在 python 中使用贪心算法解决分数背包问题
- java - 如何通过两个字段的算术差异在 Elasticserch 中排序
- mediawiki - 我们在哪里可以得到 2010 年以来每年的维基百科转储?
- c++ - VS2019 C++ 成员函数 LNK2005 错误
- php - Wordpress 拦截通过钩子提交
- css - 在 div (图像背景)样式 css 标记中显示 EL 值
- gnuplot - GNUPLOT - 时间序列图的所有点 y 值未定义
- angular - Cloud FireStore 安全规则