Cassandra何时触及Amdahl定律?

7
我尝试理解Cassandra与节点数线性扩展的说法。在网上快速搜索后,我并没有看到太多关于这个话题的讨论。毫无疑问,Cassandra中有串行处理元素,必须限制随着N的增加而获得的速度。如果您对此有任何想法、指针或链接,将不胜感激。
为了提供更好的视角,我正在开发一个项目,其中请求一个由1,000多个节点组成的Cassandra基础架构。我并不是提出该规格的人。我建议将N减少到200到500之间的范围内,并且每个节点的串行计算速度至少要快两倍。通过对服务器配置进行简单的更改,可以轻松实现这一点,而不会产生每个节点的成本惩罚。

“当然有串行处理元素” - 你为什么这么确定? - user240438
http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html - Schildmeijer
1
@fennec:因为很少有问题是100%可并行化的。 - martin's
@Schildmeijer:我看到了这篇很棒的文章。就像我发现的大多数内容一样,它似乎没有提供一种量化的方法来确定Cassandra使用中是否存在限制可实现收益的串行处理方面。请查看我的编辑,以便更好地理解我的问题。 - martin's
1个回答

9
卡桑德拉的扩展更适合用古斯塔夫森定律来描述,而不是阿姆达尔定律。古斯塔夫森扩展考虑了随着节点数量增加,您可以处理多少更多的数据。也就是说,如果您有N倍的节点,您可以在相同的时间内处理一个N倍大的数据集。
这是可能的,因为卡桑德拉使用非常少的集群范围协调,除了模式和环路变化。大多数操作仅涉及等于复制因子的节点数,该复制因子随着数据集的增长而保持不变,因此几乎呈线性扩展。
相比之下,阿姆达尔扩展考虑了随着节点数量增加,您可以多快地处理固定数据集。也就是说,如果您有N倍的节点,您可以将相同的数据集处理N倍速度更快吗?
显然,在某些点上,您会达到极限,添加更多的节点不会使请求更快,因为需要一定的最小时间来服务请求。在这里,卡桑德拉不是线性的。
在您的情况下,您似乎在询问拥有1000个慢节点还是200个快节点更好。您的数据集有多大?这取决于您的工作负载,但通常建议节点的最佳大小约为每个1TB的数据,确保您有足够的RAM和CPU匹配(请参见cassandra节点限制)。1000听起来太多了,除非您有PB级别的数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接