首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cassandra是如何横向扩展的?

Cassandra是如何横向扩展的?
EN

Stack Overflow用户
提问于 2015-07-27 19:07:03
回答 6查看 8.6K关注 0票数 9

我在Cassandra数据库上看过一个video,它非常有效,解释了很多关于Cassandra的事情。我也准备了一些关于Cassandra的文章和书籍,但我不能理解的是Cassandra是如何水平扩展的。通过水平扩展,我的意思是添加更多节点以获得更多空间。据我所知,每个节点都有相同的数据,也就是说,如果一个节点有1TB的数据并被复制到其他节点,这意味着所有n个节点都将包含1TB的数据。我是不是漏掉了什么?

EN

回答 6

Stack Overflow用户

发布于 2015-07-27 19:23:00

是的,你漏掉了一些东西。数据可能不需要复制n次,其中n是节点的数量。您通常会将复制因子(RF)配置为小于节点数(N)。

例如,RF = 3,N= 5。这意味着每行将在5个节点中随机选择的3个节点上复制3次(加上原始副本)。如果一个节点出现故障,您将在其他节点上的其他位置有3个副本。

这在更大的集群中工作得更好,例如RF = 5,N= 100。

较高的RF可以提高数据冗余和读取速度,但会降低写入速度。所以有一个平衡,如果你的RF很高,比如RF = N,你就会有非常高的数据冗余度,对节点故障的高恢复能力,以及高读取吞吐量。另一方面,您的写入吞吐量将非常有限,因为需要将数据复制到所有节点。在这种情况下,如果一个节点出现故障,写入可能会失败(取决于客户端配置),因为无法实现所需的复制因子。

票数 20
EN

Stack Overflow用户

发布于 2015-07-27 19:23:27

您希望为每个分区(行/数据段)存储的副本(即相同数据)的数量是可配置的。因此,如果您有n个节点,则理论上可以将数据库设置为复制每个分区n次。然后,如果您添加更多节点,则不会发生水平缩放。但是,如果将副本数量设置为1或2,则每个节点有更多空间来水平存储数据。然后,新数据可以进入新节点。但请记住,如果副本较少,如果任何一组节点在特定时间宕机,您丢失数据的可能性就会更大。

票数 2
EN

Stack Overflow用户

发布于 2015-07-27 19:24:59

据我所知,

每个节点都有相同的数据,也就是说,如果一个节点有1TB的数据并被复制到其他节点,这意味着所有n个节点都将包含1TB的数据。我是不是漏掉了什么?

是的,并不是所有节点都必须是彼此的副本。根据我希望支持的可用性级别,我可以将我的复制因子设置为小于节点总数。

假设我有一个复制因子为2的2节点集群,所以在这种情况下,每个节点都有一个完整的数据副本。如果我的磁盘快用完了,我可以通过添加一个新节点来缓解这种情况,同时将复制因子设置为2 (3个节点,RF为2)。

以这种方式,如果每个磁盘都有1TB的存储,并且我在每个磁盘上都有900 RF的存储,那么添加一个新节点(同时保持我的RF不变)将使每个节点只负责2/3的数据。因此,在这种情况下,每个节点将保存600 my的数据(在我的2个现有节点上释放300 my)。因此,通过水平扩展,I增加了磁盘容量。

问题是,即使我有3个节点,我也只能失去其中的一个。如果我失去了两个节点,那么我就不能为我的查询提供服务。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31651487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档