Zookeeper对XD单节点至关重要吗?

时间:2015-05-14 19:14:31

标签: apache-zookeeper spring-xd

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

文档中只说XD没有随Zookeeper一起提供,我认为只有在我准备好进入多节点时才会需要它。

话虽这么说,我在尝试部署流时遇到了一些不良行为: 1.每次添加流时,它都不会在XD重新启动时保持不变。 2.流设置超时。在调试模式下,它在Spring-dirt中陷入了ModuleDeploymentWriter。如果我正确地阅读该类,似乎它正在编写一个文件,由Zookeeper读取,然后在从未收到响应时超时。

起初我以为这是我的自定义Cassandra XD接收器连接超时,但似乎并没有首先达到代码。

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

  

文档中只说XD没有随Zookeeper一起提供,我认为只有在我准备好进入多节点时才会需要它。

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

  
      
  1. 每次添加流时,它都不会在XD重新启动时保持不变。
  2.   

您使用的是单节点还是分布式模式?如果您使用的是单节点,则每次XD重新启动时,它都会使用不同的ZooKeeper实例。因此,在单节点中,您无法在服务器重新启动之间保持流的持久性。您仍然可以通过在servers.yml中设置zk.client.connect为单节点提供外部ZK配置来覆盖此功能。

  
      
  1. 流设置超时。
  2.   

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

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

答案 1 :(得分:0)

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

如果“debug modue”指的是使用调试器运行SingleNodeApplication,那么如果设置断点,它可能会超时。