上述云计算用户案例涉及的Amazon EC2、Google App Engine(GAE)、Salesforce.com也可以说是当前比较典型的云计算服务产品了。现在我们认识一下这些云计算服务产品。
1.2.1 Amazon云计算服务简介
在开展云计算服务之前,亚马逊(Amazon.com)是美国最大的基于B2C的电子商务公司。为了满足旺季的销售需要,Amazon不得不购买很多服务器以应对超常的客户访问量。但是旺季过去之后,这些服务器就处于闲置状态而得不到充分的利用。为了让这些服务器能够得到充分的利用,Amazon开始尝试将这些物理服务器虚拟成虚拟服务器,并以在线交易的形式租给愿意花钱购买虚拟服务器的客户,这就是今天Amazon云计算服务的雏形。
1. Amazon EC2
Amazon Elastic Computing Cloud(EC2,亚马逊弹性计算云)是Amazon向公共用户出租虚拟机的商业化服务。任何用户只需要创建一个账号,并绑定有效的信用卡,即可获得一台完全属于自己的虚拟服务器。
用户登录服务界面,选择希望虚拟服务运行的“Region”和“zone”后(相当于选择运行虚拟服务的数据中心),就可以创建自己的虚拟服务器了。
虚拟服务器的创建过程很简单,只需按照EC2的提示一步一步进行即可。EC2提示用户选CPU个数、内存容量、硬盘容量等配置参数;然后,EC2会询问用户需要安装的操作系统,如Windows或Linux;更进一步,用户可以根据EC2提供的工具创建一个个性化的操作系统,这个个性化的操作系统可能是修改过内核模块的Linux操作系统,或者预装了一些软件的Windows操作系统等。另外,用户可以通过一个简单的防火墙界面,设置虚拟服务器的网络安全策略。
上述创建过程完成后,用户只需单击Launch按钮,EC2就开始进行虚拟服务器的部署了。几分钟之内,用户就可以对其进行访问了。在使用过程中,用户还可以结合监控服务,对虚拟机的资源使用状况(例如CPU、网络等)进行实时的观察。除此以外,用户还可以为某项性能指标设定阈值,一旦某项指标超过了阈值,EC2会自动为用户再分配一台虚拟机。因此,通过监控和联动操作,用户能够获得可弹性伸缩的能力。
EC2提供的虚拟服务器在用户看来是一台完全独立的服务器,用户甚至感觉不出这是一台虚拟的服务器。通过EC2所提供的服务,用户不仅可以非常方便地申请所需要的计算资源,而且可以灵活地定制所拥有的资源,如用户拥有虚拟的所有权限,可以根据需要定制操作系统,安装所需的软件。最后,用户可以根据业务的需求自由地申请或者终止资源使用,而只需为实际使用的资源数量付费。
EC2的虚拟服务器与拥有一台传统意义上的服务器还是存在一些值得注意的差别。
EC2由Amazon Machine Image (AMI)、EC2虚拟机实例和AMI运行环境组成。AMI是一个用户可定制的虚拟机镜像,是包含了用户的所有软件和配置的虚拟环境,是EC2部署的基本单位。AMI被部署到EC2的运行环境后就产生了一个EC2虚拟机实例,由同一个AMI创建的所有实例都拥有相同的配置。需要注意的是,EC2虚拟机实例内部并不保存系统的状态信息,存储在实例中的动态信息将随着它的终止而丢失。用户需要借助Amazon的数据持久化服务保存用户数据,这些服务包括Amazon Simple Storage Service(S3,亚马逊简单存储服务)、Amazon SimpleDB(亚马逊简单数据库)、Amazon Simple Queue Service(SQS,亚马逊简单队列服务)。
2. Amazon S3
Amazon Simple Storage Service (S3)是云计算平台提供的可靠的网络存储服务。通过S3,个人用户可以将自己的数据放到存储云上,通过互联网进行访问和管理。同时,Amazon公司的其他服务也可以直接访问S3。
作为云平台上的存储服务,S3具有与本地存储不同的特点。S3采用的按需付费方式节省了用户使用数据服务的成本。S3既可以单独使用,也可以同Amazon公司的其他服务结合使用。云平台上的应用程序可以通过REST或者SOAP接口访问S3中的数据。以REST接口为例,S3中的所有资源都有唯一的URI标识符,通过向指定的URI发出HTTP请求,就可以完成数据的上传、下载、更新或者删除等操作。
为了保证数据服务的可靠性,S3采用了冗余备份的存储机制,存放在S3中的所有数据都会在其他位置备份,保证部分数据失效不会导致应用失效。在后台,S3保证不同备份之间的一致性,将更新的数据同步到该数据的所有备份上。
3. Amazon SimpleDB
Amazon SimpleDB是一种支持结构化数据存储和查询操作的轻量级数据库服务。与传统的关系数据库不同,SimpleDB不需要预先设计和定义任何数据库Schema,只需定义属性和项,即可用简单的服务接口对数据进行创建、查询、更新或删除操作。
SimpleDB是一种简单易用的、可靠的结构化数据管理服务,它能满足应用不断增长的需求,用户不需要购买、管理和维护自己的存储系统,是一种经济有效的数据库服务。SimpleDB提供两种服务访问方式:REST接口和SOAP接口。这两种方式都支持通过HTTP协议发出的POST或者GET请求访问SimpleDB中的数据。
需要注意的是,SimpleDB毕竟是一种轻量级的数据库,与技术成熟、功能强大的关系数据库相比有些不足,SimpleDB不能保证所有的更新都按照用户提交的顺序执行,只能保证每个更新最终成功,因此应用通过SimpleDB获得的数据有可能不是最新的。此外, SimpleDB的存储模型是以域、项、属性为层次的树状存储结构,与关系数据库的表的二维平面结构不同,因此在一些情况下并不能将关系数据库中的应用迁移到SimpleDB上。
4. Amazon SQS
Amazon Simple Queue Service(SQS)是一种用于分布式应用的组件之间数据传递的消息队列服务,这些组件可能分布在不同的计算机上。利用SQS能够将分布式应用的各个组件以松耦合的方式结合起来,从而创建可靠的Web规模的分布式系统。松耦合的组件之间独立性强,系统中任何一个组件的失效都不会影响整个系统的运行。
消息和队列是SQS实现的核心。消息是可以存储到SQS队列中的文本数据,可以由应用通过SQS的公共访问接口执行添加、读取、删除操作。队列是消息的容器。SQS是一种支持并发访问的消息队列服务,它支持多个组件并发的操作队列,如向同一个队列发送或者读取消息。消息一旦被某个组件处理,则该消息将被锁定,并且被隐藏,其他组件不能访问和操作此消息,此时队列中的其他消息仍然可以被各个组件访问。
SQS采用分布式构架实现,每一条消息都可能保存在不同的机器中,甚至保存在不同的数据中心里。这种分布式存储策略保证了系统的可靠性,但并不严格保证消息的顺序。另外,消息的传递可能有延迟,不能期望发出的消息马上被其他组件看到。
1.2.2 Google云计算服务简介
Google公司拥有目前全球最大规模的互联网搜索引擎,并在海量数据处理方面拥有先进的技术,如分布式文件系统GFS、分布式存储服务Datastore及分布式计算框架MapReduce等。2008年Google公司推出了Google AppEngine (GAE) Web运行平台,使用户的业务系统能够运行在Google分布式基础设施上。GAE平台具有易用性、可伸缩性、低成本的特点。另外,Google公司还提供了丰富的云端应用,如Gmail、Google Docs等。
GAE不能让用户执行后台服务或分割自己的系统。它建立在既有的框架之上,并允许用户快捷地部署Web应用。与EC2不同,要使用GAE,必须使用Google的框架,不能直接访问底层的虚拟机系统。因此,GAE并不会在待机时间向你征收费用,只有在CPU实际处理时才会计费。
GAE平台支持Python和Java两种编程语言。不论使用哪种语言平台,都需要使用GAE平台提供的一组类库。同时,GAE平台还会赋予用户将数据存入一个独特数据库的能力,这个数据库类似于SimpleDB,但是它允许用户自定义索引。GAE同时还直接与许多Google的服务相集成。例如,用户可以用Google身份验证来取代自己的身份验证机制(或者与其他第三方的服务相集成),以此向用户提供一个简单的单点登录系统。用户还可以直接集成Google Mail来向他人发送电子邮件,甚至可以使用Google的即时消息(XMPP)系统实时地与他人直接沟通。Google还提供了一个独特的任务队列(Task Queue)系统,能让用户创建类似Cron作业那样的以一定时间间隔执行的任务。
GAE不同于EC2,EC2的目标是为了提供一个分布式的、可伸缩的、高可靠的虚拟机环境。GAE更专注于提供一个开发简单、部署方便、伸缩快捷的Web应用运行和管理平台。GAE的服务涵盖了Web应用整个生命周期的管理,包括开发、测试、部署、运行、版本管理、监控及卸载。GAE使应用开发者只需要专注核心业务逻辑的实现,而不需要关心物理资源的分配、应用请求的路由、负载均衡、资源及应用的监控和动态伸缩。
整个GAE平台主要由5个模块组成。
● 应用服务器。主要用于接收来自外部的Web请求。
● Datastore。主要用于对信息进行持久化,并基于Google的BigTable技术。
● 服务。除了必备的应用服务器和Datastore之外,App Engine还自带很多服务来帮助开发者,比如Memcache、邮件、网页抓取、任务队列和XMPP等。
● 管理界面。主要用于管理应用并监控应用的运行状态,比如消耗了多少资源,发送了多少邮件和应用运行的日志等。
● 本地开发环境。主要是帮助用户在本地开发和调试基于App Engine的应用,包括用于安全调试的沙盒、SDK和IDE插件等工具。
GAE主要面向软件开发者,支持普通的Web类应用,主要提供以下功能。
● 支持Web应用。
● 提供对常用网络技术的支持,比如SSL等。
● 提供持久存储空间,并支持简单的查询和本地事务。
● 能对应用进行自动扩展和负载平衡。
● 提供功能完整的本地开发环境,可以让用户在本机上对基于GAE的应用进行调试。
● 支持E-mail、用户认证和Memcache等多种服务。
● 提供能在指定时间触发事件的计划任务和能实现后台处理的任务队列。
GAE比较易于使用,它的使用流程主要包括以下几个步骤。
①下载SDK和IDE,并在本地搭建开发环境。
②在本地对应用进行开发和调试。
③使用App Engine自带上传工具来将应用部署到平台上。
④在管理界面启动这个应用。
⑤利用管理界面来监控整个应用的运行状态和资费。
GAE主要支撑Web应用开发,采用CGI(Common Gateway Interface,通用网关接口)作为主要的编程模型。CGI的编程模型非常简单,就是当收到一个请求时,启动一个进程或者线程来处理这个请求,处理结束后这个进程或者线程将自动关闭,之后会不断地重复这个流程。由于CGI这种编程模型在每次处理的时候都要重新启动一个新的进程或者线程,即便有线程池这样的优化技术,其资源消耗也相对较大。但由于架构上的简单性,CGI还是成为GAE首选的编程模型,同时由于CGI支持无状态模式,因此在伸缩性方面具有优势。GAE的两个语言版本都自带CGI框架:在Python平台为WSGI,在Java平台则为Servlet。GAE还引入了计划任务和任务队列这两个特性,它可以支持计划任务和后台进程这两种编程模型。
GAE在资费上有两个特点:一是免费额度高,现有免费的额度能支撑一个中型网站的运行,而不必支付任何费用;二是资费项目分类细,除了常见的CPU、网络带宽等项目外,还包括很多应用级别的项目,比如Datastore API和邮件API的调用次数等。如果用户的应用每天消费的各种资源都低于免费额度,用户无须支付任何费用;当超过免费额度的时候,用户就需要为超过的部分付费。
1.2.3 Salesforce云计算服务简介
Salesforce是一家CRM软件服务提供商。由于近年在高端企业应用中获得的成功,其用户市场已经从早先的中小型企业扩大到任何规模的企业。
Salesforce在2000年推出了在线销售自动化解决方案产品SalesForce Automation,该产品主要面向CRM软件服务市场,提出了“软件即服务”的口号。Salesforce提供按需使用、功能定制的软件服务,用户无须在本地安装软件,也无须在系统维护和管理上投入资金和人力成本,用户的所有记录和数据都储存在Salesforce.com网站中。
以Salesforce Automation为基础,Salesforce公司推出了Sales Cloud服务,该服务贯穿于企业销售活动的各个阶段。从前期的机会管理到后期的统计分析与市场预测,应用Sales Cloud服务能够起到使销售过程加速和流水线化的作用。Sales Cloud还提供了一套完整的体系架构,使每个企业都能在整个组织范围内体验定制软件服务的优点。
用户通过Salesforce门户login.salesforce.com,经过简单的注册,便可以免费使用Sales Cloud 30天试用版本,如果试用满意,则可以使用信用卡购买服务。
进入Sales Cloud的界面,除了允许用户自定义整体界面的相关属性(如界面语言、时间、表单是否可折叠、悬停提示信息、内联编辑、拼写检查、增强列表、侧栏样式、日历显示等)外,还允许用户自定定义功能面板界面(如允许用户进一步控制各个功能选项卡的名称、组件、按钮、超链接、布局等属性)。
在功能配置方面,Sales Cloud服务分为多个版本,每一个版本都是一个独立的可销售单元,较高版本的服务总是包含较低版本服务的全部功能。Sales Cloud企业版包含专业版的全部功能,同时也新增了一些高级的原子功能;同样,Sales Cloud专业版包含工作组版的全部功能,并增加了营销管理、合同管理、产品管理等原子功能。在具体实现时,Sales Cloud用产品功能配置数据库记录每个销售包所包含的原子功能,用户登录时系统只要检查与该用户关联的销售包类别即可获得该用户的可用功能列表(只提供用户订购的销售包列表,隐藏该销售包不具备的原子功能)。
在数据配置方面,SaaS(Software as a Service,软件即服务)服务借助预留数据表字段和元数据库表等技术,允许用户自定义数据结构甚至编辑某些数据字段。Salesforce采用元数据描述字段并将该信息保存到元数据库中。在Sales Cloud中,用户可以对应用程序数据字段进行添加、编辑、设置依赖关系等操作。
1.2.4 云计算服务
前面讲述了几个云计算应用的用户案例,又对案例涉及的云计算服务进行了简单的介绍,他们即是云计算的买方和卖方。卖方通过互联网向买方交付其所需的计算资源、存储资源、应用软件资源或者多种资源的组合。这些资源都是以服务的方式进行交付,也就是说云计算是买卖的服务。
既然是服务,云计算就不同于以往的“货物”购买,不再是购买服务器、购买网络设备和存储设备、购买系统软件、购买应用软件、定制软件开发。不同于有形的货物买卖,服务是无形的,服务具有生产、传递和消费的同步性。用户体验到的服务质量包括两部分:结果质量(outcome quality),即用户得到了什么服务;流程质量,即用户是如何得到服务的。因此,对于云计算服务,不仅结果是重要的,过程也很重要。
我们也可以从服务类型的角度去观察和分析云计算。当某个应用系统的用户,以效用最大化的原则选择云服务时,情况会是怎样的呢?首先选择满足应用需求的应用软件云计算服务,只需要通过定制化的配置就可以达到要求,就像哈根达斯公司选择Salesforce云服务。其次,如果没有合适的应用软件云服务,退而选择提供开发和运行平台的云服务,用户只需要开发、调试和运行自己的软件,而运行平台维护和管理交给云计算服务商,就像Giftag将应用迁移到Google App Engine(GAE)平台。最后,如果上面两条路都走不通,只好选择能提供虚拟机的云服务,用户自己维护管理服务器操作系统,安装开发和运行环境,自己开发或购买应用软件,就像华盛顿邮报交给Amazon EC2完成档案转换工程。当然,还有最后一种回归传统的模式:自己准备机房、接入ISP、购买软硬件系统、开发软件、系统运行维护。
打着云计算服务旗帜的服务产品多种多样,未来更会是纷繁复杂,但按照一种层次化的属性,其主流或称主体服务形式可以分为提供应用软件;提供软件开发和运行平台;提供虚拟机及其他形式的基础设施环境。可以说,Salesforce云服务、Google App Engine (GAE)、Amazon EC2就是上述这种分类的典型代表。用一种比较正式、流行的命名:Salesforce云是软件即服务(SaaS);Google App Engine(GAE)是平台即服务(Platform as a Service PaaS);AmazonEC2是基础设施即服务(Infrastructure as a Service,IaaS)。
● SaaS。软件即服务(也称软件运营服务模式)可以称作应用云,为用户提供可以直接使用的应用,用户只需管理维护自己的业务数据。这些应用一般是基于浏览器的,并只针对某一项特定的功能。应用云最容易被用户使用,因为它们都是开发完成的软件,只需要进行一些定制就可以交付。但是,它们也是灵活性最低的,因为一种应用云只针对一种特定的功能,无法提供其他功能的应用。
● PaaS。平台即服务(也称平台运营服务模式)可以称作平台云,为用户提供一个托管平台,用户可以将他们所开发和运营的应用托管到云平台,用户需要管理维护自己的应用程序。但此时应用的开发和部署必须遵守该平台特定的规则和限制,如语言、编程框架、数据存储模型等。通常,能够在该平台上运行的应用类型也会受到一定的限制。一旦客户的应用被开发和部署完成,所涉及的基础设施维护管理工作,如动态资源调整等,都将由平台负责。
● IaaS。基础设施即服务(也称基础设施服务模式)可以称作基础设施云,为用户提供虚拟机操作系统,或是底层的、接近于直接操作硬件资源的服务接口。通过基础设施云,用户可以直接获得计算和存储能力,逻辑上几乎不受限制。