欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

八大主流公有云计算服务评测

程序员文章站 2022-05-21 17:06:26
云服务给我们传递的信息总是非常简单:打消顾虑,我们会帮你处理所有的事情。忘记挥汗如雨地安装服务器,忘记反复检查备份柴油机,或是忘记那成千上万容易出错的环节带给你的那份不安吧,把你的信用卡号和数据给我们...

云服务给我们传递的信息总是非常简单:打消顾虑,我们会帮你处理所有的事情。忘记挥汗如雨地安装服务器,忘记反复检查备份柴油机,或是忘记那成千上万容易出错的环节带给你的那份不安吧,把你的信用卡号和数据给我们,我们将完成剩下的工作。

在过去的几个月里,我们创建了一个由遍布全球的众多计算资源组成的庞大帝国,并对众多的云服务展开了测试。每一处的机器都会先将我们的数据分解成极小的数据块,然后再对这些数据块进行进一步分解。私有网络在机器之间承载秘密信息碎片,因此其他部分能够利用这些数据并将它们变成漂亮的图表。虽然桌面系统有点老旧,但借助浏览器,我们成功创建了一个遍布全球的机器网络。

好消息是,当我要求这些计算资源走开时,机器就会消失。这就是云服务的诱人之处。在你需要的时候,你可以购买自己需要的计算资源。在微软Windows Azure云服务中存在一个不恰当的重复收费现象,不过目前技术支持正在尝试解决这一问题。当它们出现在信用卡账单上时,我们注意到这一问题,希望它能够很快得以解决。其他的机器收费很少,大概只有几美分。在云端,你可以*地购买机器,就如同购买糖果一样简单。

关键的不同之处

在展开这项针对公有云的评测后,最令人吃惊的发现是,云世界有着丰富的多样性。任何认为云机器只是一种商品的人,都会对云服务所传递的信息产生误解。营销团队宣传的理念是,云服务让计算机和存储就像乐高积木那样可以互换。但这并不是真的,所有提供商都在努力通过提供一些不同的和更好的东西来突出自己的优势。有时候需要花上几分钟的时间才能准确地发现它们有何不同,不过这些变化对于任何处理大量工作的人来说通常都具有重大意义。

差异开始仅在于操作系统。这很容易误解为所有的东西都是Linux的,因为Linux无处不在。但是这种理解忽视了分发中存在的区别。尽管许多标准的distros,比如Ubuntu无处不在,但是企业会通过一些修改创建属于他们自己的版本。例如,亚马逊AWS(Amazon Web Services)和谷歌GCE(Google Compute Engine)都针对云创建了自己的Linux版本。Rackspace用户能够选择许多免费版本,或者是按月支付费用使用红帽的企业版Linux。

Linux并不是唯一的选择。许多云服务在支付额外的费用后可以使用在微软的Windows上,不过对于微软的Windows Azure和戴尔云而言,用户不必支付额外的费用就能将云服务用在Windows上。这些云服务商希望通过一些服务吸引微软用户,让他们能够更为轻松地将更多的计算转移到云上。任何对微软技术投 入了大量资金的人都会对它们感到非常熟悉。而另一云服务商Joyent Cloud则通过对Open Solaris的改造形成了自己的SmartOS。

更深层次的差异体现在看不见的地方。就像购买英特尔服务器将它们安装到自己的机架上,这些的机器似乎都没有什么不同,但事实上,它们通常是性能强大的多核刀片式服务器,被分割成一个个的虚拟机提供给消费者使用。换句话说,你租用的不是一个独栋别墅,而是一个公寓或是一个分时享用的度假别墅。

机器的基准测试

在你开始启用这些机器的时候,它们之间的差异将会迅速显现出来。云服务商试图通过创建可测量CPU能力的单位来帮助我们,但很明显这只一些非常粗略的指导方针。我们通过DaCapo collection of Java routines将这些计算机放入到我的庞大帝国中,对于那些构建Java 应用的人来说,这一测试是非常合适的。

DaCapo套件对许多不同的工作展开测试,例如在Java中创建图像和启动Tomcat服务器。那些不使用Java的人也可以通过不同功能对比通用视图得到一些参考,因为毕竟每个基准都会在机器上生成一种不同的压力测试。

如此戏剧性的对比结果让人难以相信这是在同样配置机器上运行同样测试所得到的。这是由于不同机器采用了不同类型的虚拟化层来处理不同设备的驱动程序。当这些“不同”以有趣的方式来应用时,产生的结果自然也完全不同。

比如Lucene(一种常见的大量文本文档索引工具),在创建索引测试时,SoftLayer的机器要比亚马逊基本实例快上至少两倍。但是在索引建成后,在搜索索引时,SoftLayer机器仅比亚马逊快30%左右。

即使在相同的云中,不同机器之间的结果也会显著不同。例如,谷歌提供了大量的机器,但是它们的表现却与预期不符。比如在大多数的基准测试中,高性能CPU机器极有可能与标准机器性能基本相当或略有提升。而在Tomcat 模拟中,前者速度是后者的两倍。令人费解的是,在Avrora 基准测试中,前者则比后者要慢三倍。

当然,在这些关于谷歌机器的测试中,以往的经验法则通常是正确的,但是它们很少像你预料的那样准确。经验也会经常出错。比如添加更多的CPU来帮助多线程测试,但结果显然与预期不符,有时候甚至会减缓速度。增加RAM(随机存储器)虽然可以加速,但结果显示也并非总是如此。这些明显的增速措施有时候仅能增加一点速度,大部分测试还是维持结果不变,而少数(例如XALAn解析器等)则变化显著。

