cassandra - 如何估计每秒加载给定读取请求需要多少个 Cassandra 节点?
问题描述
我希望估计每秒需要多少个 cassandra 存储节点来提供特定数量的读取。
我的节点规格是 32 核、256GB 内存、10Gbps NIC、10 个 6TB 硬盘。显然 SSD 更可取,但在这种情况下不可用。
我有大约 5x10^11 个 1kB 的值 = 500TB 的值以每秒 100,000 个读取请求的速率提供服务。这些请求的分布是完全均匀的,即内存容量缓存不会有任何影响。
如果我们假设每个 HDD 可以维持 ~100 IOps,那么我可以预期我至少需要 ~ 100 个节点来服务这个读取负载 - 对吗?
我还估计,在复制因子为 2 的情况下,总存储量至少需要 20 台机器,加上开销。
解决方案
这是一个非常广泛的问题——您需要尝试使用专门为此类任务构建的NoSQLBench等工具来测试您的机器。
典型的建议是为每个 Cassandra 节点存储约 1Tb 的数据(包括复制)。您需要考虑其他因素,例如更换集群中的节点或添加新节点需要多长时间 - 流式传输的速度与磁盘上的数据大小成正比。
如果您想获得低延迟的答案,真的不推荐使用 HDD。我有一个约 150Tb 的客户端,分布在约 30 台带有 HDD 的机器上,虽然有很多写入,但读取延迟经常超过 0.5 秒,甚至更高。您需要考虑到 Cassandra 需要随机访问数据,而 HDD 的负责人根本无法如此快速地处理请求。
推荐阅读
- python - 从多个网站抓取文本并分别保存在文本文件中
- xcode - 与 Xcode 9.2 相比,Xcode 10 列出了更多方案
- angular - 被效果捕获的 Angular 6 ngrx 存储动作仍然落入减速器
- unit-testing - 在不运行 @SpringBootApplication 的情况下测试 Spring Boot 服务
- python - 在圆内寻找轮廓
- php - Laravel 5 - 如何使用 $this->app->when()
- sqlplus - 我需要确保我的编码正确地解决了这些问题
- oracle - 如何从 plsql 上的文件中获取创建日期
- xamarin - Xamarin MSAL NuGet 错误 - 检测到 Xamarin.Android.Support.Compat 的版本冲突
- c++ - 寻找闰年的逻辑如何运作?