从贮存到支付,云计算的领导者(亚马逊)提供了一系列的低价服务来吸引注意。我们将紧密关注这些。
亚马逊网络服务( AWS)是基于一个简单的想法:亚马逊已经建立了一个跨越全球的硬件和软件基础设施,来支持该公司的互联网业务,那么为什么不将那些基础设施的组件模块化并且出租?这是类似一个建设州际公路的大型建筑公司,出租其设备和专门的技术,把他们投入到例如,修建一条小路,铺平了一间超级市场的停车场,修理管路,或者开掘后院游泳池的工程中。
更具体地, AWS通过REST或者基于SOAP的网络服务呼叫使亚马逊业务体系的各个模块都能够连接和使用。这些模块可以比作是有X2GHz处理器和2GB内存的虚拟电脑系统,并且存储系统能够容纳数TB的数据,数据库,支付管理系统,订单追踪系统,虚拟店面系统,所有上述情况的组合,甚至更多。当我说“实用”,我真正的意思是指“值得” 。你只需要为你使用的服务(和他们的资源)买单。
最为关键的是,你可以租用大量的虚拟机,存储数TB的数据,或建立一个互联网范围的消息队列,并且你将只需向Amazon支付你消费的资源费用。因此,如果你的业务需求的一组CPU群和数百十亿字节的储存空间来处理你每周星期三才要处理的工作,也就是说,你并不需要一间房子来存放一个星期有六天不工作的服务器。你可以使用AWS。因此,AWS对有间歇性或短暂的处理需求的商业系统尤其具有吸引力。
费用也非常合理。举例来说,贮存100 GB的数据一个月,将花费15美元( 15美分每GB每月) ,开发者每发送1GB数据到“计算云”需要支付10美分费用(亚马逊网络服务的网站提供了一个简单的在线AWS计算器,计算你每月使用的任何服务组合的费用) 。
[想了解更多AWS以及其云计算的竞争对手?请参阅我们的特别报告”Inside the emerging world of cloud computing.”。准备涉足AWS,但又不知道从何开始?请阅读”Hooking your apps into Amazon Web Services.” ]
正如上面所示,这种服务范围包括从硬件(尽管虚拟)到处理。这些服务分为三类:基础设施服务,电子商务服务,和网络信息服务。
调查基础设施服务
基础设施服务有弹性计算云(EC2);简单储存服务(S3),持久存储系统;简单数据(SimpleDB)组成,他实现了一个远端存取数据库; 和亚马逊的简单排队服务(SQS) ,一个消息队列服务和约束分布式应用程序代理,由E2,S3 ,和SimpleDB 组合构成。
这些服务的提供无限的计算,存储和通讯设施。他们非常适合被称为“间歇性”的应用:他们需要大量计算或贮存设施,并且不安常规(例如,一个应用程序只在每周周五晚上进行收集数据的处理) 。一个应用程序,需要全世界连通性-也就是说,一个系统对图形文件进行处理并且将结果通过互联网提供给客户-也可以善加利用基础设施服务。最后,这些服务作为大型分布式应用的优秀概念验证实验室。发展内务正在寻求证明,一个被提议的企业环境应用程序能通过使用基础设施服务来实现一个蓝本的可行性,并且可以避免硬件成本,但如果该蓝本被认为不可行,将是一个净损失。
弹性计算云(EC2)。
想象一个广阔空间充满了服务器系统,所有网路连结在一起。坐在你的单一工作站,你创建一个虚拟机的形象,它定义了一个1.2 GHz主频处理器,1.7GB内存和一个160 GB的硬盘的虚拟机运行Linux,并且预装你特别用来压缩大量待处理数据的软件。你部署他对外服务,并且管理这些服务器。在将来某个时间,你的数据挖掘操作将获得大量的数据矩阵。你指示服务实例化50部虚拟机,并释放每一个数据矩阵中。在几秒钟内, 50部1.2 GHz主频处理器都将积极处理你的的数据。他们完成后,他们的把结果存放在一个预先指定的储存点,然后消失。
EC2简言之。 他完全是一部具有无限采集能力的虚拟计算机,用户能够用来执行一些处理任务。然而“无限”并不不意味“无边际”; 相反,他是具有上限的。 亚马逊的文献阐明,你能同时租用“上百,甚至数以万计”虚拟机。
[ EC2如何同他的竞争对手较量呢?请参阅测试中心的测试评论:”Cloud versus cloud: A guided tour of Amazon, Google, AppNexus, and GoGrid.”]
因为在EC2中的系统是虚拟的,亚马逊提供了一个广泛的硬件支持能力。在低端,你可以调用一个主频是1.26GHz和1.8GB内存的 Opteron级机器。在高端(截止到写这篇文章时) ,你可以调用一个拥有15 GB内存的64位多核系统。这些规格是略计。虚拟机器,你实例在EC2计算机单元(ECU) ,亚马逊定义为相当于1 1.0ghz到1.2 GHz主频2007 Opteron处理器。 (该公司建议确定自己的基准,以确定哪些是你的特定应用程序的最好实例) 。
亚马逊机器映象( AMI )由一个操作系统和当虚拟机启动时你想要预先载入的任何的应用程序组成。目前,只有Linux可作为EC2实例的操作系统,虽然这几乎不是一个限制。有不少的亚马逊预制的AMI产品目录发布。审阅这些目录,我发现使用Ubuntu、OpenSolaris、 Centos,Fedora和许多其他的立即可用的AMIs–总共有1 00多AMI准备外卖。你可以使用亚马逊免费提供的SDK建立自己的AMI,但过程是漫长的。从产品目中选择一个编译好的AMI要容易得多,并且能够按需定做。即使如此,许多可用的AMI,包括具体应用的软件;你完全可以找到一个满足你需要的。
简单储存服务(S3)。
亚马逊简单的储存服务(S3)实际上是一个以太网上的大磁盘。严格来说,你需要知道关于它一切的90%。它没有目录和没有文件名-只是一个大空间,你可以储存和提取大小从1byte到5 G B的非结构化数据。
我们称之为“块”,S3称之为“对象” ,我们称之为“目录 ”,S3 则比方为“桶” 。因此,当你在S3上储存200KB的JPEG格式的图片时,你是把200KB的对象放进水桶。一特定的AWS帐户可以拥有多达100个水桶。水桶能容纳无限数量的块,它可以分配给无论是在美国或欧洲的使用者。据推测,这为用户提供了一个本土化的服务,因为桶可在任何地方通过互联网,从亚马逊获得。在美国和在欧洲提供服务的费用差异是微小的;在欧洲提供1000次的网络存取服务,只比在美国贵大约2000美分。
更深入,你可以把一对象看做是三位一体:关键字,数值,和元数据。关键字是该对象的名称,数值是它的内容,以及元数据是一组描述对象信息的关键字/数值对。 (虽然访问权限也同对象联系在一起,但被视为单独的存储对象) 。对象的名称可以是3至255个字符,亚马逊对命名唯一约束的地方就是,是他们希望不要同网址混淆。因此,一个对象被命名为“ 192.168.12.12 ”是不合要求的。
而S3的结构实际上是一个平面文件系统, S3的API允许一位能干的程序员在桶内建立明显的子目录。不够理想的是对象名称中必须包含该目录的名称;不过,人为的可以简单修饰对象名称。因此,如果你想要一个动物的目录和蔬菜的目录,你可能有对象关键字,如“动物-猫” , “动物-狗” , “蔬菜-甜菜, ”和“蔬菜-胡萝卜” 。使存储目标的地址前缀参量,你可以限制被检索对象的关键字为动物或蔬菜。 在亚马逊的简单的数据库应该保存更加复杂的数据结构。
亚马逊的简单数据库服务(SimpleDB)。
亚马逊S3是专为大型,非结构化的数据块设计,而SimpleDB是为复杂的,结构化数据建立的。与其他服务一样,这个名称说明了一切。虽然SimpleDB是使用轻量级并且很容易掌握的查询语言实现的数据库,但他支持大部分你可能会需要的数据库操作(搜索,提取,插入,并删去)。为保持SimpleDB简洁,亚马逊遵循一个原则,就是最好的API拥有最低限度的切入点:SimpleDB有七项。
SimpleDB数据库不是像Oracle或MySQL那样的关系数据库。 (亚马逊的文件指出,如果你确实需要成熟的关系数据库,你可以在弹性计算云中的AMI平台上免费的运行MySQL服务器)。SimpleDB数据库(一个 “领域”在SimpleDB说法)由数据项组成,并且数据项目由属性组成。 属性是一个名字/数值对。最少,数据项必须有ItemName属性,担当数据项的唯一识别符。当你发送一次查询时,结果是ItemName数值的汇集-获取数据项的实际内容(属性),你使用那些数值作为输入执行Get操作。
并不是那么简单,SimpleDB拥有令人惊讶的能力。 一个 SimpleDB数据库可以成长到10 GB的和安置多达2.5亿个属性。你可以为某一特定数据项定义多达256个属性,并没有规定在一个域中所有的数据项具有相同的属性。在此外,特定的属性可以有多个值,因此,客户数据库,可以为单一customername属性存储多个别名。
最后,SimpleDB是专为支持“实时” (快速周转)查询设计。为确保快速查询响应,当数据项被放置在数据库中时,所有属性将自动索引编号。此外,亚马逊的文件显示,查询应在不超过5秒内完成,否则,查询可能会中止。亚马逊这么做是为确保查询收到一个快速反应,即使使查询达到妨碍调用程序的恶意程度。
亚马逊简单队列服务(SQS)。亚马逊SQS相对于JMS或MQSeries服务体系来说,只是一个简单的消息队列服务。SQS最显著的特征是它的无所不在。一个亚马逊的书籍文献表明: “在互联网的所有计算机不用安装任何软件或特殊防火墙配置就可以增加或读消息”。 当然, SQS信息的处理端很可能就是EC2上的AMIs。
像亚马逊其他网络服务,SQS名副其实:消息只许是文字,并且长度必须小于8 KB。你可以构建一个具有四个功能的工作队列:createqueue , sendmessage , receivemessage , deletemessage 。 (还有其他方便的功能; 例如,ListQueues将列出现有帐户的的队列) 。
SQS队列主要设计支持分布式计算机系统之间的工作流,因此,并发管理和故障排除是绝对的。当客户从队列读一则消息时,那则消息没有被删除; 它被锁定,导致其他客户看不见。用那个方式,如果消息作为工作流一部分,代表一项具体任务执行,两个客户不可能同时读一消息,并且复制。然而,如果消息没有在指定的暂停之前被删除,锁就被解除了。 然而,目的是让消息的原始读者指定的工作完全时将消息删除。如果原始的读者无法完成工作(或许由于系统事故),那么暂停到期,消息在队列中“再现”,并且一个不同的客户能读消息和承担该指定的工作。
进入电子商务服务
亚马逊的电子商务服务,提供的设施,支持你(或你的网站)成为亚马逊的商品的一个经销商。或者让亚马逊成为你自己的商品的一个经销商。并且让你还能同亚马逊一样使用同样的支付认证和收集系统。简而言之,亚马逊电子商务服务,就是全天候运行其服务,为组织和个人提供电子商务平台。
亚马逊灵活支付服务(FPS)。亚马逊的FPS让用户可以使用公司的现有的付款汇集基础设施(当然,要付费)。当你知道FPS理念时那是特别有吸引力的,它将“承担处理管理安全和欺骗保护的复杂事物”,因此就不必亲自处理这些了。
FPS的两个方面是特别令人感兴趣。首先,它支持美分-甚至更小的单位小额支付。这是非常有用的,当商业活动涉及桩和桩交易时,每个小的货币价值,但加在一起就有可衡量的价值。试想以10美分出售泡泡糖。似乎没有人能赚更多-除非你每个月卖100,000片。亚马逊FPS让你聚集小额支付成一种唯一交易,从而消除交易成本沼泽的问题,这个问题是任何涉及利润的交易都会面临。
FPS的另一个令人感兴趣的方面是它的支持“中间人”操作。 即你能方便你作为发令者 (买家)或接收者(卖主) 而参加的交易。不过,你可以采取削减行动。
有两种方法在你的Web应用程序中使用FPS:使用亚马逊提供的“窗口组件” (有两个) ,或硬编码程序接口。两个可用的窗口组件是Pay Now 和 Marketplace(两个设计能够方便地添加到网站的用户界面)。
亚马逊有自动化生成的Pay Now窗口组件。连接到在线Pay Now窗口组件实施指南,他能通过提示输入的各种各样的参数(例如,在安置了付款后的目标网址)引导你完成建立窗口组件这个过程,然后生成HTML ,你可以剪切和粘贴到你网站代码。Marketplace窗口组件让你作为在买家和卖主之间的第三方。从本质上讲,它把你变为一个即时的经销商。你可以使用MarketPlace窗口组件,让卖家在你的网站上做交易并且你支付授权费。
这硬编码的做法虽然更困难的,但更灵活的,因为它使任何应用程序都可以通过FPS与Web服务通信。你要表述付款交易的参数和过程,用一个专门小型语言Gatekeeper。一旦你那样做了,你将这些操作指南安装到亚马逊FPS,它会传回一个标识符,实际上是Gatekeeper代码的一个句柄。你的Gatekeeper程序将引导使用那个标识符的未来交易,。这个过程的细节可以在在线的亚马逊FPS的技术文件中查到。
亚马逊DevPay 。假设你写一个了不起的应用程序运行在亚马逊EC2 。你应该相信会有人愿意支付你应用程序的使用费。进入亚马逊DevPay服务。
亚马逊DevPay是建立在同亚马逊FPS一样的支付管理基础设施上的。但DevPay -正如其名-是专门设计用来让开发者收取EC2或基于S 3的应用程序的使用费。
与DevPay的相互作用通过标识符(唯一识别符)发生。 一个标识符用于识别应用程序; 另一个识别使用你的应用程序的具体用户。首先,当你用DevPay登记你的产品时,产品标识符是由亚马逊生成的。 这个标识符,结合用户的激活码 (用户注册AWS时候生成),将在产品安装生成包含用户标识符的证书时生效。 你的产品将这些标识符嵌入到AWS的服务业务中,并且用那个方式, DevPay 能跟踪特定用户对你的应用程序的使用。
当你用DevPay注册你的应用程时,就应该确定你的应用程序该怎么定价。用户可以结算在价格表(支付他们的使用)的基础上,他们可以每月交,或者他们可以预先支付先前的费用。 当然,你必须小心你怎么安排你的账单。 当你的客户支付你的应用的使用费时,你必须支付亚马逊服务的使用费。因此,至少,你必须确信,你的顾客支付的比你支付给亚马逊的多。不幸地,亚马逊并没有提供一个测试区测试你的应用程序与DevPay的整合性,因此你必须做你的测试用真正的金钱。幸运地,亚马逊服务的费用是足够低,这并不是一个实质性的问题。
亚马逊联盟及亚马逊实现Web服务(FWS)。任何人已通过点击网站,从亚马逊订购就已经使用了亚马逊联盟:他是一项让你从你的网站出售亚马逊的东西的服务。你得到的百分比-为每个出售推介费。关于亚马逊联盟没有更多说的。
FWS更有趣的亚马逊电子商务服务,不过,他的引人注意的功能则与亚马逊联盟是相反的。使用FWS,不是你的销售亚马逊的东西,而是亚马逊的销售你的东西。不仅如此,亚马逊也将存储,包装,运送你的商品。
FWS其实是由Inbound Service 和 Outbound Service两个Web服务组成。你使用Inbound系统通知亚马逊接踵而来的发货发正送到他们的仓库。当顾客定购你的一个产品时,你可以使用 Outbound Service告知亚马逊销售。基于详细的秩序,亚马逊包装并运送该产品,甚至提供跟踪信息,你和你的顾客可以用来监测发货的状态信息。
当然,有涉及仓储和处理的收费项目,但它的一个令人信服的模式。一家小公司,无法负担的仓储和运输费用,可以使用亚马逊FWS “虚拟化” 这些组件,直到这家公司自己足够大,并能够自己承担这些。任何开发商有兴趣探索Inbound和Outbound服务的过程,并且将很高兴亚马逊提供“高速暂存的”应用工具,以便让你试用模拟服务。
土耳其机器人网站。亚马逊的土耳其机器人网站是一个特殊的服务。 (这是很难归类;我已列出了他与其他电子商贸服务)。他的名称来自于18世纪一种名为“The Turkwhich”的自动象棋机设备,他由Wolfgang von Kempelen发明。不过,机器人,并非是真正的机器人;机器内是人并且操作着这个机器,真实对手毫不不知情。那么,土耳其机器人网站的构思,是一种自动化的前端,在他的体系之后隐藏着一个人。
但是在这种情况下,它不只是一人;而是有许多。而EC2提供了一个弹性云计算机,土耳其机器人网站提供了一个弹性云人类。但这个比喻只有到目前为止;电脑在EC2是虚拟的,而人类在土耳其机器人网站并非如此。
这里是如何运作。假设你有一个大堆相同的任务,必须有人类来执行。也许你有大量的文本文件必须从一种语言翻译到另一种。在土耳其机器人网站的世界,你是一个请求者;你提交你的任务到土耳其机器人网站服务,将他们安置在一种全球电子布告栏。使用相同的服务,工作人员登录到这个电子布告栏中,选择任务,执行他们,并反馈结果给服务。接着你返回到土耳其机器人网站,检查结果发布,选择那些是可以接受的,并发布资金支付给工作人员。简言之,土耳其机器人网站服务是雇主和雇员之间一个中间人,。
当我第一次读土耳其机器人网的描述,我认为这是一个好主意。它也许是,但我无论何时仔细琢磨提供的任务都有迹象显示,这是不是一个获取大量数额金钱的方法。发布的大部分HITS( “人工智能任务” ,提交给一个工作单位)支付的只是钱,当阅读部分说明时让我感到不安,工作人员会被用来作为人类电子邮件搜寻程式。
这是一种可能,在未来的日子,土耳其机器人网站将成为市场上赚钱的体面工作。现在,虽然,我深信我可以赚更多的钱在更短的时间-以及做得更好-帮忙隔壁老婆婆修剪草坪
进入网络信息服务
亚马逊的网络信息服务本质上是有混合网络搜索器和网站流量监测工具所产生的广泛数据库的查询界面。数据挖掘组织能够利用搜索器生成的数据筛选的像Web一样广泛的信息。Web业务数据对那些公司和个人是相当的有用,他们热衷于研究用户对他们的网站以及与其相关或者竞争网站的访问趋势。
公用事业的网站流量数据是不言自明的任何公司或个人有兴趣的用户探视的趋势,以他们的网站-以及作为相关或相的网站。
Alexa网络搜索。亚马逊的Alexa网络调查的Amazon和Alexa合作的结果,它可以让你查询Alexa的网页搜索器收集到的资料。现有资料的数量是难以衡量; Alexa的已检索网页超过10年,而互联网也是在马不停蹄的增长。Alexa的网站上说,而它的搜索器是在不停的工作,遍历整个互联网的周期大约需要两个月。
当Alexa增加了新的网站文件到它的数据库时,它将索引约50个与该文件相关的属性。这些属性,包括文件的语言,其开启的文件类别,网址的各种解析组成部分,主机服务器的地理位置,以及更多。当然也可以从该文件的文本中了解这些,他的前20kb的是被文字索引了的。所有这一切,都是可供搜索的。
当然,搜索这样一个大型数据库,可是需要时间的。该Alexa网络搜索服务是架构的,因此当你发布搜索时,服务返回一个请求ID 。你使用此ID来跟踪你的搜索的进展状态。当搜索完成后,结果被存储在一个(可能是巨大的)文本文件。文本文件可以下载和“保存”在本地。
Alexa网络信息服务(AWIS) 。该Alexa网络信息服务可让你动用各种部署在互联网上的Alexa工具收集的业务数据。你可以查询一特定的URL的信息资料,例如网站的相关信息,业务统计数字(回到五年) ,甚至更多。你也可以了解某一页有多少个链接,有多少的网址是嵌入到JavaScript中,或更有趣的统计,即其他网站是如何可能链接到目标( “向内指向”链接) 。你也可以使用AWIS撷取网页的缩略图,可用于响应光标停留于链接上时,显示弹出式窗口
Alexa的数据的准确性目前还不清楚。Alexa的网站上说, “业务数据是基于使用Alexa的数据一套工具栏,却未必能够代表全球互联网人口” 。同时,亚马逊网站的Web服务代表告诉我,亚马逊“从多种来源统计的数据,以让你能更好地了解网站人气” 。在任何情况下,能遍历整个互联网文本内容的能力,使Alexa的网络服务成Web数据收集者有利可图的捷径。
长时间准备?
亚马逊的网络服务是立刻令人兴奋和不安的。基础设施服务,采取一种“雇佣”硬件和软件的模式;从理论上讲,你可以拥有强大的计算能力,只要的经济能够承受。所有的服务提供普遍的可用性-如果你的网络连接可以接亚马逊,它就可以接到AWS。这对带动大型,随时应变的软件服务来说是一把双刃剑。
不过,在另一方面,一些重要的组成部分仍处于测试阶段。 事实上,SimpleDB是有限制的Beta,到发稿时不接受新用户。对“测试版”描述是令人不愉快的,因为它意味它的结构尚未稳定。在6月这暗示成为了不争的事实,亚马逊的S3遭受了临时故障,使像纽约时报这样的知名用户受到了影响,并且导致他们的文档受到破坏。
此外,整个AWS的长期安全仍然有待观察。我们用亚马逊的话,它的系统保证将一个用户的应用程序同另一用户分离。简而言之,AWS只在他的用户相信他是完美的情况下才开始运行将。任何形式的安全缺口都将可能是一个致命伤。
分布式系统的程序员和设计师将发现AWS网站上的基础设施的网完全就是一个游乐场。你可以花时间阅读该文档,指南,实例,并参考社区提供的工具及资料库。
“云”服务-EC2,S3,SQS以及SimpleDB是非常引人注意。实际应用被建在的这些虚拟技术上。实例可以在亚马逊网络服务的弹性计算云资源页上可以找到。
一些AWS组成部分是有问题的实用工具。特别是,土耳其机器人似乎创造一个内在动力来导致任务的定价低于他们应该有的。不过,甚至 Turk可能是一个超前技术实例。或许Mechanical Turk也将有有能力指导网上业务持续得到改善。
是否亚马逊的“可出租基础设施”的概念被人认可,还是一个未知数。其功能衰竭(应该失败)将不会是因缺乏信息和工具。我会热切关注AWS的网站和AWS的相关博客,看看有都什么创造将源于AWS描述的techno-tinker-toy组件。