如果资源大小相同,是否有任何水平超越垂直的优势?

时间:2015-07-03 11:38:14

标签: node.js performance cloud scalability

我正在使用DigitalOcean托管我的应用程序。由于在所有其他云托管提供商处也是如此,因此在为您的应用程序购买服务器时有几种选择。根据您的预算和需求,服务器可以是非常高效的服务器或弱服务器。除了预算问题,我想知道4 x 1CPU服务器和1 x 4CPU服务器之间是否存在差异。

例如,我的node.js应用程序有4个服务器,负载均衡器(nginx)有1个,db(redis)有1个服务器。目前,我的每个节点服务器都有4个核心。所以我总共有4 x 4CPU的计算能力。

那么,如果我垂直缩放其中2个并关闭其他两个怎么办?这意味着:2 x 8CPU?服务器成本不会改变。但我将把我的应用程序部署到2台服务器上,我需要维护2台服务器而不是4台服务器。

这样做有哪些优点或缺点?

谢谢

1 个答案:

答案 0 :(得分:0)

我认为你不会发现任何明确的规则,尽管你可能会发现很多强烈的意见。

鉴于您所有的服务器'是云提供商主机服务器上的虚拟机,简单来说,只要你拥有相同的RAM,IO等,计算能力应该是相同的。

在这一点上显而易见的是,你应该对它进行测试并观察,但即使在那里你也必须要小心,因为许多事情可以(并且很可能)随着时间的推移而改变,而你没有任何可见性,这些可能改变任何测试的结果。例如,云提供商可以改变主机硬件或软件;主机上的其他虚拟机可能会发生变化,或者负载可能会增加或减少;

VM的一个微妙(和有趣)的事情是,根据云提供商如何设置其主机,较小的VM可能更有可能在给定的物理主机上运行,​​因为他们需要更少的资源。简而言之,4核VM可以在主机上任意4个核心免费运行,但8核心必须等到8个核心免费。如果给定主机更可能更频繁地具有4个空闲而不是8,那么较小的VM 可能获得更多运行时间。但是,VM调度和在主机上共享任何备用容量的规则可能会对此进行反击。

同样值得考虑扩展粒度 - 我认为这可能实际上是您特定情况下更重要的因素。如果您可以通过在特定时间段内扩展或缩小4台服务器之一来节省开支,那么如果您只迁移到2台服务器,则可能无法执行此操作。

平衡此扩展粒度与您已识别的较少数量服务器的维护减少可能是您做出特定决策的关键因素。

作为最后的一点,有人会争辩说,如果你可以使你的服务器成为简单的原子或阻止盒子的构建块'这些都是自动构建和部署的,然后您的管理大大简化,您可以简单地上下调整它们 - 这有效地降低了多个服务器的维护开销,并可能使更大的扩展粒度方法更具吸引力。