用Amazon Web Services进行云计算,第1部分:简介

日期: 2009-04-15 作者:Prabhakar Chaganti 来源:TechTarget中国 英文

  学习基本的Amazon SimpleDB(SDB)概念,研究boto(一个用于与SDB交互的开放源码Python库)提供的一些功能。在这个“用Amazon Web Services进行云计算”系列中,学习如何使用Amazon Web Services进行云计算。了解这些服务如何为设计和构建可伸缩、可靠的应用程序提供一种可选方案。第一篇文章解释虚拟基础设施的构建块的特性。学习如何使用Amazon Web Services构建Web范围的系统。

  什么是云计算?

  云计算(Cloud computing)可以粗略地定义为根据需要使用在用户环境之外以服务形式提供的可伸缩计算资源。用户只使用需要的资源,只为使用的资源付费。在任何时候,在Internet上的任何地方,都可以访问“云”中的任何资源。不需要关心云中的资源在幕后是如何维护的。

  云负责提供高可用性并响应您的应用程序的需要。云计算也称为效用计算(utility computing)或网格计算(grid computing)。

  云计算影响了我们设计和交付可伸缩应用程序的方式。在过去,公司要花费宝贵的时间和资源构建基础设施,从而提供竞争优势。常常是“构建它,它们就来了”。在大多数情况下,这种方式有以下缺点:

  ·有相当一部分计算能力未被使用,它们会占用数据中心中的空间。
  ·需要有人照顾服务器。
  ·有相关联的能源成本。

  未使用的计算能力被浪费了,其他公司或用户可能愿意付费购买多余的计算周期,但是无法实现。

  有了云计算,就能够把多余的计算能力销售给客户。这就把计算和IT基础设施转换为一种实用工具,就像球场一样,可供所有人使用。这使竞争取决于创新思想而不是计算资源。

  应用程序和IT系统需要的资源(为了满足日益增长的存储、计算、消息传递和数据库需求)本质上是“日用品”。可以从价格最优惠、服务最好的卖家那里租用这种基础设施。很简单,不是吗?这是一个简单但革命性的思想,尽管它并不是完全的新概念。它现在之所以成为技术潮流,是因为Amazon引入了大范围的云计算环境。

  Amazon Web Services

  Amazon Web Services是一组服务,它们允许通过程序访问Amazon的计算基础设施。Amazon多年来一直在构建和调整这个健壮的计算平台,现在任何能够访问Internet的人都可以使用它。Amazon提供几个Web服务,但是本系列只关注满足大多数系统的核心需求的基本服务:存储、计算、消息传递和数据集。

  通过在Amazon提供的可靠且经济有效的服务上构建功能,可以实现复杂的企业应用程序。这些Web服务本身驻留在您的环境之外的云中,具备极高的可用性。只需根据使用的资源付费,不需要提前付费。因为硬件由Amazon维护和服务,所以您也不需要承担维护费用。

  这个虚拟的基础设施大大降低了当今Web环境中的“贫富差异”。您可以在几分钟内快速地获得一个基础设施,而这在真实的IT工作室中可能会花费几周时间。要点在于这个基础设施是弹性的,可以根据需求扩展和收缩。世界各地的公司都可以使用这个弹性的计算基础设施。

  公司不再需要承担高额的基础设施投资和维护成本,这为创新提供了更大的机会。现在,您可以把注意力集中在业务思想上,而不需要为服务器操心,不需要担心磁盘空间不足等问题。根据Amazon的估计,企业把大约70%的时间花在构建和维护基础设施上,在推动企业发展的思想上实际上只花费30%的时间。Amazon会处理与硬件和基础设施相关的繁琐工作,并确保其高可用性,您只需关注如何把您的思想变成现实。

  下面是这个全Web范围的基础设施的主要元素,它们提供几乎所有应用程序最常用的构建块:

  存储

  所有应用程序都需要存储文件、文档、用户下载或备份。可以把应用程序需要的任何东西存储在Amazon Simple Storage Service(S3)中,从而实现可伸缩、可靠、高可用、低成本的存储。

  计算

  Amazon Elastic Compute Cloud(EC2)能够根据需要扩展或收缩计算资源,非常方便地提供新的服务器实例。

  消息传递

  Amazon Simple Queue Service(SQS)提供不受限制的可靠的消息传递,可以使用它消除应用程序组件之间的耦合。

  数据集

  Amazon SimpleDB(SDB)提供可伸缩、包含索引且无需维护的数据集存储,以及处理和查询功能。

  可以根据需要结合使用这些服务;它们能够很好地相互协作。因为这些服务在Amazon环境中运行,它们之间的所有通信通常非常快。企业家可以利用这个虚拟基础设施构建可伸缩且可靠的应用程序,与传统的应用程序主机托管平台相比可以大大降低成本,因为为了应对服务量的波动和高峰,主机托管平台需要大量服务器。它还提供很高的冗余水平。

  Amazon Web Services的用户可以使用两个支持级别:

  ·基于免费论坛的支持,由监视Amazon论坛的Amazon人员提供这种支持。
  ·付费的支持包,提供一对一和电话支持,这是更慎重的求助方法。

  Amazon在一个所有人都可访问的指示板上公布所有Web服务的健康状态;当服务出现任何问题时,都会更新这个指示板。在任何服务停止运行期间,Amazon Web Services团队会每隔15-30分钟发布更新信息,直到问题被解决。

  Amazon为与每个服务进行交互提供了基于标准的SOAP和REST接口。Amazon和第三方提供多种语言的开发人员库,包括Ruby、Python、Java?、Erlang和PHP,可以使用这些库与服务通信。还可以使用命令行工具管理EC2上的计算资源。REST接口很容易使用;可以用任何编程语言编写客户机,通过HTTP向Web服务发出请求。

  用S3进行存储

  Amazon Simple Storage Service(S3)提供一个用于数据存储和获取的Web服务接口。数据可以是任何类型的,可以从Internet上的任何地方存储和访问数据。可以在S3中存储任意数量的对象;存储的每个对象的大小可以从1字节到5 GB。存储本身位于美国或欧盟。在创建bucket(与操作系统中的文件夹概念相似)时,可以选择对象的存储位置。使用与Amazon电子商务网站的全球网络相同的数据存储基础设施存储数据,确保安全性。

  对于存储在S3中的每个对象,可以指定访问限制,可以用简单的HTTP请求访问对象。甚至可以让对象可通过BitTorrent协议下载。

  S3让用户完全不必为存储空间、数据访问或数据安全性操心。甚至不必承担维护存储服务器的成本。

  Amazon确保您的文件的高可用性,在任何时候都可以使用它们。Amazon为S3提供的服务水平协议承诺99.9%的正常运行时间,每月度量一次。

  用EC2实现弹性计算

  Amazon EC2是一个Web服务,它让用户可以在几分钟内获得虚拟机器,根据需要轻松地扩展或收缩计算能力。您只需为实际使用的计算时间付费。如果需要增加计算能力,可以快速地启动虚拟实例;当需求下降时,可以马上终止它们。

  这些实例基于Linux?,可以运行您需要的任何应用程序或软件。您可以控制每个实例。EC2环境本身基于在剑桥大学开发的开放源码的Xen系统管理程序。Amazon允许创建Amazon机器映像(AMI)作为实例的模板。可以通过指定权限控制对实例的访问。可以用这些实例做任何事;惟一的限制是,它们必须是基于Linux的映像。最近,Amazon宣布与Sun Microsystems合作提供Open Solaris支持,但是EC2可用的大多数免费和商业预构建映像是基于Linux的。

  Amazon EC2提供真正全Web范围的计算,很容易扩展和收缩计算资源。您可以完全控制在Amazon数据中心中运行的这个计算环境。Amazon提供五种服务器类型;可以选择适合自己应用程序需要的服务器类型。服务器的范围从普通的单核x86服务器直到八核x86_64服务器。可以把实例放在不同的地理位置或可用性区中,从而确保对抗故障的能力。Amazon最近还引入了弹性IP地址的概念,弹性IP地址可以动态地分配给实例。

  用Amazon Simple Queue Service实现可靠的消息传递

  Amazon Simple Queue Service(SQS)允许访问Amazon提供的可靠的消息传递基础设施。可以使用简单的基于REST的HTTP请求在任何地方发送和接收消息。不需要安装和配置任何东西。可以创建任意数量的队列,发送任意数量的消息。Amazon把消息存储在多个服务器和数据中心中,从而提供消息传递系统所需的冗余和可靠性。每个消息最多可以包含8KB的文本数据。可以在消息中使用的Unicode字符只包括
