虚拟服务器和云都是对硬件的抽象,两者都有很多好处和使用的理由,但它们同时也有各自的阴暗面,只不过鲜有人提及罢了,多年来人们一直称赞云和虚拟服务器的优点,我觉得这是不公平的,因此我决定写下这篇文章以激起大家的讨论,因为此前写过NoSQL的阴暗面,也许有人会质疑我是否是偏执狂,我才不管这些,随别人怎么说。
虚拟服务器
虚拟化是一种趋势,它离不开虚拟机,虚拟机是运行在硬件抽象层上的一种软件,使用虚拟机有以下好处:
◇ 安装简单、快速
◇ 更好的资源利用率
◇ 可以在相同硬件上安装更多服务器
◇ 更容易提供24/7服务
◇ 无停机迁移到新硬件等
但虚拟机也有其阴暗面,如成本和性能,我不止一次看到,人们总是喜欢将各种应用一股脑全部放到虚拟机上,但虚拟机还不能达到和本地运行一样的效果,特别是I/O密集型服务器运行起来更慢,根据我以往的经验,在Xen虚拟机上运行高流量应用程序时要比本地运行慢20%左右,因此要想在虚拟机上实现相同的性能,你必须增加更多的硬件,这就意味着成本会上升。此外,如果不使用开源的程序,那要为专有软件支付昂贵的许可费。市场营销人员一般会声称虚拟化服务器对性能没有影响,这纯粹是扯淡,例如,Riak服务器配置描述是这样写的:
“和大多数数据存储一样,Riak在不虚拟化时表现得更好,虚拟机(VM)可能会引起I/O和网络性能下降,这取决于它们是如何配置,以及它们运行的环境。”
也有一些管理员认为可以在固定不变的硬件资源上增加更多的虚拟机,我不止一次看到有人这么干,他们的理由很简单:绿色和降低用电量,但用户对系统性能的抱怨却越来越多,虚拟机越多,给每个虚拟机分配的资源就会越少,势必会影响到其它虚拟机的性能,但如果虚拟机本身对资源的需求不高,则可以考虑将这些虚拟机整合到一台物理机上,此外,有些虚拟机是白天工作负载高,有些虚拟机是夜间工作负载高,也可以将它们组合到一起,但虚拟机不是减少硬件成本的灵丹妙药,你需要平衡虚拟服务器和成本的好处,永远不要让虚拟机超过物理硬件本身的承受能力。