我知道Cassandra在多个节点的设置中是很好的。节点越多,性能越好。如果我有两个具有相同硬件的专用服务器,那么我最好在这两个服务器中创建一些虚拟机,以便有更多的节点。
例如,我有两个具有此规范的专用服务器:
1TB hard drive
64 GB RAM
8 core CPU然后在它们中创建8个虚拟机(节点)。每个机构都有:
~150GB hard drive
8 GB RAM
share 8 core CPU所以我有16个节点。这16个节点是否比使用这两个专用服务器的两个节点具有更好的性能?换句话说,哪一方的权衡更好,更多的节点具有较低的硬件或两个较强的节点?
我知道它应该测试,但我想知道它是否合理?
发布于 2014-03-29 13:24:29
“我知道它应该测试,但我想知道它是否合理?”
这将满足你的大部分假设。
使用cassandra的基本优点是可用性。如果您计划只有两个专用服务器,那么您的数据可用性就会有一个问号。考虑到最坏的情况,在任何时候都只有两个数据副本。
我的观点是,用小块的方式建立一个很好的分割的专用设置。一切都归结为你的用例。
1.如果您有大量的数据流入,如果您认为数据是王(在这种情况下,您需要更多的副本来处理故障),我更喜欢高端分布式设置。
2.如果你在寻找相反的方法(数据不是你的强项,你的数据只是你设置的另一部分),你应该去做你所提到的设置。
3.如果您有一个成本限制,如果您是一个具有对您很重要的最小数据的启动,那么在两个节点中设置与复制2(简单策略)和复制1(网络拓扑)相同的功能。
发布于 2014-03-29 12:49:52
添加新节点总是会增加一些开销,它们需要在彼此之间进行通信并同步它们的数据。因此,添加的节点越多,开销就会随着每个节点的添加而增加。只有在现有的节点数无法处理输入/输出需求的情况下,才会添加更多的节点。因为在您所描述的情况下,您实际上是在同一个磁盘上写东西,所以实际上通过添加更多的节点,可以有效地减缓集群的速度。
设想一下情况:您有一个服务器,它接收一些数据,然后将其写到磁盘上。现在设想同样的情况,磁盘在两个服务器之间共享,它们几乎同时在同一个磁盘上写入相同的信息。这两个服务器还使用cpu周期相互通信数据已经写入,以便它们可以同步。我认为这是一个足够的信息,可以向你描述为什么你所想的不是一个好主意,如果你能避免它。
编辑:当然,这只是外行术语中的信息,C*有一个非常好的体系结构,其中数据实际上是根据算法传播到一定范围的节点(不是所有节点),当您查询特定的密钥时,该算法实际上可以告诉您在哪里找到数据。也就是说,当您添加和删除节点时,新节点必须与集群通信,以便它们分担“负担”,因此,将在最后对所谓的“令牌环”进行重新计算,以便可以以可预测的方式访问数据。
你可以看看这个:
http://www.datastax.com/dev/blog/upgrading-an-existing-cluster-to-vnodes-2
但是一般而言,当节点之间进行通信时确实存在一定的开销,但是如果您在查询单个密钥,那么节点的数量几乎不会对查询速度产生负面或积极的影响。
https://stackoverflow.com/questions/22730995
复制相似问题