2

我正在使用 cassandra 2.1.2 和 datastax cassandra-driver-core-2.1.2。这是一个奇怪的问题:当创建键空间(或创建、删除表)时,我的一些客户收到重复的事件,大约 200 多次。我的集群和我的客户在不同的地方(不在一个局域网中)。这会导致很多问题,一旦客户端收到这样的事件,它应该刷新模式,并从 system.keyspaces 等中获取所有模式信息。最后,它还会刷新NodeListAndTokenMap。所有这些操作都可能导致一些数据传输,一秒钟内 200 多个事件是可怕的。所以任何人都知道为什么以及如何预防?

感谢您阅读本文。

4

1 回答 1

0

当您提到“我的一些客户收到重复事件”时,我假设您有多个集群实例,对吗?如果您只有一个 Cluster 对象并且您收到多个事件,我想知道这是否是一个错误。java-driver 将只订阅 1 个连接(名为“控制连接”)到每个集群实例的模式、拓扑和节点状态更改。该连接最初是与您的一个联系点建立的(如果连接丢失,它将选择集群中的另一个节点)。

在不了解更多关于您的配置的情况下,我会考虑以下内容:

  1. 遵循4 条简单规则,即每个应用程序 (JVM) 仅创建 1 个集群实例。
  2. 如果您想阻止 1 个节点负责向您的客户端发送事件,请随机化您的联系点,以便控制连接并不总是主要选择同一个节点。(注意:有一张票,因此 java-driver 可以为您执行此操作,JAVA-618
于 2015-03-17T18:36:58.823 回答