IT,身为一个新兴行业,在其发展历程中向其他行业借鉴了一些先进的思想和理念,比如除了前面提到的从电力行业借鉴了公用事业这种商业模式和从丰田汽车流水线生产中总结出精益这套编程模式之外,还在软件设计方面引入了架构这个在建筑行业非常核心的概念。
架构,对软件系统而言是极为重要的。因为它不仅定义了系统内部各个模块之间是如何整合和协调的,同时也对其整体表现起着非常关键的作用。而云,作为一个非常复杂的大型软件系统,其中包含着许许多多的模块和组件,所以如果能够理出其架构的话,将会非常有益。
为了让大家对云计算有更深入的理解,本章将会对云的架构进行深入剖析。除了云的架构之外,本章还将会对云计算最主要和最常见的4种模式进行深入介绍。
云的架构
在对云计算进行了三年多的研究之后,我觉得云计算虽然涉及了很多产品与技术,表面上看起来的确有点纷繁复杂,但是云计算本身还是有迹可循和有理可依的,所以在个人理解的基础上,我总结出了一套云计算的架构,具体请看图2-1。
这个云架构共分为服务和管理两大部分。
在服务方面,主要以提供用户基于云的各种服务为主,共包含3个层次。其一是Software as a Service(软件即服务),简称SaaS,这层的作用是将应用主要以基于Web的方式提供给客户;其二是Platform as a Service(平台即服务),简称PaaS,这层的作用是将一个应用的开发和部署平台作为服务提供给用户;其三是Infrastructure as a Service(基础设施即服务),简称IaaS,这层的作用是将各种底层的计算(比如虚拟机)和存储等资源作为服务提供给用户。从用户角度而言,这3层服务是独立的,因为它们提供的服务是完全不同的,而且面向的用户也不尽相同。但从技术角度而言,云服务的这3层是有一定依赖关系的。比如,一个SaaS层的产品和服务不仅需要用到SaaS层本身的技术,而且还依赖PaaS层所提供的开发和部署平台或者直接部署于IaaS层所提供的计算资源上,而PaaS层的产品和服务也很有可能构建于IaaS层服务之上。
在管理方面,主要以云管理层为主,它的功能是确保整个云计算中心能够安全、稳定地运行,并且能够被有效管理。
接下来,将给大家详细介绍每个层次,其中不仅涉及它们的历史和相关产品,而且还会讨论它们的优势和采用的技术。
SaaS
SaaS是最常见的,也是最先出现的云计算服务。通过SaaS这种模式,用户只要接上网络,通过浏览器就能直接使用在云上运行的应用。SaaS云供应商负责维护和管理云中的软硬件设施,同时以免费或者按需使用的方式向用户收费,所以用户不需要顾虑类似安装、升级和防病毒等琐事,并且免去初期高昂的硬件投入和软件许可证费用的支出。
1. 历史
SaaS的前身是ASP(Application Service Provider),其概念和思想与ASP相差不大。最早的ASP厂商有Salesforce.com和Netsuite,其后还有一批企业跟随进来。这些厂商在创业时都主要专注于在线CRM(客户关系管理)应用,但由于那时正值互联网泡沫破裂的时候,而且当时ASP本身的技术也并不成熟,而且还缺少定制和集成等重要功能,再加上当时欠佳的网络环境,所以ASP没有受到市场的热烈欢迎,从而导致大批相关厂商破产。但在2003年后,在Salesforce的带领下,残存的ASP企业喊出了SaaS这个口号,并随着技术和商业这两方面不断成熟,Salesforce、WebEx和Zoho等国外SaaS企业得到了成功,而国内的企业(诸如用友、金算盘、金碟、阿里巴巴和八百客等)也加入到SaaS的浪潮中。
2. 相关产品
由于SaaS产品起步较早,而且开发成本低,所以在现在的市场上,SaaS产品不论是在数量还是在类别上都非常丰富。同时,也出现了多款经典产品,其中最具代表性的莫过于Google Apps、Salesforce CRM、Office Web Apps 和Zoho。
Google Apps。中文名为“Google 企业应用套件”,它提供企业版Gmail、Google 日历、Google 文档和Google 协作平台等多个在线办公工具,而且价格低廉,使用方便,并且已经有超过两百万家企业购买了Google Apps服务。
Salesforce CRM。它是一款在线客户管理工具,并在销售、市场营销、服务和合作伙伴这4个商业领域上提供完善的IT支持,还提供强大的定制和扩展机制,来让用户的业务更好地运行在Salesforce平台上。这款产品常被业界视为SaaS产品的“开山之作”。
Office Web Apps。它是微软所开发的在线版Office,提供基于Office 2010技术的简易版Word、Excel、PowerPoint及OneNote等功能。它属于Windows Live的一部分,并与微软的SkyDrive云存储服务有深度的整合,而且兼容Firefox、Safari和Chrome等非IE系列浏览器。和其他在线Office相比,它的最大优势是,由于其本身属于Office 2010的一部分,所以在与Office文档的兼容性方面远胜其他在线Office服务。
Zoho。Zoho是AdventNet公司开发的一款在线办公套件。在功能方面,它绝对是现在业界最全面的,有邮件、CRM、项目管理、Wiki、在线会议、论坛和人力资源管理等几十个在线工具供用户选择。同时包括美国通用电气在内的多家大中型企业已经开始在其内部引入Zoho的在线服务。Zoho在国内的代理商为百会。
3. 优势
虽然和传统桌面软件相比,现有的SaaS服务在功能方面还稍逊一筹,但是在其他方面还是具有一定的优势的,下面是其中的4个方面。
使用简单。在任何时候或者任何地点,只要接上网络,用户就能访问这个SaaS服务,而且无需安装、升级和维护。
支持公开协议。现有的SaaS服务在公开协议(比如HTML 4/HTML5)的支持方面都做得很好,用户只需一个浏览器就能使用和访问SaaS应用。这对用户而言非常方便。
安全保障。SaaS供应商需要提供一定的安全机制,不仅要使存储在云端的用户数据处于绝对安全的境地,而且也要通过一定的安全机制(比如HTTPS等)来确保与用户之间通信的安全。
初始成本低。使用SaaS服务时,不仅无需在使用前购买昂贵的许可证,而且几乎所有的SaaS供应商都允许免费试用。
4. 技术
由于SaaS层离普通用户非常近,所以大家对SaaS层用到的大多数技术都耳熟能详。下面列出了其中最主要的5种技术。
HTML。它是标准的Web页面技术,现在主要以HTML 4为主。但是即将推出的HTML5会在很多方面推动Web页面的发展,比如视频和本地存储等。
JavaScript。一种用于Web页面的动态语言,通过JavaScript,能够极大地丰富Web页面的功能。最流行的JavaScript框架有jQuery和Prototype。
CSS。主要用于控制Web页面的外观,而且能使页面的内容与其表现形式之间进行优雅地分离。
Flash。业界最常用的RIA(Rich Internet Applications,富因特网应用)技术,能够在现阶段提供HTML等技术所无法提供的基于Web的富应用,而且在用户体验方面也非常不错。
Silverlight。来自微软的RIA技术。虽然它现在的市场占有率稍逊于Flash,但由于它可以使用C#来进行编程,所以对开发者非常友好。
由于通用且学习成本较低,大多数云计算产品都会倾向于HTML、JavaScript和CSS这对黄金组合,但是在HTML5被大家广泛接受之前,RIA技术在用户体验方面还是具有一定优势的,所以Flash和Silverlight也将会有一定的用武之地,比如VMware vCloud就采用了基于Flash的Flex技术,而微软的云计算产品肯定会在今后大量使用Silverlight技术。
PaaS
通过PaaS这种模式,用户可以在一个提供SDK(Software Development Kit,软件开发工具包)、文档、测试环境和部署环境等在内的开发平台上非常方便地编写和部署应用,而且不论是在部署还是在运行的时候,用户都无需为服务器、操作系统、网络和存储等资源的运维操心。 PaaS在整合率上非常惊人,比如一台运行Google App Engine的服务器能够支撑成千上万个应用,也就是说,PaaS是非常经济的。PaaS主要面对的用户是开发人员。
1. 历史
PaaS是云服务这3层之中出现最晚的。业界第一个PaaS平台诞生在2007年,是Salesforce的Force.com,通过这个平台,不仅能使用Salesforce提供的完善的开发工具和框架来轻松地开发应用,而且能把应用直接部署到Salesforce的基础设施上,从而能利用其强大的多租户系统。接着,在2008年4月,Google推出了Google App Engine,从而将PaaS所支持的范围从在线商业应用扩展到普通的Web应用,也使得越来越多的人开始熟悉和使用功能强大的PaaS服务。
2. 相关产品
和SaaS产品百花齐放相比,PaaS产品主要以少而精为主,其中比较著名的产品有:Force.com、Google App Engine、Windows Azure Platform和Heroku。
Force.com。就像上面所说的那样,Force.com是业界第一个PaaS平台,它主要通过提供完善的开发环境和强健的基础设施等来帮助企业和第三方供应商交付健壮的、可靠的和可伸缩的在线应用。还有,Force.com本身是基于Salesforce著名的多租户架构的。
Google App Engine。Google App Engine提供Google的基础设施来让大家部署应用,还提供一整套开发工具和SDK来加速应用的开发,并提供大量免费额度来节省用户的开支。
Windows Azure Platform。它是微软推出的PaaS产品,运行在微软数据中心的服务器和网络基础设施上,通过公共互联网来对外提供服务。它由具有高扩展性的云操作系统、数据存储网络和相关服务组成,而且服务都是通过物理或虚拟的Windows Server 2008实例提供的。还有,它附带的Windows Azure SDK提供了一整套开发、部署和管理Windows Azure云服务所需要的工具和API。
Heroku。它是一个用于部署Ruby On Rails应用的PaaS平台,并且其底层基于Amazon EC2的IaaS服务,在Ruby程序员中有非常好的口碑。
3. 优势
和现有的基于本地的开发和部署环境相比,PaaS平台主要有下面这6方面的优势。
开发环境友好。通过提供SDK和IDE(Integrated Development Environment,集成开发环境)等工具来让用户不仅能在本地方便地进行应用的开发和测试,而且能进行远程部署。
服务丰富。PaaS平台会以API的形式将各种各样的服务提供给上层的应用。
管理和监控精细。PaaS能够提供应用层的管理和监控,比如能够观察应用运行的情况和具体数值[比如吞吐量(Throughput)和响应时间(Response Time)等]来更好地衡量应用的运行状态,还能通过精确计量应用所消耗的资源来更好地计费。
伸缩性强。PaaS平台会自动调整资源来帮助运行于其上的应用更好地应对突发流量。
多住户(Multi-Tenant)机制。许多PaaS平台都自带多住户机制,不仅能更经济地支撑庞大的用户规模,而且能提供一定的可定制性以满足用户的特殊需求。
整合率高。PaaS平台的整合率非常高,比如Google App Engine能在一台服务器上承载成千上万个应用。
4. 技术
与SaaS层所采用的技术不同的是,PaaS层的技术比较多样,下面是常见的5种。
REST。通过REST(Representational State Transfer,表述性状态转移)技术,能够非常方便和优雅地将中间件层所支撑的部分服务提供给调用者。
多租户。它能让一个单独的应用实例可以为多个组织服务,而且能保持良好的隔离性和安全性。通过这种技术,能有效地降低应用的购置和维护成本。
并行处理。为了处理海量数据,需要利用庞大的x86集群进行规模巨大的并行处理,Google的MapReduce是这方面的代表之作。
应用服务器。在原有应用服务器的基础上为云计算作了一定程度的优化,比如用于Google App Engine的Jetty应用服务器。
分布式缓存。通过这种技术,不仅能有效降低对后台服务器的压力,而且还能加快相应的反应速度。最著名的分布式缓存的例子莫过于Memcached。
对于很多PaaS平台,比如用于部署Ruby应用的Heroku云平台,应用服务器和分布式缓存都是必备的, REST技术常用于对外的接口,多租户技术则主要用于SaaS应用的后台(比如用于支撑Salesforce的CRM等应用的Force.com多租户内核),而并行处理技术常被作为单独的服务推出(比如Amazon的Elastic MapReduce)。
IaaS
通过IaaS这种模式,用户可以从供应商那里获得他所需要的计算或者存储等资源来装载相关应用,并只需为其所租用的那部分资源付费,而这些烦琐的管理工作则交给IaaS供应商来负责。
1. 历史
和SaaS一样,类似IaaS的想法其实已经出现很久了,比如过去的IDC(Internet Data Center,互联网数据中心)和VPS(Virtual Private Server,虚拟专用服务器)等,但由于技术、性能、价格和使用等方面的缺失,这些服务并没有被大中型企业广泛采用。但在2006年年底,Amazon 发布了EC2(Elastic Compute Cloud,灵活计算云)这个IaaS云服务。由于EC2在技术和性能等多方面的优势,这类技术终于被业界广泛认可和接受,其中就包括部分大型企业,比如著名的纽约时报。
2. 相关产品
最具代表性的IaaS产品有:Amazon EC2、IBM Blue Cloud、Cisco UCS和Joyent。
Amazon EC2。EC2主要以提供不同规格的计算资源(也就是虚拟机)为主。它基于著名的开源虚拟化技术Xen。通过Amazon的各种优化和创新, EC2不论在性能上还是在稳定性上都已经满足企业级的需求。而且它还提供完善的API和Web管理界面来方便用户使用。
IBM Blue Cloud。“蓝云”解决方案是由IBM云计算中心开发的业界第一个,同时也是在技术上比较领先的企业级云计算解决方案。该解决方案可以对企业现有的基础架构进行整合,通过虚拟化技术和自动化管理技术来构建企业自己的云计算中心,并实现对企业硬件资源和软件资源的统一管理、统一分配、统一部署、统一监控和统一备份,也打破了应用对资源的独占,从而帮助企业能享受到云计算所带来的诸多优越性。
Cisco UCS。它是下一代数据中心平台,在一个紧密结合的系统中整合了计算、网络、存储与虚拟化功能。该系统包含一个低延时、无丢包和支持万兆以太网的统一网络阵列以及多台企业级x86架构刀片服务器等设备,并在一个统一的管理域中管理所有资源。用户可以通过在UCS上安装VMWare vSphere来支撑多达几千台虚拟机的运行。通过Cisco UCS,能够让企业快速在本地数据中心搭建基于虚拟化技术的云环境。
Joyent。它提供基于Open Solaris技术的IaaS服务。其IaaS服务中最核心的是Joyent SmartMachine。与大多数的IaaS服务不同的是,它并不是将底层硬件按照预计的额度直接分配给虚拟机,而是维护了一个大的资源池,让虚拟机上层的应用直接调用资源,并且这个资源池也有公平调度的功能,这样做的好处是优化资源的调配,并且易于应对流量突发情况,同时使用人员也无需过多关注操作系统级管理和运维。
3. 优势
与传统的企业数据中心相比,IaaS服务在很多方面都存在一定的优势,下面是最明显的5个。
- 免维护。主要的维护工作都由IaaS云供应商负责,所以用户不必操心。
- 非常经济。首先免去了用户前期的硬件购置成本,而且由于IaaS云大都采用虚拟化技术,所以应用和服务器的整合率普遍在10(也就是一台服务器运行10个应用)以上,这样能有效降低使用成本。
- 开放标准。虽然很多IaaS平台都存在一定的私有功能,但是由于OVF等应用发布协议的诞生,IaaS在跨平台方面稳步前进,这样应用能在多个IaaS云上灵活地迁移,而不会被固定在某个企业数据中心内。
- 支持的应用。因为IaaS主要是提供虚拟机,而且普通的虚拟机能支持多种操作系统,所以IaaS所支持应用的范围非常广泛。
- 伸缩性强。IaaS云只需几分钟就能给用户提供一个新的计算资源,而传统的企业数据中心则往往需要几周时间,并且计算资源可以根据用户需求来调整其资源的大小。
4. 技术
IaaS所采用的技术都是一些比较底层的,其中有4种技术是比较常用的。
虚拟化。也可以将它理解为基础设施层的“多租户”。因为通过虚拟化技术,能够在一个物理服务器上生成多个虚拟机,并且能在这些虚拟机之间实现全面的隔离,这样不仅能降低服务器的购置成本,而且还能降低服务器的运维成本。成熟的x86虚拟化技术有VMware的ESX和开源的Xen。
分布式存储。为了承载海量的数据,同时也要保证这些数据的可管理性,所以需要一整套分布式存储系统。在这方面,Google的GFS是典范之作。
关系型数据库。基本上是在原有的关系型数据库的基础上作了扩展和管理等方面的优化,使其在云中更适应。
NoSQL。为了满足一些关系数据库所无法满足的目标,比如支撑海量数据等,一些公司特地设计一批不是基于关系模型的数据库,比如Google的BigTable和Facebook的Cassandra等。
现在大多数的IaaS服务都是基于Xen的,比如Amazon的EC2等,但VMware也推出了基于ESX技术的vCloud,同时业界也有几个基于关系型数据库的云服务,比如Amazon的RDS(Relational Database Service,关系型数据库服务)和Windows Azure SDS(SQL Data Services,SQL数据服务)等。关于分布式存储和NoSQL,它们已经被广泛用于云平台的后端,比如Google App Engine的Datastore就是基于BigTable和GFS这两个技术,而Amazon推出的Simple DB则基于NoSQL技术。
云管理层
虽然和前面云服务的3层相比,熟悉云管理层的人非常少,但是它确实是云最核心的部分,就好像一个公司离不开其董事会的管理一样。与过去的数据中心相比,云最大的优势在于云管理的优越性。云管理层也是前面3层云服务的基础,并为这3层提供多种管理和维护等方面的功能和技术。如图2-2所示,云管理层共有9个模块,这9个模块可分为3层,它们分别是用户层、机制层和检测层。
1. 用户层
顾名思义,这层主要面向使用云的用户,并通过多种功能来更好地为用户服务,共包括4个模块:用户管理、客户支持、服务管理和计费管理。
用户管理
对于任何系统而言,对于用户的管理都是必需的,云也是如此。云方面的用户管理主要有3种功能。其一是账号管理,包括对用户身份及其访问权限进行有效地管理,还包括对用户组的管理;其二是单点登录,英文为“Single Sign On”,其意义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,这个机制可以极大地方便用户在云服务之间进行切换;其三是配置管理,对与用户相关的配置信息进行记录、管理和跟踪,配置信息包括虚拟机的部署、配置和应用的设置信息等。
客户支持
好的用户体验对于云而言也是非常关键的,所以帮助用户解决疑难问题的客户支持是必需的,并且需要建设一整套完善的客户支持系统,以确保问题能按照其严重程度或者优先级来依次进行解决,而不是一视同仁。这样,能提升客户支持的效率和效果。
计费管理
利用底层监控系统所采集的数据来对每个用户所使用的资源(比如所消耗CPU的时间和网络带宽等)和服务(比如调用某个付费API的次数)进行统计,来准确地向用户索取费用,并提供完善和详细的报表。
服务管理
大多数云都在一定程度上遵守SOA(Service-Oriented Architecture,面向服务的架构)的设计规范。SOA的意思是将应用不同的功能拆分为多个服务,并通过定义良好的接口和契约来将这些服务连接起来,这样做的好处是能使整个系统松耦合,从而使整个系统能够通过不断演化来更好地为客户服务。而一个普通的云也同样由许许多多的服务组成,比如部署虚拟机的服务、启动或者关闭虚拟机的服务等,而管理好这些服务对于云而言是非常关键的。服务管理主要有下面这5个功能。
- 管理接口。提供完善的关于服务的Web管理界面和API接口。
- 自定义服务。能让用户对服务进行自定义和扩展。
- 服务调度。配备强健的机制来负责服务的调度,以使服务能在合理的时间内被系统调用和处理。
- 监控服务。利用底层的监控系统来观测服务实际的运行情况。
- 流程管理。提供一个工具来让用户将多个服务整合为一个流程,并对它进行管理以提升运行效率。
2. 机制层
这层主要提供各种用于管理云的机制。通过这些机制,能让云计算中心内部的管理更自动化、更安全和更环保。和用户层一样,该层也包括4个模块:运维管理、资源管理、安全管理和容灾支持。
运维管理
云的运行是否出色,往往取决于其运维系统的强健和自动化程度。而和运维管理相关的功能主要包括3个方面。首先是自动维护:运维操作应尽可能地专业和自动化,从而降低云计算中心的运维成本。其次是能源管理:它包括自动关闭闲置的资源,根据负载来调节CPU的频率以降低功耗并提供关于数据中心整体功耗的统计图与机房温度的分布图等来提升能源的管理,并相应地降低浪费。还有就是事件监控:它是通过对在数据中心发生的各项事件进行监控,以确保在云中发生的任何异常事件都会被管理系统捕捉到。
资源管理
这个模块和物理节点的管理相关,比如服务器、存储设备和网络设备等,它涉及下面这3个功能。其一是资源池:通过使用资源池这种资源抽象方法,能将具有庞大数量的物理资源集中到一个虚拟池中,以便于管理。其二是自动部署:也就是将资源从创建到使用的整个流程自动化。其三是资源调度:它将不仅能更好地利用系统资源,而且能自动调整云中资源来帮助运行于其上的应用更好地应对突发流量,从而起到负载均衡的作用。
安全管理
安全管理是对数据、应用和账号等IT资源采取全面保护,使其免受犯罪分子和恶意程序的侵害,并保证云基础设施及其提供的资源能被合法地访问和使用。主要包括下面这7种机制。
访问授权。为多个服务提供集中的访问控制,以确保应用和数据只能被有授权的用户访问。
安全策略。实现基于角色或者规则的一整套安全策略,而且还允许系统能模拟策略发生变更的情况以提升安全策略的健壮性
安全审计。对安全相关的事件进行全面审计,以检测是不是存在任何隐患。
物理安全。根据职责限定每个云管理人员不同的权限,比如门禁等。
网络隔离。使用VPN(Virtual Private Network,虚拟专用网络)、SSL(Secure Sockets Layer,安全套接层)和VLAN(Virtual Local Area Network,虚拟局域网)等技术来确保网络的隔离和安全。
数据加密。这个机制能确保即使数据被窃取,也不会被非法分子利用。相关的机制有:对称加密和公钥加密等。
数据备份。由于数据完整性对云计算而言是基本要求,所以除了通过上面这些机制来确保数据不会被没有权限的人访问之外,还需要对数据进行备份,以避免由于磁盘损坏或者管理不当导致数据丢失的情况,所以需要完善的备份服务来满足每个用户不同的备份策略。
容灾支持
在容灾方面,主要涉及两个层面。其一是数据中心级别。如果数据中心的外部环境出现了类似断电、火灾、地震或者网络中断等严重的事故,将很有可能导致整个数据中心不可用,这就需要在异地建立一个备份数据中心来保证整个云服务持续运行。这个备份数据中心会实时或者异步地与主数据中心进行同步,当主数据中心发生问题的时候,备份数据中心会自动接管在主数据中心中运行的服务。其二是物理节点级别。系统需要检测每个物理节点的运行情况,如果一个物理节点出现问题,系统会试图恢复它或者将其屏蔽,以确保相关云服务正常运行。
3. 检测层
这层比较简单,主要监控这个云计算中心的方方面面,并采集相关数据,以供用户层和机制层使用。
监控系统
全面监控云计算的运行主要涉及3个层面。其一是物理资源层面,主要监控物理资源的运行状况,比如CPU使用率、内存利用率和网络带宽利用率等。其二是虚拟资源层面,主要监控虚拟机的CPU使用率和内存利用率等。其三是应用层面,主要记录应用每次请求的响应时间(Response Time)和吞吐量(Throughput),以判断它们是否满足预先设定的SLA(Service Level Agreement,服务级别协议)。
架构示例
在现实的IT环境中,有许多云计算产品都符合本章所讲述的架构,其中比较知名的有Salesforce CRM和Google App Engine。为了帮助大家进一步理解云的架构,本节将以这两个著名的云计算产品为例来进行介绍。
1. Salesforce CRM
首先,从用户角度而言,Salesforce CRM属于SaaS层服务,主要通过在云中部署可定制化的CRM应用,来让企业用户在初始投入很低的情况下使用CRM,并且可根据自身的流程来灵活地定制,而且用户只需接入互联网就能使用。从技术角度而言,Salesforce CRM像很多SaaS产品一样,不仅用到SaaS层的技术,而且还用到PaaS层、IaaS层和云管理层的技术。图2-3为Salesforce CRM在技术层面上大致的架构
Salesforce CRM采用的主要技术包括以下几种。
SaaS层。基于HTML、JavaScript和CSS这个黄金组合。
PaaS层。在此层,Salesforce引入了多租户内核和为支撑此内核运行而定制的应用服务器。
IaaS层。虽然在后端还是使用在企业环境中很常见的Oracle数据库,但是它为了支撑上层的多租户内核作了很多优化。
云管理层。Salesforce不仅在用户管理、计费管理、监控系统和资源管理这4个方面有不错的支持,而且在安全管理方面,它更是提供了多层保护,并支持SSL加密技术等。
2. Google App Engine
像前文介绍的那样,Google App Engine是一款PaaS服务,它主要提供一个平台来让用户在Google强大的基础设施上部署和运行应用程序,同时App Engine会根据应用所承受的负载来对应用所需的资源进行调整,并免去用户对应用和服务器等的维护工作,而且支持Java和Python这两种语言。在技术上,由于App Engine属于PaaS平台,所以关于显示层的技术选择由应用的自身需求而定,而与App Engine无关。App Engine本身的设计主要集中在PaaS层、IaaS层和云管理层。关于App Engine在技术层面上大致的架构,具体请看图2-4。
Google App Engine采用的主要技术有以下几种。
PaaS层。既有经过定制化的应用服务器,比如上面已经提到过的Jetty,也有基于Memcached的分布式缓存服务。
IaaS层。在分布式存储GFS的基础上提供了NoSQL数据库BigTable来持久化应用的数据。
云管理层。由于App Engine基于Google强大的分布式基础设施,所以它在运维管理技术方面非常出色,同时其计费管理能做到非常细粒度的API级计费,而且App Engine在监控系统和资源管理这两方面都有非常好的支持。
云的4种模式
虽然从技术或者架构角度看,云计算都是比较单一的,但是在实际情况下,为了适应用户不同的需求,它会演变为不同的模式。在NIST(National Institute of Standards and Technology,美国国家标准技术研究院)的名为“The NIST Definition of Cloud Computing”的这篇关于云计算概念的著名文档中,共定义了云的4种模式,它们分别是:公有云、私有云、混合云和行业云。接下来,将详细介绍每种模式的概念、构建方式、优势、不足之处及其对未来的展望等。
公有云
公有云是现在最主流也就是最受欢迎的云计算模式。它是一种对公众开放的云服务,能支持数目庞大的请求,而且因为规模的优势,其成本偏低。公有云由云供应商运行,为最终用户提供各种各样的IT资源。云供应商负责从应用程序、软件运行环境到物理基础设施等IT资源的安全、管理、部署和维护。在使用IT资源时,用户只需为其所使用的资源付费,无需任何前期投入,所以非常经济,而且在公有云中,用户不清楚与其共享和使用资源的还有其他哪些用户,整个平台是如何实现的,甚至无法控制实际的物理设施,所以云服务提供商能保证其所提供的资源具备安全和可靠等非功能性需求。
许多IT巨头都推出了它们自己的公有云服务,包括Amazon的AWS、微软的Windows Azure Platform、Google的Google Apps与Google App Engine等,一些过去著名的VPS和IDC厂商也推出了它们自己的公有云服务,比如Rackspace的Rackspace Cloud和国内世纪互联的CloudEx云快线等。
1. 构建方式
在构建方式方面,现在主要有3种方法。其一是独自构建:云供应商利用自身优秀的工程师团队和开源的软件资源,购买大量零部件来构建服务器、操作系统,乃至整个云计算中心。这种独自构建的好处是,能为自己的需求作最大限度的优化,但是需要一个非常专业的工程师团队,所以业界这样做的基本上只有Google一家。其二是联合构建:云供应商在构建的时候,在部分软硬件上选择商业产品,而其他方面则会选择自建。联合构建的好处是避免自己的团队涉足一些不熟悉的领域,而在自己所擅长的领域上大胆创新。这方面最明显的例子莫过于微软。在硬件方面,它并没有像Google那样选择自建,而是采购了HP和戴尔的服务器,但是在其擅长的软件方面选择了自主研发,比如采用了Windows Server 2008、IIS服务器和.NET框架。其三是购买商业解决方案。由于有一部分云供应商在建设云之前缺乏相关的技术积累,所以会稳妥地购买比较成熟的商业解决方案。这样购买商业解决方案的做法虽然很难提升云供应商自身的竞争力,但是在风险方面和前两种构建方式相比,它更稳妥。在这方面,无锡的云计算中心是一个不错的典范。由于无锡购买了IBM的Blue Cloud云计算解决方案,所以在半年左右的时间内就能向其整个高新技术园区开放公有云服务,而且在这之前,无锡基本上没有任何与云计算相关的技术储备。
2. 优势
公有云在许多方面都有其优越性,下面是其中的4个方面。
规模大。因为公有云的公开性,它能聚集来自于整个社会并且规模庞大的工作负载,从而产生巨大的规模效应。比如,能降低每个负载的运行成本或者为海量的工作负载作更多优化。
价格低廉。由于对用户而言,公有云完全是按需使用的,无需任何前期投入,所以与其他模式相比,公有云在初始成本方面有非常大
优势。而且就像上面提到的那样,随着公有云的规模不断增大,它将不仅使云供应商受益,而且也会相应地降低用户的开支。
灵活。对用户而言,公有云在容量方面几乎是无限的。就算用户所需求的量近乎疯狂,公有云也能非常快地满足。
功能全面。公有云在功能方面非常丰富。比如,支持多种主流的操作系统和成千上万个应用。
3. 不足之处
另外,公有云也有一些不足之处。
缺乏信任。虽然在安全技术方面,公有云有很好的支持,但是由于其存储数据的地方并不是在企业本地,所以企业会不可避免地担忧数据的安全性。
不支持遗留环境。由于现在公有云技术基本上都是基于x86架构的,在操作系统上普遍以Linux或者Windows为主,所以对于大多数遗留环境没有很好地支持,比如基于大型机的Cobol应用。
4. 对未来的展望
由于公有云在规模和功能等方面的优势,它会受到绝大多数用户的欢迎。从长期而言,公有云将像公共电厂那样毋庸置疑会成为云计算最主流甚至是唯一的模式,因为在规模、价格和功能等方面的潜力实在太大了。但是在短期之内,因为信任和遗留等方面的不足会降低公有云对企业的吸引力,特别是大型企业。
私有云
关于云计算,虽然人们谈论最多的莫过于以Amazon EC2和Google App Engine为代表的公有云,但是对许多大中型企业而言,因为很多限制和条款,它们在短时间内很难大规模地采用公有云技术,可是它们也期盼云所带来的便利,所以引出了私有云这一云计算模式。私有云主要为企业内部提供云服务,不对公众开放,在企业的防火墙内工作,并且企业IT人员能对其数据、安全性和服务质量进行有效地控制。与传统的企业数据中心相比,私有云可以支持动态灵活的基础设施,降低IT架构的复杂度,使各种IT资源得以整合和标准化。
在私有云界,主要有两大联盟:其一是IBM与其合作伙伴,主要推广的解决方案有IBM Blue Cloud和IBM CloudBurst;其二是由VMware、Cisco和EMC组成的VCE联盟,它们主推的是Cisco UCS和vBlock。在实际的例子方面,已经建设成功的私有云有采用IBM Blue Cloud技术的中化云计算中心和采用Cisco UCS技术的Tutor Perini云计算中心。
1. 构建方式
创建私有云的方式主要有两种。首先是独自构建,通过使用诸如Enomaly和Eucalyptus等软件将现有硬件整合成一个云。这比较适合预算少或者希望重用现有硬件的企业。其次是购买商业解决方案。通过购买Cisco的UCS和IBM的Blue Cloud等方案来一步到位,这比较适合那些有实力的企业和机构。
2. 优势
由于私有云主要在企业数据中心内部运行,并且由企业的IT团队来进行管理,所以这种模式在下面这5个方面有出色的表现。
数据安全。虽然每个公有云的供应商都对外宣称,其服务在各方面都非常安全,特别是在数据管理方面,但是对企业而言,特别是大型企业而言,和业务相关的数据是其生命线,是不能受到任何形式的威胁和侵犯的,而且需要严格地控制和监视这些数据的存储方式和位置。所以短期而言,大型企业是不会将其关键应用部署到公有云上的。而私有云在这方面是非常有优势的,因为它一般都构筑在防火墙内,企业会比较放心。
服务质量(SLA)。因为私有云一般在企业内部,而不是在某一个遥远的数据中心中,所以当公司员工访问那些基于私有云的应用时,它的服务质量应该会非常稳定,不会受到远程网络偶然发生异常的影响。
充分利用现有硬件资源。每个公司,特别是大公司,都会存在很多低利用率的硬件资源,可以通过一些私有云解决方案或者相关软件,让它们重获“新生”。
支持定制和遗留应用。现有公有云所支持应用的范围都偏主流,偏x86,对一些定制化程度高的应用和遗留应用就很有可能束手无策,但是这些往往都属于一个企业最核心的应用,比如大型机、Unix等平台的应用。在这个时刻,私有云可以说是一个不错的选择。
不影响现有IT管理的流程。对大型企业而言,流程是其管理的核心,如果没有完善的流程,企业将会成为一盘散沙。实际情况是,不仅企业内部和业务有关的流程非常多,而且IT部门的自身流程也不少,而且大多都不可或缺,比如那些和Sarbanes-Oxley相关的流程。在这方面,私有云的适应性比公有云好很多,因为IT部门能完全控制私有云,这样他们有能力使私有云比公有云更好地与现有流程进行整合。
3. 不足之处
另外,私有云也有其不足之处,主要是成本开支高。因为建立私用云需要很高的初始成本,特别是如果需要购买大厂家的解决方案时更是如此;其次,由于需要在企业内部维护一只专业的云计算团队,所以其持续运营成本也同样偏高。
4. 对未来的展望
在将来很长一段时间内,私有云将成为大中型企业最认可的云模式,而且将极大地增强企业内部的IT能力,并使整个IT服务围绕着业务展开,从而更好地为业务服务。
混合云
混合云虽然不如前面的公有云和私有云常用,但已经有类似的产品和服务出现。顾名思义,混合云是把公有云和私有云结合到一起的方式,即它是让用户在私有云的私密性和公有云灵活的低廉之间做一定权衡的模式。比如,企业可以将非关键的应用部署到公有云上来降低成本,而将安全性要求很高、非常关键的核心应用部署到完全私密的私有云上。
现在混合云的例子非常少,最相关的就是Amazon VPC(Virtual Private Cloud,虚拟私有云)和VMware vCloud了。比如,通过Amazon VPC服务能将Amazon EC2的部分计算能力接入到企业的防火墙内。
1. 构建方式
混合云的构建方式有两种。其一是外包企业的数据中心。企业搭建了一个数据中心,但具体维护和管理工作都外包给专业的云供应商,或者邀请专业的云供应商直接在厂区内搭建专供本企业使用的云计算中心,并在建成之后,负责今后的维护工作。其二是购买私有云服务。通过购买Amazon等云供应商的私有云服务,能将一些公有云纳入到企业的防火墙内,并且在这些计算资源和其他公有云资源之间进行隔离,同时获得极大的控制权,也免去了维护之苦。
2. 优势
通过使用混合云,企业可以享受接近私有云的私密性和接近公有云的成本,并且能快速接入大量位于公有云的计算能力,以备不时之需。
3. 不足之处
现在可供选择的混合云产品较少,而且在私密性方面不如私有云好,在成本方面也不如公有云低,并且操作起来较复杂。
4. 对未来的展望
混合云比较适合那些想尝云计算的企业和面对突发流量但不愿将企业IT业务都迁移至公有云的企业。虽然混合云不是长久之计,但是它应该也会有一定的市场空间,并且也将会有一些厂商推出类似的产品。
行业云
行业云虽然较少提及,但是有一定的潜力,主要指的是专门为某个行业的业务设计的云,并且开放给多个同属于这个行业的企业。
虽然行业云现在还没有一个成熟的例子,但盛大的开放平台颇具行业云的潜质,因为它能将其整个云平台共享给多个小型游戏开发团队,这样这些小型团队只需负责游戏的创意和开发即可,其他和游戏相关的烦琐的运维可转交给盛大的开放平台来负责。
1. 构建方式
在构建方式方面,行业云主要有两种方式。其一是独自构建:某个行业的领导企业自主创建一个行业云,并与其他同行业的公司分享。其二是联合构建:多个同类型的企业可以联合建设和共享一个云计算中心,或者邀请外部的供应商来参于其中。
2. 优势
能为行业的业务作专门的优化。和其他的云计算模式相比,这不仅能进一步方便用户,而且能进一步降低成本。
3. 不足之处
缺点是支持的范围较小,只支持某个行业,同时建设成本较高。
4. 对未来的展望
行业云非常适合那些业务需求比较相似,而且对成本非常关注的行业。虽然现在还没有非常好的示例,但是对部分行业应该存在一定的吸引力,比如上面提到的游戏业。
本章主要在技术层面(特别是在云计算的架构方面)对云计算进行了详细描述,并且介绍了SaaS、PaaS和IaaS这3个云服务层,以及作为云计算中心“大脑”的云管理层,同时也讨论了公有云、私有云、混合云和行业云这4种主要的云计算模式。下面将进入本书第二部分。在第二部分中,将深入剖析多个顶尖云计算产品的实现和架构,还会详细介绍系统虚拟化和云计算安全这两个非常重要的技术。