Cassandra 读取延迟在写入时增加
Cassandra read latency increases while writing
我有一个 cassandra 集群,它的读取延迟在写入期间增加。写入主要通过夜间的 spark 作业进行。写入发生在巨大的突发中,有没有办法减少写入期间的读取延迟。使用 LOCAL_QUORUM 进行写入,使用 LOCAL_ONE 进行读取。有没有办法减少写入时的读取延迟?
Cassandra 集群配置
10节点cassandra集群(DC1中5个,DC2中5个)
CPU: 8 核
内存:32GB
Grafana 指标
我可以给点建议:
使用LCS压缩策略。
首选 round-robin 读取负载平衡策略。
明智地选择partition_key,这样请求就不会在单个分区上被轰炸。
Partition size also play a good role. Cassandra recommends to have smaller partition size. However, I have tested with Partitions of 10000 rows each with each row having size of 800 bytes. It worked better than with 3000 rows(or even 1 row). Very tiny partitions tend to increase CPU usage when data stored is large in terms of row count. However, very large partitions should be avoided even.
- 复制因子 应该有策略地选择。应考虑所有键空间的复制来决定写入一致性级别。
我有一个 cassandra 集群,它的读取延迟在写入期间增加。写入主要通过夜间的 spark 作业进行。写入发生在巨大的突发中,有没有办法减少写入期间的读取延迟。使用 LOCAL_QUORUM 进行写入,使用 LOCAL_ONE 进行读取。有没有办法减少写入时的读取延迟?
Cassandra 集群配置
10节点cassandra集群(DC1中5个,DC2中5个)
CPU: 8 核
内存:32GB
Grafana 指标
我可以给点建议:
使用LCS压缩策略。
首选 round-robin 读取负载平衡策略。
明智地选择partition_key,这样请求就不会在单个分区上被轰炸。
Partition size also play a good role. Cassandra recommends to have smaller partition size. However, I have tested with Partitions of 10000 rows each with each row having size of 800 bytes. It worked better than with 3000 rows(or even 1 row). Very tiny partitions tend to increase CPU usage when data stored is large in terms of row count. However, very large partitions should be avoided even.
- 复制因子 应该有策略地选择。应考虑所有键空间的复制来决定写入一致性级别。