cassandra编写吞吐量和可伸缩性

时间:2017-07-19 07:36:15

标签: cassandra scalability throughput

这可能听起来像一个愚蠢的问题,但我仍然希望某人/专家回答/确认这一点。

假设我有一个3节点的cassandra集群。假设我有一个数据库,只有一个表。对于这个单表,假设我得到1K写入/秒的吞吐量与3节点cassandra。如果明天我在这个表上的写入负载增加/扩展到10K或20K,我是否能够通过增加群集的大小10x或20x来处理这个写入负载?

我对cassandra的理解说它是可能的(因为cassandra既可读写又可扩展),但需要专家确认。

4 个答案:

答案 0 :(得分:1)

Datastax声明:

  

Apache Cassandra的好处是什么?

     

可大规模扩展的环形架构:基于最佳的Amazon Dynamo和Google BigTable,Cassandra的点对点架构克服了主从设计的局限性,并实现了高可用性和大规模可扩展性

     

线性比例性能:添加到Cassandra集群的节点(全部在线完成)以可预测的线性方式为读取和写入操作增加了数据库的吞吐量。

所以答案是,这是可能的。添加新节点并重新分配令牌可能需要一些时间。但它会随着您更改节点数量而扩展。

如果您需要更多信息以了解它的扩展方式,请点击以下链接:

  1. Benchmarking Cassandra Scalability on AWS
  2. Adding nodes to Cassandra
  3. Adding, replacing, moving and removing nodes

答案 1 :(得分:1)

是的,Cassandra具有线性可扩展性。

可伸缩性是线性的,如下图所示。每个客户端系统每秒产生大约17,500个写入请求,并且在我们扩大流量时没有瓶颈。每个客户端运行200个线程以在集群中生成流量。

enter image description here

来源:https://medium.com/netflix-techblog/benchmarking-cassandra-scalability-on-aws-over-a-million-writes-per-second-39f45f066c9e

答案 2 :(得分:0)

是的,就是这样,但只有一句话。您应该考虑复制因子(RF)和一致性级别(CL),因为它们也会影响缩放行为。
例如,如果您最初拥有RF = 3的10个节点,并且使用相同的RF = 3将节点数增加到20,那么您将获得写吞吐量的线性增长。
但是,如果要增加读取吞吐量,则需要增加RF。随着RF的增加,您必须降低写入一致性级别以提高写入吞吐量。
总而言之,使用相同的RF和CL参数,您无法以线性方式增加读取和写入吞吐量。

答案 3 :(得分:0)

- 但前提是您的数据已正确建模 - 尤其是您的数据需要在分区键之间均匀分配(因为它们映射到特定的副本节点)以避免出现热点。鉴于此,是的cassandra将水平扩展。

A" table"在cassandra中分布在集群中的所有节点中。每个节点负责一系列令牌,这些令牌是主键的分区键部分的哈希值。

现在,如果您将节点数量增加一倍 - 现有的令牌范围被分成两半并在引导新节点时分配。因此,每个节点必须只处理一半的初始请求。如果您将每个节点之后的请求加倍,则与之前的负载大致相同。

对于读取密集型请求 - 选择更高的复制因子有助于您在一段时间内使用陈旧数据(例如,在低一致性级别读取和写入)。

DataStax提供了很好的教程https://academy.datastax.com/