Scale out 和 Scale up 的隐藏成本

  • 赵劼

2009 年 6 月 29 日

话题:.NET架构语言 & 开发

Jeff Atwood 在博客上发表了一篇文章,比较了 scale out 和 scala up 之间的隐藏成本,由此引发了一场热烈的讨论

话题由 plentyoffish.com 的硬件升级引起。Markus 的文章提到,plentyoffish 将一台具有 64GB 内存、8 个 CPU 的机器升级为一台型号为 HP ProLiant DL785 的 7U 服务器,这台机器拥有 512GB 内存和 32 个 CPU。这是一次明显的 scale up。经过 Jeff 的估算,这台机器的总成本大约为 10 万美金。如果使用 scale out 的形式,使用大量廉价的服务器来组件系统,这笔投资可以购买 83 台StackOverflow.com所使用的 1U 服务器。同样的投资,它们获得的资源分别如下:

  Scaling Up Scaling Out
CPUs 32 332
RAM 512 GB 664 GB
Disk 4 TB 40.5 TB

以微软的软件体系为准,Jeff 又计算了软件授权的成本:

  Scaling Up Scaling Out
OS $2310 $33200
SQL $8318 $49800

此外,电费消耗对比如下:

  Scaling Up Scaling Out
Peak Watts 1200w 16600w
Power Cost / Year $1577 $21815

由此,Jeff 提出这样的看法:

……scale up 和 scale out 都是可选的方案,这涉及到你要解决的问题,你的资源(如资金,软件)等情况。……这样看来,只有在使用开源软件时,scale out 才有较为明显的优势,因为 scale out 意味着较少的硬件投入,以及较高的软件授权成本。

Jeff 的文章引来了许多评论,众多网友发表了自己的看法。

Oli 认为这样的比较过于简单:

为什么没有考虑冗余?即使是 10 万美金的机器也可能崩溃,如果有一个集群的话就好多了。还有数据中心的费用,7U 的服务器虽不便宜,但比 83 个 1U 服务器要便宜多了。

Douglas 似乎认为这样的比较并不公平:

你的做法假设 83 台 1U 服务器的性能与一台 7U 服务器相同,这个自然需要更多授权 / 电费 / 机架的费用了。如果你购买 7 台 1U 的服务器,就只需要很少的投入,也不会增加太多的复杂度。

Ed 认为即使是开源,scale out 也会带来其他一些成本:

我们都知道“开源只有在时间是免费的情况下才会真正免费”。为 83 台服务器配备一个管理员的工资,一年下来可能就足够再买一台性能优越的机器了。别忘了还有其他的硬件投入,例如负载均衡……

不过 larry 认为这样的投入是值得的:

如果你想要有 25% 的性能提升,scale up 只要你增加一些机器就行了。

这场讨论中还有不少网友发表了非常有价值的看法,例如对成本计算方式的意见,以及对 scale out 和 scale up 各方面考虑进行了详细归纳。还有网友提出虚拟化及云计算在 scale 方面的作用。如果您这方面感兴趣,也不妨加入这场讨论。

.NET架构语言 & 开发