云主机真的像宣传的那样弹性易扩展吗?
我们知道,区别于传统服务器,云主机几乎可以在几分钟内实现资源的快速部署。我们可以在几分钟内实现对应负载峰值变化的实例创建和销毁。然而高度自动化,也是危险的。对特定应用的变量和自动化的伸缩调整是非常复杂的运算工程,况且,扩展和缩减是不同的。
我们暂且以数据库、存储和前端应用服务器组成的典型的分层网络应用作为例子进行简单分析。我们知道,扩展资源必须与存储、应用服务等相适应。如果我们增加了许多新资源,就需要将它们与存储、应用服务资源相适应,或许增加更强大的数据库集群。为了使这个应用在发展和不断变化的负载情况下动态地伸缩,我们需要监控所有在运行的部件,并同时考虑其他部分的负载情况。
如果我们的前端服务器引入大量的数据流,我们需要部署更多的数据库节点。然而,存储I/O会成为一个问题,所以我们还需要扩大资源。然后,当高峰访问过去,服务器负载开始减弱,我们需要缩减资源。这个过程不能太快。我们还需要保持某些方面的负载,因为减少某个方面的资源可能会对另一方面产生负面影响。如果我们减少数据库资源,应用服务器上的负载可能会因为瓶颈而飙升。因此,增加更多应用服务器对于解决负载问题没有任何意义。
因此,和云主机的安全性一样,云主机的弹性计算还有待更深入考察和发展。它是一个包括监控、定时器、等待状态、阈值等多方面联动的基础设施组合。而且云主机本身的判断逻辑和比较规则也需要受到监控,并根据需要进行调整,以适应网络基础设施。相对于比较简单的整合几个公共API、缓存和排队服务器、NoSQL数据库服务器、或任何数量的现代服务配件,云主机负载动态管理的复杂性却是成倍增长。这可不是简单的“如果服务器超载,就另外增加一台服务器”的问题。这对于目前的服务器技术、云技术来说还具有很大的挑战。
因此,云主机实现真正的弹性计算还需要更深入的发展。当然,我们无法贬低云主机实现快速扩展的初衷。动态扩展的优点是显而易见的,它不但对资源利用更加充分,拥有更合理的价格,还提供给用户更好的性能和可用性。只是,我们不能被所谓选的云主机洗脑,应该对于云主机持有理性客观的态度。