#x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]。

  每个队列可以有一个可配置的可见性超时周期,用来控制多个读者对队列的访问。一个应用程序从队列中读取一个消息之后,其他读者就看不到这个消息,直到超时周期期满为止。在超时周期期满之后,消息重新出现在队列中,另一个读者进程就可以处理它。

  SQS与其他Amazon Web Services很好地集成。可以使用SQS构建松散耦合的系统;在这种系统中,EC2实例可以通过向SQS发送消息相互通信并整合工作流。还可以使用队列为应用程序构建一个自愈合、自动扩展的基于EC2的基础设施。可以使用SQS提供的身份验证机制保护队列中的消息,防止未授权的访问。

  用Amazon SimpleDB进行数据集处理

  Amazon SimpleDB(SDB)是一个用于存储、处理和查询结构化数据集的Web服务。它并不是传统意义上的关系数据库,而是一个高可用的模式,是云中的非结构化数据存储,可以使用它存储和获取包含键的值。每组包含键的值需要一个惟一的条目名;条目本身划分为域。每个条目可以包含最多256个键-值对。可以在每个域中对自己的数据集执行查询。SDB当前还不支持垮域查询。

  SDB便于使用,提供关系数据库的大多数功能。SDB的维护比典型的数据库简单得多,因为不需要设置或配置任何东西。Amazon负责所有管理任务。Amazon自动地为数据编制索引,可以在任何时候任何地方访问索引。不受模式限制的关键优点是,能够动态地插入数据和添加新的列或键。

  SDB是Amazon基础设施的组成部分,会在幕后自动地扩展。您可以把注意力放在更重要的方面。同样,只需为实际使用的数据集资源付费。

  可伸缩的体系结构

  Amazon Web Services通过提供以下特性帮助实现可伸缩的系统:

  可靠性

  服务在经过充分测试的高可用的Amazon数据中心中运行,这些数据中心也运行Amazon自己的业务。

  安全性

  提供开箱即用的基本安全性和身份验证机制,可以根据需要在服务之上实现应用程序特有的安全措施,从而增强安全性。

  节约成本

  没有固定的成本或维护成本。只需为使用的服务付费,可以根据需要扩展资源和预算。

  容易部署

  可以通过简单的API使用这个虚拟基础设施和库的所有功能,可以在使用最广泛的编程语言中使用这些API。

  弹性

  可以根据需要扩展或收缩计算资源。可以快速地从一个服务器扩展到任意数量的服务器,从而满足应用程序的需要。

  内聚性

  四个核心服务(存储、计算、消息传递和数据集)能够非常好地协作,为各种应用程序提供一个完整的解决方案。

  社区

  Amazon Web Services社区非常活跃,这会促进世界各地的用户采用这些Web服务,有助于在这个基础设施上创建独特的应用程序。

  准备

  为了通过这个“用Amazon Web Services进行云计算”系列中的其他文章详细了解这些服务,需要注册一个Amazon Web Services账户。它会提供公共和私有安全访问密钥以及x.509安全证书,在“第2部分:用Amazon Simple Storage Service(S3)在云中存储数据”中开始使用各种库时需要这些密钥和安全证书。

  用于与这些Web服务进行交互的工具和库有用多种语言编写的不同版本。本系列中的文章力求与语言无关,提供多种语言的示例,但是熟悉Java、Ruby或Python会有帮助。

  结束语

  在本文中,介绍了Amazon的云计算环境,概述了这个基础设施的四个主要部分。本系列的后续文章详细讨论每个Amazon Web Service,以及用于利用这个虚拟基础设施构建应用程序的各种库和工具。

  关于作者

  Prabhakar Chaganti是Ylastic的CTO,这家创业公司正在构建一个对用户的整个AWS云计算环境(EC2、S3、SQS和SimpleDB)进行体系结构设计、管理和监视的统一界面。他是两本新书Xen Virtualization和GWT Java AJAX Programming的作者。他还在VMware Global Virtual Appliance Challenge上获得了社区评选的最具创意Virtual Appliance奖。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