Zookeeper 是 XD 单节点必备的吗?

Is Zookeeper Essential For XD Single Node?

此问题与XD 1.1有关。2.RELEASE。我是 XD 的新手,所以如果这是一个愚蠢的问题,请原谅。

文档只说 XD 不随 Zookeeper 一起提供,我认为这意味着只有在我准备好使用多节点时才需要它。

也就是说,我在尝试部署流时遇到了一些不希望的行为: 1. 每当我添加一个流时,它在 XD 重新启动后都不会持久存在。 2. 流设置超时。在调试模式下,它卡在 spring-dirt 中的 ModuleDeploymentWriter 中。如果我正确读取 class,它似乎正在写入一个文件供 Zookeeper 读取,然后在从未收到响应时超时。

起初我以为是我的自定义 Cassandra XD 接收器连接超时,但似乎一开始就没有达到该代码。

感谢任何帮助!

The documentation says only that XD does not ship with Zookeeper, and I took this to mean that it would only be needed once I'm ready to go multi-node.

没错。但是,XD 单节点使用嵌入式 ZooKeeper。

  1. Any time I add a stream, it is not persistent across XD restarts.

您使用的是单节点模式还是分布式模式?如果您使用的是单节点,则每次 XD 重新启动时都会使用不同的 ZooKeeper 实例。因此,在单节点中,您无法在服务器重启之间保持流。您仍然可以通过在 servers.yml.

中设置 zk.client.connect 为单节点提供外部 ZK 配置来覆盖此功能
  1. The stream setup is timing out.

一些日志消息或堆栈跟踪可以帮助弄清楚这里发生了什么。如果您使用的是单节点,ModuleDeploymentWriter 应该将部署写入同一 JVM 上 运行 的容器。

如果您 运行 处于 @dturanski 提到的调试模式,您可以尝试在 servers.yml 中增加部署超时 属性 xd.admin.deploymentTimeout。默认为 30 秒。

在单节点中 运行 不需要外部 Zookeeper,因为它启动了嵌入式服务器。这会将状态保存在内存中,因此您会在重新启动之间丢失状态。但是,您可以将其配置为连接到外部 Zookeeper 整体。

如果 "debug modue" 引用 运行ning SingleNodeApplication 与调试器,那么是的,如果您设置断点,它可能会超时。