云上的信息总是相当简单:交出你的担忧,IT管理人员和我们会帮你解决一切。忘掉拨皮抽骨般地安装服务器和需要双击的引擎备份吧,别再担心成千上万的东西会出错了。你只需向我们提供信用卡号和你的数据,我们就能为你完成后续所有事情。
在过去的几个月里,我都一直活在梦里,那里我建造了一个遍及全球的庞大计算机王国。无处不在的设备将我的数据处理成极小的微小字位,然后又把他们处理成更多的数字。个人网络在不同的设备间传输我那些零散的秘密信息以便其他人能够处理数据并将其改造为漂亮的图片。确实,我的台式机实在有点老旧而且本该可以使用更多的内存条,但是我用浏览器创造了一支全球机器军队,我能像“幻想曲”中的魔法师学徒那样轻松自如地操纵他们。
好消息就是,与学徒不同,当我让这些机器离开,他们就能或多或少地消失。这就是云的妙处!当你需要的时候,你就去购买你需要的东西。哦!使用微软Windows Azure Cloud存储那一点点的数据字符串,我们需要掏一笔不定的经常性费用,不过还好技术支持已经在调查如何消除这笔费用,我希望速度能快一点。每次当我看到几便士的费用单出现在我的信用卡账单上时,总会让我想起这些数据字符串。
然后其他设备来了,随之而来的是以美分计价的小笔费用。大多数的几元店巧妙地重新命名以适应那些售价低于5美元的物品,但在云上,很有可能买设备就像买便宜的便士糖。总有人该让这些老式的设备厂商和厂商宣传重新焕发生机。
关键不同
当完成对所有的云的调查后,最惊人的发现就是云世界是如此显著地变化多端。那些认为云设施仅仅只是商品的人那就大错特错了。市场团队坚持认为云能让我们在电脑和存储设备间转换自如,就像可随意替换的乐高积木那般方便,但这观点不完全正确。所有的供应商都试图通过提供略有不同、略微优秀的东西让他们的产品和服务与众不同。有时候你需要花点时间来正确找到不同产品间的不同之处,但对于付出大量工作努力的任何人而言,变更总是至关重要。
差异性总是伴随着运营系统而产生。我们很容易认为什么都是Linux因为Linux无处不在,但那无视了在配给物上的对比。尽管诸如Ubuntu这样的标准发行版本随处可见,企业依然用细微或不那么细微的技术增强创造了他们自己的企业版本。举例来说,Amazon Web Services(AWS,Amazon网页服务)和Google Compute Engine(GCE,谷歌计算引擎),二者都有他们专用于云的Linux系统。Rackspace使用者可以在一批免费版本中选择,也可以每月支付一定费用购买红帽软件的企业级Linux.
Linux不是唯一选择。许多云系统可以使用Microsoft Windows系统,但需要额外付费。不过如果你采用微软Windows Azure和戴尔云应用,你就无需支付额外费用,他们希望通过服务吸引微软商店以便帮助他们更便捷地将越来越多的计算迁移至云上。稳定地把钱花在了微软技术的任何公司可以很顺畅地使用微软Windows Azure.还有一家Joyent Cloud,他们的特色是提高效率后的开放源代码,称作SmartOS(智能操作系统)。
更深层次的差异性表现在视觉上。虽然所有这些设备从购买Intel处理器到将其放到你的机架上都几乎毫无区别,但事实是他们是大量的多心刀片机切割而成的虚拟机以方便使用。你无需在自己的地盘上租用一个单独的设备——你只需注册登记一组设备(中的一个)或者按时间分摊使用。
基准设备
当你开始计时后,刀片机之间的不同之处就快速显露出来。企业为了帮助我们,创造了衡量CPU性能的计量单位,但那些只是非常粗略的指标。通过DaCapo收集的Java路径,一种超级优秀的Java应用测试方法,我把电脑放到我那个庞大的计算机王国。DaCapo为这些测试配备了多种多样的测试内容,如在Java中作图、启动Tomcat服务器等。由于每种标准都能对设备施加不同的压力,不使用Java的人也能对不同设备的性能有一个全面而广泛的认知。
结果的差异是如此的戏剧性,让人很难相信这是同一个设备在进行同一个测试。这是因为不同的设备虚拟化的层不同,设备驱动程序也就大不相同。单词“不同”每次都以特别搞笑的方式出现,却造就了差异巨大的结果。
想想Lucene吧,这个常见的用于文本文件大集合索引的工具。在索引创建测试中,基础的SoftLayer设备可以很轻易地达到Amazon基本速度的两倍还多。但索引创建完成后,SoftLayer搜索该索引的速度只比Amazon快30%多一点点。
不同设备在同一个云中的表现结果同样也能让人震惊。比如说谷歌,提供了大量的不尽如你意的设备。高CPU设备的速度竟然与绝大多数标准的设备大略相同,最快也快不了多少。在Tomcat模拟实验中,Google下的设备跑出了两倍的速度。令人费解的是,在Avrora标准测试中,其速度比标准设备慢3倍之多。
在关于谷歌设备的测试中,旧的经验法则总是真实的,但可能不是你所期待的真实。他们当然也经常出错,增加CPU可以帮助多线程的某些测试,不过偶尔速度会减慢;增加内存条也常常能起作用但不是每次都行。所有这些明显的修复对测试速度中的变化更加困惑,大部分的测试容易在同一时段内重复,但一些(如XALAN解析器)变化巨大。
以上这些意味着你需要充分的知识和大量的实验来决定这个基本问题:设备价值多少?当账单到期时,我们就该考虑用这些基础标准来衡量(设备)了。如果是创建Lucene索引而非只是搜索索引,那么很显然SoftLayer更有价值。这种差异表明,如果我们想要最大化我们的收益,那么尽可能扩大设备测试时间是十分必要的。你没法想当然地认为每小时3美分的云设备一定比每小时4美分的设备更划得来。
数据存储
虚拟化影响作用巨大的地方是数据存储。数据库强烈依赖磁盘驱动器的输入输出信号速度,虚拟化的一点点额外增加都能降低该速度。某些云不会对此有太多表示因为他们大概认为所有人都希望使用他们自己的数据库设备。
有些云平台则提供以字节计费的特殊数据存储服务。比如SoftLayer,向那些单独的设备提供特别优化的用于读写数据的MongoDB,性能表现肯定优于在企业自有设备上安装的MongoDB.惠普云和Rackspace云则步调一致地提供MySQL服务。
许多企业尝试用不同的数据库技术做类似的工作。他们减少虚拟化层并创建API,帮助客户以比特而不是设备的方式购买存储量。他们相信基于高度优化的运营系统肯定比客户的正规机器性能优越。
其他服务则强调不同的性能属性。Amazon推出数据存储解决方案的一揽子集合,他们打包比特数据之后返还,但最有趣的云服务可能是Glacier,专为检索时间可能达到“数小时”而设计的一种数据存储服务。不是毫秒、不是秒,也不是分钟——而是小时。
客户当然可以选择另外一种设备并安装最喜欢的存储方案,但这样托管的解决方案足以诱惑到为你做出决定。如果某家云平台有你偏好的数据存储层,你可以偶尔使用其他工具。
网络选择
另一个让人困扰的主题是网络。某些云——如戴尔云和SoftLayer云——提供连接到设备的私人网络。客户很容易创建一个只听取该私人网络命令的数据库设备,这也使数据库能更安全地躲过来自公共网络的攻击。技术不够完美因为云的安全性仍然是个“多云”的东西,但是个好的开始。
其他一些供应商提供了更多关于他们的云的一些详尽的地理上的区别。客户知道对自己的设备放在哪里,方便决定将数据存储在什么地方。尤其有些多疑的企业人员,他们管理着特别重要的数据。他们可以创建一个庞大的设备帝国,将数据备份存储在不同地点,以更好地抵御风暴、火灾及其他洪涝灾害。比如谷歌公司对不同数据中心的带宽成本十分清楚,因此,数据在不同带宽间传输的成本价格高出在同一数据中心传输的价格。
带宽计量有可能造成混乱。例如戴尔云,不收取传入流量的任何费用,简化测量与核算,而创建一种专门针对客户信息的蟑螂汽车旅馆,数据存入但不希望输出。如果创建一个巨大的处理数据的机器,就像来自“银河系漫游指南”的来客,吸收大批量数据却只提供一个数据作为答案,类似的数据计划颇具吸引力。