首页 > 解决方案 > 如何估计每秒加载给定读取请求需要多少个 Cassandra 节点?

问题描述

我希望估计每秒需要多少个 cassandra 存储节点来提供特定数量的读取。

我的节点规格是 32 核、256GB 内存、10Gbps NIC、10 个 6TB 硬盘。显然 SSD 更可取,但在这种情况下不可用。

我有大约 5x10^11 个 1kB 的值 = 500TB 的值以每秒 100,000 个读取请求的速率提供服务。这些请求的分布是完全均匀的,即内存容量缓存不会有任何影响。

如果我们假设每个 HDD 可以维持 ~100 IOps,那么我可以预期我至少需要 ~ 100 个节点来服务这个读取负载 - 对吗?

我还估计,在复制因子为 2 的情况下,总存储量至少需要 20 台机器,加上开销。

标签: cassandra

解决方案


这是一个非常广泛的问题——您需要尝试使用专门为此类任务构建的NoSQLBench等工具来测试您的机器。

典型的建议是为每个 Cassandra 节点存储约 1Tb 的数据(包括复制)。您需要考虑其他因素,例如更换集群中的节点或添加新节点需要多长时间 - 流式传输的速度与磁盘上的数据大小成正比。

如果您想获得低延迟的答案,真的不推荐使用 HDD。我有一个约 150Tb 的客户端,分布在约 30 台带有 HDD 的机器上,虽然有很多写入,但读取延迟经常超过 0.5 秒,甚至更高。您需要考虑到 Cassandra 需要随机访问数据,而 HDD 的负责人根本无法如此快速地处理请求。


推荐阅读