我试图理解关于Cassandra随节点数线性扩展的说法。快速浏览一下“网络”后,我对这个主题的处理还不多。当然,Cassandra中有串行处理元素必须限制随着N的增加而获得的速度。对此主题的任何想法,指示或链接将不胜感激。
编辑以提供透视图:
我正在一个项目中,该项目当前要求有1,000多个节点的Cassandra基础结构。我没有提出这个规格。我发现自己建议将N减小到200到500之间,每个节点的串行计算速度至少要快两倍。通过对服务器配置进行简单的更改,可以轻松实现这一点,而不会导致每个节点的成本损失。
最佳答案
用Gustafson's law而不是Amdahl's law更好地描述了Cassandra的缩放比例。 Gustafson扩展关注随着节点数量的增加,您可以处理多少数据。也就是说,如果您的节点数是N倍,则可以在相同的时间内处理一个大N倍的数据集。
这是可能的,因为Cassandra仅使用很少的集群范围的协调,除了模式和环更改。大多数操作只涉及等于复制因子的节点数,该节点随着数据集的增长而保持不变-因此几乎线性扩展。
相比之下,Amdahl缩放研究的是随着节点数量的增加,可以处理固定数据集的速度提高了多少。也就是说,如果您的节点数是N倍,那么可以将同一数据集的处理速度提高N倍吗?
显然,在某些时候,您达到了一个极限,即添加更多节点不会使您的请求更快,因为服务请求所需的时间最少。卡桑德拉在这里不是线性的。
在您的情况下,听起来好像您在问拥有1000个慢速节点还是200个快速节点更好。您的数据集有多大?这取决于您的工作量,但通常的建议是,每个节点的最佳大小约为1TB数据,确保您有足够的RAM和CPU来匹配(请参见cassandra node limitations)。除非您有PB级的数据,否则1000个声音听起来太多了。
关于cassandra - Cassandra 何时会违反阿姆达尔定律?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8839436/