Cassandra - 许多小的或更少的大节点?

Posted

技术标签:

【中文标题】Cassandra - 许多小的或更少的大节点?【英文标题】:Cassandra - many small or fewer bigger nodes? 【发布时间】:2015-09-16 23:14:52 【问题描述】:

我将在 Google 云上托管我的 Cassandra 数据库。实例以线性方式定价,这意味着 1cpu 和 2gb 内存是 1 美元,2cpu 和 4gb 是 2 美元,4cpu 和 8GB 是 4 美元,依此类推。

我正在决定实例的大小,但不确定标准是什么?我正在考虑使用更少的大型实例(8cpu,64gb)而不是更轻的实例(2cpu,4 gb)。我的想法是,每个节点都有更多的实例,承载的整体数据会更少,如果节点发生故障,影响会更小。同样,这些较小实例的操作系统的开销也会更少,因为它接受的连接更少。

这些都是优点,但以下是我能想到的一些缺点: 1) 每个实例的利用率都会降低 2) 这么多实例上的 Cassandra + JVM 开销加起来会产生很多开销。 3) 我将使用本地 SSD 而不是持久 SSD,后者更昂贵,这意味着每个实例都需要自己的本地 SSD,这会增加成本。

这些是我能想到的一些原因,在为 Cassandra 数据库(甚至可能是一般的节点)选择更多更小的实例与更少的大型实例之间是否还有其他优点/缺点?是否有与选择 Cassandra 服务器大小相关的最佳实践?

PS:我添加了“Java”标签,因为 Cassandra 是使用 JAVA 构建并在 JVM 上运行的,想看看 JVM 是否有任何优点/缺点。

【问题讨论】:

【参考方案1】:

我认为您已经达到了一些权衡点,但还有其他一些事情:

    随着存储在单个节点上的数据量增加,引导(添加新节点)的成本增加。例如,您将获得合理的引导时间,每个节点存储 100 GB,但每个节点需要 10 TB 的时间。 SSD 的使用使这一点变得不那么重要,但请考虑为您的提交日志和数据使用单独的物理磁盘。 通常不建议使用少于 4 个内核或少于 8 GB 内存的配置,但您的情况可能会有所不同。

【讨论】:

感谢您的补充。为什么不推荐 4 核/8 GB 是否有具体原因?我在 Datastax 上读到了类似的内容,但他们没有说明原因。 @user2924127 我猜你已经读过docs.datastax.com/en/cassandra/2.0/cassandra/architecture/…。 4 核和 8 GB 对于虚拟环境来说是合理的,但我认为两个要点是 1.) 每个节点有足够的内存来在内存中保存合理数量的密钥和热数据,以及 2.) 确保你有有足够的内核用于写入繁重的工作负载,这将受 CPU 限制。 谢谢你说得通。

以上是关于Cassandra - 许多小的或更少的大节点?的主要内容,如果未能解决你的问题,请参考以下文章

通过基本函数在较少的大数组中聚合许多小数组

weka 中的测试文件是不是需要与训练相同或更少的功能?

包裹第 n 个或更少的元素,错误的结果

Rails 可以期待每秒 100 个或更少的请求(对于非缓存页面)吗?

在 PHP 中的 while / foreach 内包装 3 个或更少的对象

如何在 React Native 中将 TextInput 与数组中未知长度的项目集中在一起?数组中可能有更多或更少的项目来自数据库