如果资源大小相同,水平缩放比垂直缩放有什么优势吗?

Are there any advantages of scaling horizontal over vertical if resource size is the same?

我正在使用 DigitalOcean 来托管我的 application/s。由于所有其他云托管提供商也一样,因此在为您的应用程序购买服务器时有多种选择。根据您的预算和需求,服务器可以是性能非常好的服务器也可以是性能较差的服务器。除了预算问题,我想知道 4 x 1CPU 服务器和 1 x 4CPU 服务器之间是否有区别。

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

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

这样做有什么好处或坏处?

谢谢

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

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

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

VM 的一个微妙(且有趣)的事情是,根据云提供商设置主机的方式,较小的 VM 可能有更大的机会 运行ning 在给定的物理主机上,因为它们需要更少的资源。简而言之,一个 4 核 VM 可以 运行 只要它们在主机上有任何 4 个核空闲,但是一个 8 核虚拟机必须等到有 8 个空闲。如果一个给定的主机更有可能更频繁地有 4 个空闲而不是 8 个空闲,那么较小的 VM 可能 获得更多 运行 时间。但是,VM 调度和主机上共享任何备用容量的规则可能会抵消这一点。

缩放粒度也值得考虑 - 我认为这实际上可能是您的特定情况下更重要的因素。如果您可能通过在某些时期内扩展或缩减 4 台服务器中的一台来节省开支,那么如果您只移动到 2 台服务器,您将失去这样做的能力。

平衡这种缩放粒度与减少对您确定的少量服务器的维护可能是您做出特定决定的关键因素。

最后,有些人会争辩说,如果您可以使您的服务器成为自动构建和部署的简单原子或块框 'building blocks',那么您对它们的管理就会大大简化,并且您可以将它们旋转起来并简单地向下 - 这有效地降低了多台服务器的维护开销,并可能使更大的缩放粒度方法更具吸引力。