1

我如何构建一个测试来告诉我正在写入哪些 Cassandra 节点,所以我想指定节点数和复制因子,并返回由于尝试插入而受到每次写入影响的节点。这将告诉我数据在运行时分布的均匀程度。我有测试数据,所以我真正需要的是一种调用模拟 Cassandra 的方法,该方法配置了我在生产中运行的方式,它将返回给我哪个节点受到影响。我看不到使用 Cassandra 压力工具的方法,除非我完全想念它......

4

1 回答 1

1

由于您有兴趣了解受查询影响的所有节点,因此我建议您查看跟踪。

您可以采取以下几种方法:

  1. 使用 cassandra-stress 并在每个 C* 节点上使用nodetool settraceprobability启用跟踪,并将其设置为 0.01 等低值。这将启用对 1% 的查询的查询,您可以通过 system_traces.events 和会话表观察系统中的跟踪结果(有关如何使用这些表的更多信息,请参阅本文)。跟踪将包括诸如哪个节点被用作协调器、哪些其他节点被用作读/写副本以及处理各个步骤所花费的时间等信息。请注意,您的应用程序最终查询数据的方式可能与 cassandra-stress 略有不同,因为查询的节点受集群配置的影响。cassandra 压力用途JavaDriverClient#connect。您将希望将您的配置与 JavaDriverClient 正在执行的操作进行比较并了解差异。您还可以修改 JavaDriverClient 以匹配您的应用程序。
  2. 您可能还想针对使用 cassandra 的应用程序编写测试。java-driver 有一个 API 用于启用跟踪和观察我在此处的视频中记录的数据。此外,当您返回 ResultSet 时,有一个方法getExecutionInfo()提供诸如尝试了哪些主机之类的信息,但这仅包括用作协调器的节点,而不是所有副本。
于 2015-07-15T15:28:28.793 回答