所有这一切意味着你需要一个博士学位和大量实践经验才能确定一个基本问题:这些机器究竟值多少钱?这些测试显然能够帮助你精打细算。如果是构建Lucene而不是搜索索引,显然SoftLayer机器更合算。但是如果单纯对比3美分/小时或者4美分/小时显然没有多大意义,因为只有广泛实际测试实例才能真正揭示出服务的价值。

数据存储

虚拟化影响最深的是数据存储。显然,数据库速度严重依赖磁盘驱动器的I/O通道速度,每个额外的虚拟化都会降低其速度。有些云服务商没有对此提出解决方案,是由于他们认为客户可以运行自己的数据库系统。

当然,也有提供了特殊数据存储服务的云服务商,它们可以按照字节收费。SoftLayer实例可以提供 MongoDB的服务。而HP Cloud和Rackspace Cloud提供的则是类似MySQL这类的服务。还有很多企业通过不同数据库技术,剥离虚拟化层之后构建API,以提供按字节而非机器收费的存储服务。其寓意就是,通过高度调优的操作系统提供超越常规机器的性能表现。

其他服务强调的则是不同性能属性。亚马逊有多种数据存储的解决方案,其中的Glacier就很有意思。这是一种档案存储服务,其数据读取时间达几小时。注意,不是毫秒、秒和分钟,而是按照小时。注:亚马逊最初推出Glacier服务(冷存储)时,存储 1GB 大小的档案,每月仅需支付1美分。

你可以选择独立的机器,并部署你喜欢的存储解决方案,这些托管解决方案在你下决心前具有很大的诱惑力。如果一个云有你喜欢的存储层类型,你通常会接受其他的工具。

网络选项

网络是另外一个需要重点关注的领域。一些云,例如戴尔和SoftLayer的云提供了连接机器的私有网络。这让用户可以很容易地创建数据库机器,不过这些机器数据库仅监听私有网络。从安全性上看,这样可以回避一些来自公共互联网的攻击。但是这并不是一种完美的技巧,因为在云上仍然存在安全问题,不过对于云安全而言,起码这是一个好的开始。

一些其他的提供商会提供更为详细的地理信息,并将此作为他们云服务的一部分。清楚自己的机器位于什么地方能够帮助用户决定将数据存储在何处。尤其是那些拥有极为宝贵数据的用户,能够借此创建一个机器帝国,将数据备份在不同的地区,以更好地抵御风暴、火灾和其他一些地域性的灾难。例如,谷歌对于独立数据中心间的带宽成本非常清楚,因此其定价也不同于同一数据中心机器间的信息传输价格。

带宽计量有可能会出现混乱。例如戴尔云等一些云服务对于输入流量并不收费,这一措施简化了计量和账单生成,同时创建了一个引诱你存储信息的陷阱。数据存储进去很容易,但是你却无法让数据从这些云服务中离开。如果你正在创建类似于《银河系漫游指南》中的大型数据统计机器,在输入大量数据的同时只需要反馈一个数据,那么这一数据计划还是颇具吸引力的。

超越基础的服务

在云服务中,最具吸引力的部分是特殊用途的机器。即便它们对你目前正在使用的PHP代码没有什么大的帮助,它们也有望能够让未来追踪一些挑战变得更加容易。例如,亚马逊有一组显卡 (GPU) 服务。你可以通过这些服务轻松实现构想或者算法验证。物理学家、生物学家、计算机科学家都可以验证之前难以尝试的设计。

这些特殊的堆栈并不需要特殊的硬件。大量的云,包括亚马逊、Joyent和Windows Azure,都提供了一些特殊的Hadoop机器来支持一些奇思妙想。他们优化了基础操作系统,并优化了JVM以获取更好的性能。Joyent甚至声称可以提供“*倍的速度”。

当然,它们还有一些其他的特殊服务,但是它们对于我来说可能并不重要。一些云拥有更为出色的性能测量功能和优秀的图形化仪表盘。事实上,我们在此次评测中并没有对它们做太多的关注。清楚机器上的整个负载情况非常有用,但是对大多数开发人员而言,他们一般会自己来统计数据,以便更好地感受吞吐量等关键数据。你的需要可能是多种多样的,其中可能包含一些额外功能。

另一些类似功能的重要性可能会下降。云服务中出现的一些最新功能正在让机器自动化变得更加容易,用户只需要做少量操作即可改变每台机器的配置。例如,亚马逊允许通过相同的镜像来创建数以百计的新机器,然后通过配置信息让这些机器自己进行修改。整个过程中不需要登录每台机器进行独立配置。

这类功能的价值取决于帮助你提供工作效率的程度。如果你的堆栈是静态的,这一功能显然意义不大。但是如果你要建立或取消大量机器,那么这种自动配置功能就至关重要了。对于那些需要应对不定时爆发的大数据的人员来说,对此类功能支持得越多,越能获得他们的垂青。

适合自己的云服务

如果要从上述云服务中总结出一个经验的话,那就是任何结果都不是一成不变的。对于你来说最合算的机器,对我来说可能并不一定是最合算的。对于你来说最合算的带宽价格方案,对于我来说可能是非常昂贵的。评测的基准点非常多,这就如同数据存储的价格一样。在做出决定之前,我们每一个人都要根据自己的系统花时间对方案进行研究和评估。

情况看起来非常有趣。云服务可能看上去能够降低运营服务器集群的复杂性,但是服务商实际提供的却是选择不同架构的棘手问题。这些选项让我们意识到,自己不必对备份发电机和机架容量等问题考虑那么多。但在花费了数月时间进行测试后,我们意识到工作实际上并没有真正结束。