经过多次恳求和案例构建,我的团队获得了购买 4 个节点并启动 cassandra 集群的预算。每台机器都有 3x1Tb 驱动器,所以我想知道跳过 1 路冗余并镜像数据驱动器是否合理。
数据将被备份,因此这不是问题。
似乎在如此小的分组中丢失机器的可能性很低。
这是合理的还是我错过了一些更大的问题/因素?
经过多次恳求和案例构建,我的团队获得了购买 4 个节点并启动 cassandra 集群的预算。每台机器都有 3x1Tb 驱动器,所以我想知道跳过 1 路冗余并镜像数据驱动器是否合理。
数据将被备份,因此这不是问题。
似乎在如此小的分组中丢失机器的可能性很低。
这是合理的还是我错过了一些更大的问题/因素?
这真的取决于你使用 cassandra 的目的。您是否将其用于数据可用性、数据分区或两者兼而有之?从它的声音来看,您更多地使用它来对数据进行分区,以便您可以扩展数据。
您希望在 cassandra 中复制数据的部分原因是为了可用性。例如,如果您有一个复制因子为 3 的 4 节点集群,您可以在丢失一个节点的情况下幸免于难,而无需进行任何维护(具有仲裁一致性级别,2 个节点具有“一个”一致性级别)。另一方面,您的每个节点都将保存集群上 75% 的数据,这可能是您希望避免的。这就是为什么我会尝试请求另外一两台服务器,尽管您可能不会立即需要它,并且您可以随着数据需求的增加添加更多服务器。
虽然您提到丢失机器的可能性不大,但在我看来,以 1 的复制因子运行是自找麻烦。您可能永远不会遇到问题,但是当您遇到问题时,它不会很有趣。如果您使用 1 台巨型服务器来为您的数据库提供服务,那么 4 台单独服务器中的 1 台失败的可能性听起来更小,对吧?
还有其他一些事情会导致 cassandra 节点出现故障或无响应(操作系统故障、垃圾收集、网络问题等)
当您开始使用分布式数据库时,容错应该比使用传统的单一数据库设置更受关注,而 cassandra 专注于并擅长这一点。
我过去的经验是很难证明硬件购买和环境配置与管理的合理性。让他们了解其影响的最佳方法是概述失败场景以及它是否可以接受,例如:
如果答案是“0 分钟”,您将希望使用至少 3 的复制因子。这样做还有更多好处。复制因子为 3,这意味着更多节点可以为单个读取请求提供服务,从而可能提高读取性能。
此外,镜像/RAID 1 被认为是 Cassandra 用于数据的一种反模式(尽管对于提交日志来说这不是一个坏主意)。最好使用 RAID 0 或多个数据目录,将复制因子设置为 3,让 cassandra 为您处理冗余。