我创建了两个节点Cassandra集群并尝试执行负载测试。我发现一个节点或两个节点在吞吐量上没有太大差别我认为如果1个节点可以为我提供2000 tps的插入两个节点应该加倍。它是那样的吗? 如果不是那么实际Scaling意味着什么,我怎么能与延迟或吞吐量相关联。
答案 0 :(得分:1)
Cassandra可扩展。只是你的情况有点简化,因为两个节点实际上并不是高可扩展性的情况。您应该知道或Cassandra使用的令牌分区算法。一旦你明白了,就不应该有任何问题。有很多关于此的演讲。例如。这一个:http://www.datastax.com/resources/tutorials/partitioning-and-replication
如果是复制因子1,一切都很简单: 您从/向Cassandra保存/读取的每个键值对都是对群集中某个Cassandra节点的查询。数据在节点之间均匀分布(请参阅分区算法的详细信息)。所以你总是在所有节点之间均匀分配总负载 - >更多节点,你可以携带更多的负载(并且它是线性的)。在这种情况下,系统当然应该以正确的方式配置,以避免不同类型的网络瓶颈。
如果复制因子超过1,情况会有点复杂,但原理是相同的。
答案 1 :(得分:0)
有很多因素会导致这种结果。
A)检查您的复制因子。虽然不可取,但在您的情况下,您可以将其设置为1
B)查看主键中的分片。如果您在测试中没有更改它,那么您正在加载倾斜的数据,并且该表未扩展到2个节点。
答案 2 :(得分:0)
当我们说Casssandra可扩展时意味着什么?
基本上有两种扩展数据库的方法。
垂直缩放往往更像是一种“创可贴”#34;或临时解决方案,因为它有非常有限的限制。你的机器只支持如此多的RAM或许多内核,一旦你最大限度地发挥出来,你真的无处可去。
Cassandra是可扩展的"因为它简化了水平缩放。如果您发现现有节点正在最大限度地利用其可用资源,则只需添加其他节点,调整复制因子并运行nodetool repair
即可。如果您不得不与其他数据库产品一起使用,您将会欣赏Cassandra如何(相对)轻松实现这一目标。
在您的情况下,如果没有(很多)更多细节,很难知道到底发生了什么。但是如果您的第一个节点正在充分处理您的负载测试,那么我可以看到为什么您不会通过添加另一个节点来发现差异。
如果您还没有,请查看Cassandra Stress Tool。
此外,请务必根据本文检查您当前的方法,该文章的标题为:How not to benchmark Cassandra