很抱歉,这需要一些解释......我们正在使用YCSB测试Cassandra的性能。我们有一个3节点设置和9节点设置。 3节点设置非常简单:复制= 1(无副本)。
我们的9节点设置包含3个数据中心(每个数据中心3个节点)。在9节点设置中,我们还保持复制= 1,因为我们知道Cassandra的默认NetworkTopologyStrategy将自动跨数据中心进行复制。这有效地为我们提供了每个数据中心的数据副本,这很好,因为我们想测试它。
针对9节点设置的只读测试使用DCAwareRoundRobinPolicy仅针对“本地”数据中心进行查询。因此,我们只查询9个节点中的3个节点,并期望与我们简单的3节点设置类似的结果。事实上,由于cassandra的读取修复消息以及我们使用QUORUM读取一致性,我们预计结果会更糟糕。
然而,我们发现相反的情况。我们对3节点简单设置性能的只读测试比我们更复杂的3数据中心/ 9节点设置稍差。
两个群集上加载的数据相同。使用不同线程计数运行只读测试,我们注意到更多线程的差异更大。 9节点设置随着线程越多越好,但情况应该不是这样,因为我们验证了我们在“本地”数据中心连接的3个节点只接收查询。
那么,当我们仍然遇到相同数量的节点(3)时,为什么在更复杂的设置中读取速度更快?我们的只写测试没有表现出这种行为。
提前致谢!