1

抱歉,这需要解释一下……我们正在使用 YCSB 测试 Cassandra 的性能。我们有一个 3 节点设置和一个 9 节点设置。3 节点设置非常简单:replication=1(无副本)。

我们的 9 节点设置包含 3 个数据中心(每个数据中心 3 个节点)。在 9 节点设置中,我们还保持 replication=1,因为我们知道 Cassandra 的默认 NetworkTopologyStrategy 将自动跨数据中心复制。这有效地为我们提供了每个数据中心的数据副本,这很棒,因为我们想对此进行测试。

我们针对 9 节点设置的只读测试使用 DCAwareRoundRobinPolicy 仅查询“本地”数据中心。因此,我们只查询 9 个节点中的 3 个,并期望得到与我们简单的 3 节点设置类似的结果。事实上,由于 cassandra 的读取修复消息以及我们使用的是 QUORUM 读取一致性,我们预计结果会更糟。

然而,我们发现了相反的情况。我们对 3 节点简单设置性能的只读测试比我们更复杂的 3 数据中心/9 节点设置要差一些。

两个集群上加载的数据是相同的。只读测试在不同的线程数下运行,我们注意到更多的线程存在更大的差异。9 节点设置通过更多线程变得更好,这不应该是这种情况,因为我们验证了我们在“本地”数据中心中连接的只有 3 个节点正在接收查询。

那么,当我们仍然达到相同数量的节点(3)时,为什么在更复杂的设置中读取速度更快?我们的只写测试没有表现出这种行为。

提前致谢!

4

0 回答 0