经过多次辩护和案件build设,我的团队得到了预算,购买了4个节点,并启动了cassandra集群。 每台机器都有3个1TB的驱动器,所以我想知道是否合理的跳过单向冗余,而不是镜像数据驱动器。
数据将被备份,所以这不是一个问题。
似乎在这样一个小组中丢失一台机器的可能性很小。
这是合理的还是我错过了一些更大的问题/因素?
这真的取决于你使用cassandra。 您正在使用它来获取数据的可用性,数据的分区还是两者? 从它的声音,你更多地使用它的分区数据,所以你可以扩大你的数据。
您想在cassandra中复制数据的部分原因是可用性。 例如,如果您有一个复制因子为3的4节点群集,则无需进行任何维护(具有法定一致性级别,具有“一个”一致性级别的2个节点)就可以承受一个节点的损失。 另一方面,每个节点将拥有群集中75%的数据,这可能是您希望避免的。 这就是为什么我会尝试申请另外一台或两台服务器,虽然也许你不会马上需要,你可以添加更多的服务器,因为你的数据需要增加。
虽然你提到失去一台机器是不太可能的,以我的观点来看,以1的复制因子运行是要求麻烦的。 你可能永远不会遇到问题,但是当你这样做的时候,这不会很有趣。 如果您使用的是一台巨型服务器来维护您的数据库,那么听起来不太可能会导致4台服务器中的1台出现故障?
还有其他一些可能导致cassandra节点失败或无响应的事情(操作系统故障,垃圾收集,networking问题等)
当您开始使用分布式数据库时,与使用传统的单一数据库设置相比,容错应该成为一个更为关注的问题,cassandra专注于此,并且擅长于此。
我有过去的经验,很难certificate硬件采购和pipe理环境configuration的合理性。 让他们理解其含义的最好方法是概述一个失败的情况,以及是否可以接受,例如:
如果一台服务器出现硬件故障,数据被破坏,或者卡桑德拉崩溃,我们能忍受多长时间的停机?
如果答案是“0分钟”,那么您会希望使用至less为3的复制因子。此外还有更多好处。 复制因子为3,这意味着更多的节点可以为单个读取请求提供服务,从而提高读取性能。
另外,对于你的数据来说,镜像/ RAID 1被认为是Cassandra的一种反模式(尽pipe对于commitlogs来说这不是一个坏主意)。 最好使用RAID 0或多个数据目录,将复制因子设置为3,让cassandra为您处理冗余。