云计算架构
http://www.cnblogs.com/isoftware/p/3751272.html
一、云计算概述
云计算到底是什么呢?在这个问题上,可谓众说纷纭。比如,在维基百科上的定义是“云计算是一种基于互联网的计算新方式,通过互联网上异构、自治的服务为个人和企业用户提供按需即取的计算”;著名咨询机构 Gartner 将云计算定义为“云计算是利用互联网技术来将庞大且可伸缩的IT能力集合起来作为服务提供给多个客户的技术”;而 IBM 则认为“云计算是一种新兴的IT服务交付方式,应用、数据和计算资源能够通过网络作为标准服务在灵活的价格下快速地提供最终用户”。 虽然这几个定义都有一定的道理,但在我看来还没抓住云计算的核心,在我眼中, 云计算应该有如图 1-1 ,云计算是新一代IT模式,它能在后端庞大的云计算中心的支撑下能为用户提供更方便的体验和更低廉的成本。
具体而言,由于在后端有规模庞大、非常自动化和高可靠性的云计算中心的存在,人们只要接入互联网,就能非常方便地访问各种基于云的应用和信息, 并免去了 安装和维护等繁琐操作,同时,企业和个人也能以低廉的价格来使用这些由云计算中心提供的服务或者在云中直接搭建其所需的信息服务。在收费模式上,云计算和 水电等公用事业非常类似,用户只需为其所使用的部分付费。对云计算的使用者(主要是个人用户和企业)来讲,云计算将会在用户体验和成本这两方面给他们带来 很多非常实在的好处。
1、云计算的特点
(1)超大规模:大多数云计算中心都具有相当的规模,比如, Google云计算中心已经拥有几百万台服务器, 而Amazon 、IBM 、微软、Yahoo等企业所掌控的云计算规模也毫不逊色,并且云计算中心能通过整合和管理这些数目庞大的计算机集群来赋予用户前所未有的计算和存储能力。 (2)抽象化:云计算支持用户在任意位置、使用各种终端获取应用服务,所请求的资源都来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置,这样能有效地简化了应用的使用。 (3)高可靠性:在这方面,云计算中心在软硬件层面采用了诸如数据多副本容错、心跳检测和计算节点同构可互换等措施来保障服务的高可靠性,还在设施层面上的能源、制冷和网络连接等方面采用了冗余设计来进一步确保服务的可靠性。 (4)通用性:云计算中心很少为特定的应用存在,但其有效支持业界大多数的主流应用,并且一个“云”可以支撑多个不同类型应用的同时运行,并保证这些服务的运行质量。 (5)高可扩展性:用户所使用“云”的资源可以根据其应用的需要进行调整和动态伸缩,并且再加上前面所提到的云计算中心本身的超大规模,使得“云”能有效地满足应用和用户大规模增长的需要。 (6)按需服务:“云”是一个庞大的资源池,用户可以按需购买,就象自来水、电和煤气等公用事业那样根据用户的使用量计费,并无需任何软硬件和设施等方面的前期投入。 (7)廉价:首先,由于云计算中心本身巨大规模所带来的经济性和资源利用率的提升,其次,“云”大都采用廉价和通用的 X86 节点来构建,因此用户可以充分享受云计算所带来的低成本优势,经常只要花费几百美元就能完成以前需要数万美元才能完成的任务。 (8)自动化:云中不论是应用、服务和资源的部署,还是软硬件的管理,都主要通过自动化的方式来执行和管理,从而极大地降低整个云计算中心庞大的人力成本。 (9)节能环保:云计算技术能将许许多多分散在低利用率服务器上的工作负载整合到云中,来提升资源的使用效率,而且云由专业管理团队运维,所以其PUE(Power Usage Effectiveness ,电源使用效率值)值和普通企业的数据中心相比出色很多,比如, Google数据中心的PUE值在 1.2 左右,也就是说,每一块钱的电力花在计算资源上,只需再花两角钱电力在制冷等设备,而常见的PUE在2和3之间,并且还能将云建设在水电厂等洁净资源旁边,这样既能进一步节省能源方面开支,又能保护了环境。 (10)完善的运维机制:在“云”的另一端,有全世界最专业的团队来帮用户管理信息,有全世界最先进的数据中心来帮用户保存数据。同时,严格的权限管理策略可以保证这些数据的安全。这样,用户无需花费重金就可以享受到最专业的服务。 由于这些特点的存在,使得云计算能为用户提供更方便的体验和更低廉的成本,同时这些特点也是为什么云计算能脱颖而出,并且能被大多数业界人员所推崇的原因之一。
2、云计算的影响
虽然云计算最初只是由IBM和Google这两家公司所主导的,但是就像图1-4所示那样云计算将会对整个IT产业带来非常深远的影响,其中包括服务器供应商、软件开发商和云终端供应商这三个云计算建设者和作为云计算运维者的云供应商。
(1)服务器供应商的角度 这类型的公司主要包括IBM、HP、Dell和Cisco等。主要有两个方面的变化:其一,是需求方面的变化,虽然中小企业会不断地加大对IT技术使用,但由于它们将会把云服务作为首选,所以对服务器供应商而言,来自中小企业的订单将会不断的减少,但来自云供应商的订单则会大量的增加;其二,是 产品方面的变化,由于大型云计算中心,对硬件有自己一套的设计和想法,所以会希望服务器供应商能生产为它们定制的硬件,这导致服务器供应商他们整体产品的方向将会从原先的以生产通用的x86服务器为主,转变为通用和定制兼顾,而且为云计算做优化的解决方案将受到极大欢迎。虽然云计算将会对部分非常依赖中小企业的硬件厂商带来非常不利的影响, 但是从长期而言,对那些不断创新,并且提出非常优秀的云计算解决方案的硬件厂商,将会脱颖而出,并从云计算大潮中获利丰厚。
(2)软件开发商的角度 最典型的公司有微软、Red Hat 、Oracle和VMware等。主要有三方面的变化:首先,在软件交付方式上的变化,由于虚拟器件(Virtual Appliance)等软件发布格式的引入,使得不仅软件的开发,维护和销售等方面的成本和复杂度得到了降低,而且也加快了软件部署的速度;其次,在软件销售和发布方式上的 变化,由于各种基于云的软件发布平台(比如苹果的App Store 、中国移动的Mobile Market和VMware Virtual Appliance Marketplace等)的出现,使得发布、推广和销售软件越来越简单,而且成本更低。比如,和传统软件发布前期需要大量资金支持不同的是,在苹果的App Store上发布软件的成本基本为零,而且能直面超过5000万iOS系统(包括iPhone 、iPod Touch和iPad)的使用者,同时这些用户的消费能力也是非常强大的;最后,在技术上的变化,软件将与云技术进行深度地整合,比如,应用类的软件,基本上都将选择Web作为其首选的界面,而中间件和底层的系统软件将会为运行在云中做更多的优化。
(3)云终端供应商的角度 这方面的公司有Apple、Nokia、三星和联想等。由于移动设备的轻便型,再加上性能的日渐提高和能方便地接入多种无线网络(比如 WIFI 和 3G 等),所以市场对移动设备需求将与日俱增,而且将来云终端将不会仅是手机、平板和笔记本这几种移动设备,而将会涉及社会的方方面面,比如电视和汽车等,所以在这方面会有非常大创新空间等待着这些公司。
(4)云供应商的角度 相关的公司有国外的Amazon、Google和RackSpace等,国内的有中国移动和中国电信等。随着云计算不断推广和被大众所接受,使得云计算中心在运营的规模上会不断地增大, 这将会给云供应商带来很多机会来降低其运营成本,并提升经营利润,比如,将云计算中心建设在能源成本底的地方(比如电厂附近)或者建在制冷成本低的地方(比如天气寒冷的地点)。而且由于运行的工作负载的规模非常庞大,将整体提高服务器利用率。同时云的业务都属于非常稳定的,所以能给云供应商带来持久的现金流。
(5)整个IT产业的角度 不可否认,在短期内,由于产业结构的变化,云计算有可能将会给整个IT产业带来一定程度的阵痛,但是从长期而言,云计算将会对整个IT产业带来非常正面的影响,因为云计算将推动整个产业的进一步的优化布局和专业分工,并且提供一个让所有IT人不断地创新的舞台,最终,这些参与者会像之前大型机时代和PC时代那样同心协力创造出一整套属于云计算的产业链。
3、云计算的应用
有些 IT 从业人员在谈到云计算的时候,总是认为云计算只是广告词而已,实际的用处是非常有限。对于这种看法,我不以为然,因为不仅云计算的部分技术已经落地,而且云计算将在 IT 产业各个方面都有其用武之地,在这里,选择十个比较典型的应用场景来加以介绍。 (1)IDC云 传统IDC(Internet Data Center,互联网数据中心)的服务已经无法满足用户的需求,用户期望更强大、更方便和更灵活的IDC服务。IDC云是在IDC原有数据中心的基础上,加入更多云的基因,比如系统虚拟化技术、自动化管理技术和智慧的能源监控技术等。通过IDC的云平台,用户能够使用到虚拟机和存储等资源。还有,IDC可通过引入新的云技术来提供许多新的具有一定附加值的服务,比如,PaaS等。现在已成型的IDC云有Linode和Rackspace等。 (2)企业云 对任何大中型企业而言, 80%的IT资源都用于维护现有应用的,而不是让IT更好地为业务服务。使用专业的企业云解决方案来提升企业内部数据中心的自动化管理程度,将整个 IT 服务的思维从过去的软硬件思维转变为以提供服务为主,使得IT人员能分出精力来为业务创新,成为半个业务人员。企业云对于那些需要提升内部数据中心的运维水平和希望能使整个IT服务更围绕业务展开的大中型企业非常适合。相关的产品和解决方案有IBM的WebSphere CloudBurst Appliance、Cisco的UCS和VMware的vSphere等。企业自己使用的云也称为私有云,位于公司防火墙之内,由组织自己管理。它们是在企业内部创建和控制的云服务。私有云具有许多与公有云相同的优点,主要差异在于您的组织负责创建和维护云。公有云是供一般公众或大型行业组织使用的云,由销售云服务的组织拥有和供应。公有云被看作一般意义上的云;也就是说,离站的第三方提供商使用web应用程序通过Internet动态地供应资源,它们提供共享的资源并按使用量收费。 (3)云存储系统 由于数据是企业的非常重要的资产和财富,所以需要对数据进行有效的存储和管理,而且普通的个人用户也需要大量的存储空间用于保存大量的个人数据和资料,但由于本地存储在管理方面缺失,使得数据的丢失率非常高。而云存储系统能解决上面提到这些问题,它是通过整合网络中多种存储设备来对外提供云存储服务,并能管理数据的存储、备份、复制和存档,还有,良好的用户界面和强大的API支持也是不可或缺的。云存储系统非常适合那些需要管理和存储海量数据的企业,比如互联网企业,电信公司等,还有广大的网民。相关的产品有中国电信的E云、 Amazon的S3云存储服务、 Google的Picasa相册和微软的SkyDrive网络硬盘等。
(4)虚拟桌面云 对许多企业而言,桌面系统的安装、配置和维护都是其IT运营非常重要的一个方面,桌面系统的分散管理将给整个IT部门带来沉重的压力,而且相关的数据和信息安全不能受到有效地监控,同时企业更希望能将降低终端桌面系统的整体成本,并且使用起来更稳定和灵活。虚拟桌面云是这方面一个非常不错的解决方案,其是利用了现在成熟的桌面虚拟化技术。桌面虚拟化技术是将用户的桌面环境与其使用的终端进行解耦,在服务器端以虚拟镜像的形式统一存放和运行每个用户的桌面环境,而用户则可通过小型的终端设备来访问其桌面环境。另外,系统管理员可以统一地管理用户在服务器端的桌面环境, 比如安装、升级和配置相应地软件等。这个解决方案比较适合那些需要使用大量桌面系统的企业。相关的产品有Citrix的Xen Desktop和VMware的VMware view。
(5)开发测试云 开发测试总是繁琐、易错和耗时的过程,特别是在准备测试环境上面,还有会遇到诸如测试资源管理混乱,难于重现问题发生的环境和缺乏压力测试所需要的强大计算能力等棘手问题。而开发测试云能有效解决上面这些问题,其通过友好的Web界面,可以预约、部署、管理和回收整个开发测试的环境,通过预先配置好(包括操作系统,中间件和开发测试软件)的虚拟镜像来快速地构建一个个异构的开发测试环境,通过快速备份/恢复等虚拟化技术来重现问题,并利用云的强大的计算能力来对应用进行压力测试,比较适合那些需要开发和测试多种应用的组织和企业,比如银行、电信和政府等。相关解决方案有IBM Smart Business Development and Test Cloud 。 (6)大规模数据处理云 企业需要分析大量的数据来洞察业务发展的趋势,可能的商业机会和存在的问题,从而做出更好、更快和更全面的决策。还有,物联网会采集海量需要处理的数据。大规模数据处理云通过将数据处理软件和服务运行在云计算平台上,能利用云平台的计算能力和存储能力来对海量的数据进行大规模的处理,除了上面提到的物联网之外,还有许多企业和机构都会有这方面的需求。相关产品有Apache的Hadoop等。 (7)协作云 电子邮件、IM(Instant Messaging,即时通讯)、SNS (Social Networking Services ,社交网络服务)和通信工具(比如Skype和WebEx)等都是很多企业和个人必备的协作工具,但是维护这些软件和其硬件却是一件让人非常头疼的工作。协作云是云供应商在IDC云的基础上或者直接构建一个专属的云,并在这个云搭建整套的协作软件,并将这些软件共享给用户,非常适合那些需要一定的协作工具,但不希望维护相关的软硬件和支付高昂的软件许可证费用的企业与个人。这方面,最具代表性的产品莫过于IBM的 LotusLive ,它主要包括会议、办公协作和电子邮件这三大服务。当然Google Apps也是不容忽视的,其中Gmail和Gtalk都是协作的利器。 (8)游戏云 由于传统游戏软件容量都非常巨大,无论是单机,还是网游,都需要在游戏之前,花很多时间在下载和安装上,使玩家无法很尽兴地玩游戏,再加上游戏的购置成本偏高,使得玩家在尝试新游戏方面,兴趣骤降。在这方面,业界部分公司推出了游戏云的解决方案,主要有两大类:其一是使用更多基于Web的游戏模式,比如使用JavaScript 、Flash 和Silverlight等技术,并将这些游戏部署到云中,这种解决方案比较适合休闲游戏;其二是为大容量和高画质的专业游戏设计的,整个游戏都将在运行云中,但会将最新生成的画面传至客户端。总之,休闲玩家和专业玩家都会在游戏云找到自己的所爱。在产品方面:第一种游戏云,已经有很多游戏都采用这种方案,比如许多Facebook上的休闲游戏采用了后端云和前端Flash这样的组合;而第二种游戏云,AMD已经发布了类似的技术,但碍于现有的网络环境,所以短时间内不会有特别成熟技术出现。 (9)HPC云 在科学方面HPC(High Performance Computing,高性能计算)领域,现在主要有两方面挑战:其一是供需不平衡,要么是现有的HPC资源太过稀少,无法满足大众的需求,要么就是贫富不均,导致HPC资源无法被合理的分配;其二是现有的HPC设计和需求不符,虽然HPC已经发展了很多年,但是在设计还是将所有的计算资源整合在一起以追求极致速度为主,但是现在的主流需求则常以只需要一小块计算资源为主,这导致HPC计算资源被极大地浪费,所以新一代的高性能计算中心不仅仅需要提供传统的高性能计算,而且还需要增加资源的管理、用户的管理、虚拟化的管理、动态的资源产生和回收等等。这时,基于云计算的高性能计算应运而生,也就是HPC云,其能够为用户提供可以完全定制的高性能计算环境,用户可以根据自己的需求来改变计算环境的操作系统、软件版本和节点规模,从而避免与其他用户的冲突, 并可以成为网格计算的支撑平台,以提升计算的灵活性和便捷性。HPC云特别适合需要使用高性能计算,但缺乏巨资投入的普通企业和学校。北京工业大学已经和IBM合作建设国内第一个HPC云计算中心。 (10)云杀毒 新型病毒的不断涌现,使得杀毒软件的病毒特征库的大小与日俱增,如果在安装杀毒软件的时候,附带安装庞大的病毒特征库的话,将会影响用户的体验,而且杀毒软件本身的运行也会极大地消耗系统的资源。通过云杀毒技术,杀毒软件可以将有嫌疑的数据上传到云中,并通过云中庞大的特征库和强大的处理能力来分析这个数据是否含有病毒,这非常适合那些需要使用杀毒软件来捍卫其电脑安全的用户。现有的杀毒软件都支持一定的云杀毒这个特性,比如360杀毒和金山毒霸等。
二、云计算的架构
在对云计算进行了三年多的研究之后,觉得虽然云计算涉及了很多产品与技术,表面上看起来的确有点纷繁复杂,但是云计算本身还是有迹可循和有理可依的,所以在个人理解的基础上,我总结出了一套云计算的架构,具体请看图 2-1 。
上面这个云架构共分为服务和管理这两大部分。
在服务方面,主要以提供用户基于云的各种服务为主,共包含三个层次:其一是Software as a Service软件即服务,简称SaaS,这层的作用是将应用主要以基于Web的方式提供给客户;其二是Platform as a Service平台即服务,简称PaaS,这层的作用是将一个应用的开发和部署平台作为服务提供给用户;其三是Infrastructure as a Service基础架构即服务,简称IaaS,这层的作用是将各种底层的计算(比如虚拟机)和存储等资源作为服务提供给用户。从用户角度而言,这三层服务,它们之间关系是独立的,因为它们提供的服务是完全不同的,而且面对的用户也不尽相同。但从技术角度而言,云服务这三层之间的关系并不是独立的,而是有一定依赖关系的,比如一个SaaS层的产品和服务不仅需要使用到SaaS层本身的技术,而且还依赖PaaS层所提供的开发和部署平台或者直接部署于IaaS层所提供的计算资源上,还有,PaaS层的产品和服务也很有可能构建于IaaS层服务之上。 在管理方面,主要以云的管理层为主,它的功能是确保整个云计算中心能够安全和稳定的运行,并且能够被有效地管理。
1、软件即服务SaaS
软件即服务(SaaS)为商用软件提供基于网络的访问。您有可能已经使用过SaaS,即使您当时并不知道。SaaS的示例太多了,例如Netflix、Photoshop.com、Acrobat.com、Intuit QuickBooks Online、Gmail、Google Docs、Office Web Apps、Zoho、WebQQ、新浪微盘等等。可能不太明显的SaaS实现包括移动应用程序市场中的相当一部分。
SaaS为企业提供一种降低软件使用成本的方法 — 按需使用软件而不是为每台计算机购买许可证。尤其是考虑到大多数计算机在差不多70%的时间是空闲的,SaaS可能非常有效。企业不必为单一用户购买多个许可证,而是让许可证的使用时间尽可能接近100%,从而尽可能节省成本。
1.1 SaaS的优势
SaaS 给软件厂商提供了新的机会。尤其是,SaaS软件厂商可以通过四个因素提高 ROI(投资回报):提高部署的速度、增加用户接受率、减少支持的需要、降低实现和升级的成本。 (1)提高部署的速度 在过去,部署传统的桌面应用程序需要很大的工作量。实际上,我曾经多次听到桌面应用程序开发人员把更新他们的应用程序称为 “部署噩梦”。正如Tariq Ahmed在Flex 4 in Action (Manning Press) 的第1章中指出的,“要想让数千甚至数万客户机同时运行软件的某一版本,后勤方面的复杂性是非常高的。” Ahmed说,复杂性这么高,以致于大多数桌面软件开发公司甚至认为这根本不合理或不可行。过去受到这个问题困扰的开发商应该考虑部署软件的SaaS版本。但是,妨碍传统软件开发公司进入SaaS市场的最大障碍是让桌面应用程序能够作为SaaS应用程序运行。在许多情况下,这需要在某种程度上重新编写软件,一些公司觉得这么做成本太高。 这正是向云计算转移的过程比较缓慢且平缓的主要原因之一。在大多数情况下,符合逻辑的解决方案是分阶段地把软件转移到云中,首先以SaaS的形式提供原应用程序的高度简化的版本。考虑到开发商对版本控制的控制水平,这么做是很合理的。在这里,分析一下SaaS的特点会很有帮助。 您可以看出在云计算与过去的 “LAN 计算” 之间有许多相似之处。典型的LAN架构由站内的许多工作站组成,它们常常被称为哑终端,它们通过连接强大的大型机(常常由IBM 提供)运行应用程序。这种计算类型过去非常适合企业,因 IT部门能够完全控制版本,可以非常方便地多次部署更新。同样,过去妨碍桌面软件应用程序开发商进行版本控制的后勤障碍在云中也不存在,因为软件在开发公司能够直接访问的基础设施上运行。 考虑到SaaS必须能够服务的客户机数量,SaaS基础设施的规模要比LAN大得多。但是底层的概念是相同的。大型机能够驻留足够多的软件实例,从而为本地网络中连接它的所有客户机提供服务;而云由许多不同的计算机资源组成,它们共同提供计算能力,从而运行为世界各地的客户机提供服务所需的许多软件实例。
(2)增加接受率 如果您走出企业,看看SaaS对于一般消费者的意义,就会发现以前一些软件的许可证费用太高,而现在SaaS让一般消费者能够以合理的价格使用它们。一个好例子是 Adobe 以SaaS的形式提供Adobe Photoshop。尽管这项工作是Adobe正在做的试验,但是已经取得了一些效果。例如,我注意到在需要执行简单的照片编辑任务时,在我的朋友和家庭成员中越来越多的人开始使用Photoshop.com进行基本的照片编辑,而不是启动全功能的版本。出现这种趋势的原因是,不需要完整版本中的功能的人现在可以省钱。与此同时,过去不使用Photoshop的人也开始使用Photoshop.com了,这给Adobe带来了争取新的长期客户的机会,扩大了潜在客户的范围。 SaaS提供的多种业务模型尤其有吸引力。例如,Intuit 以SaaS的形式提供QuickBooks Online,按月收取服务费。作为经常旅行的企业主,我发现这种服务非常有用,尤其是因为我的业务伙伴住在400英里外的另一个州里。同时,Adobe在Photoshop.com和Acrobat.com中应用了SaaS,以freemium服务的形式提供软件 — freemium服务是指一种基于许可证软件产品的SaaS缩略版的业务模型。 freemium SaaS基于的收入模型是,预计免费用户中的一部分最终会觉得软件很有用,他们会升级到启用了更多特性的SaaS付费版本,或者购买包含所有特性和功能的桌面版本的许可证。这种方法往往比通过 “受限制的演示” 模式试用软件更好,因为演示模式要求用户在桌面计算机上安装他们可能不会购买的应用程序。另外,如果免费用户中升级的比例低于预期,还可以通过广告进一步补充这个模型。随着云计算的发展,传统的桌面软件厂商经常使用这种方法适应市场的变化。 (3)减少支持的需要 大型客户服务中心的成本很高,不得不支持多种平台会导致支持问题增加,而SaaS可以大大缓解这些难题。首先,部署的简便性让开发人员能够在发现bug之后很快进行修复,这意味着大多数bug可以在大量用户遇到它们之前被修复,这会减少客户支持部门接到的电话数量,提高客户满意度,降低客户流失的可能性。 另外,传统桌面软件应用程序的开发商常常必须支持多种平台。例如,开发商可能必须支持Windows 7和Apple Mac OS X 10.6操作系统,添加对第二种操作系统的支持差不多会让开发成本加倍;而且,如果支持这些操作系统的许多不同版本,问题会更多。支持操作系统的多个版本还会产生限制。 例如,如果您要构建一个在Windows 7上运行的程序,但是它必须与Windows XP兼容,就必须非常小心,要确保特性和功能在这两个版本上都能够运行;否则,就必须把项目分为两个分支,为每个版本开发单独的代码,这会不可避免地降低生产力和效率,延长完成项目的预期时间。让业务执行官心跳加速的最快方法之一是,告诉他后两年的预期开发进度要减慢一半儿。另外,支持不同的操作系统和这些操作系统的不同版本会增加预算;这个问题和其他因素导致目前软件开发项目的失败率非常高。 (4)降低实现和升级的成本 SaaS推动ROI的第四个因素与第一个因素有点儿相似。但是,部署的速度是指快速、简便地部署应用程序更新所带来的好处。与之相反,降低实现和升级的成本是指开发公司由于能够控制版本和运行软件的基础设施所获得的经济利益。 因为开发商可以控制运行软件的平台(平台通常对于用户完全透明),所以他们不必负担在多个平台上测试和部署bug补丁和新特性的额外开销,这会节省大量资金。这让SaaS应用程序的升级成本更低。节省的大量时间和资金让开发商有机会更好地响应客户的请求并增强易用性,从而提高客户满意度,降低客户流失的可能性,这会带来间接的经济利益。
1.2 SaaS的用户体验设计
SaaS 应用程序代表着一种新一代应用程序设计方式。尽管在我目前看到的文档中没有明确地指出,但是看起来SaaS程序也带来了一种新的UI设计方式,这种方式与大多数其他行业中的产品设计流程更一致。这种方式包含一个称为用户体验设计 (UXD) 的流程,在这个流程中由产品团队而不是开发团队设计GUI。 UXD的主要目的是,确定哪些特性会让应用程序对于目标客户最有价值,并在设计中融入这些知识。尽管对于是否应该在所有类型的软件的开发中都执行这个流程有争议,但是在SaaS应用程序开发中这种做法非常普遍。出现这种现象的原因可能是,SaaS可以实现的业务模型与传统软件不同,需要执行UXD;而且通过开发SaaS可以节省大量时间和资金,让开发商有能力执行UXD。
1.3 SaaS使用的技术
由于SaaS层离普通用户非常接近,所以在SaaS层所使用到的技术,大多耳熟能详,下面是其中最主要的五种: (1)HTML :标准的Web页面技术,现在主要以HTML4为主,但是即将推出的HTML5会在很多方面推动Web页面的发展,比如视频和本地存储等方面。 (2)JavaScript :一种用于Web页面的动态语言,通过JavaScript ,能够极大地丰富Web页面的功能,最流行的JS框架有jQuery和Prototype 。 (3)CSS :主要用于控制Web页面的外观,而且能使页面的内容与其表现形式之间进行优雅地分离。 (4)Flash :业界最常用的RIA(Rich Internet Applications)技术,能够在现阶段提供HTML等技术所无法提供的基于Web的富应用,而且在用户体验方面,非常不错。 (5)Silverlight :来自业界巨擎微软的RIA技术,虽然其现在市场占有率稍逊于Flash,但由于其可以使用C#来进行编程,所以对开发者非常友好。 在SaaS层的技术选型上,首先,由于通用性和较低的学习成本,大多数云计算产品都会比较倾向HTML 、JavaScript和CSS这对黄金组合,但是在HTML5被大家广泛接受之前,RIA技术在用户体验方面,还是具有一定的优势,所以Flash和Silverlight也将会有一定的用武之地,比如VMware vCloud就采用了基于Flash的Flex技术,而微软的云计算产品肯定会在今后大量使用Silverlight技术。
2、平台即服务PaaS
平台即服务(Platform as a Service,PaaS)提供对操作系统和相关服务的访问。它让用户能够使用提供商支持的编程语言和工具把应用程序部署到云中。用户不必管理或控制底层基础架构,而是控制部署的应用程序并在一定程度上控制应用程序驻留环境的配置。PaaS的提供者包括Google App Engine、Windows Azure、Force.com、Heroku等。小企业软件工作室是非常适合使用PaaS的企业。通过使用云平台,可以创建世界级的产品,而不需要负担内部生产的开销。
通过PaaS这种模式,用户可以在一个提供SDK(Software Development Kit,即软件开发工具包)、文档、测试环境和部署环境等在内的开发平台上非常方便地编写和部署应用,而且不论是在部署,还是在运行的时候,用户都无需为服务器、 操作系统、网络和存储等资源的运维而操心,这些繁琐的工作都由PaaS云供应商负责。而且PaaS在整合率上面非常惊人,比如一台运行Google App Engine的服务器能够支撑成千上万的应用,也就是说, PaaS是非常经济的。 PaaS主要面对的用户是开发人员。
2.1 PaaS的优势
在软件开发过程中,一些东西常常会出问题。以我的经验,设置服务器环境以驻留开发团队要构建的Web应用程序可能会带来许多争吵。即使在最大的企业中,通常一位网络管理员要负责为几个开发团队服务。在不使用PaaS的情况下,设置开发或测试环境通常需要完成以下任务: * 获取并部署服务器。 * 安装操作系统、运行时环境、源代码控制存储库和必需的所有其他中间件。 * 配置操作系统、运行时环境、存储库和其他中间件。 * 转移或复制现有的代码。
* 测试并运行代码以确保一切正常。 在很多情况下,管理员已经非常忙了,所以让他们抽出时间部署新环境会很困难。对于客户机和服务器端的web应用程序开发人员来说,另一个主要问题是在本地复制运行时环境以便执行测试。 现在,想像一下您是使用PaaS的开发团队的成员。在这种情况下,您会有一个虚拟机 (VM),其中包含完整的服务器环境,可以把它放在USB闪存驱动器中带在身边。这无疑是非常方便的。一般来说,和现有的基于本地的开发和部署环境相比,PaaS平台主要有下面这六方面有非常大的优势: (1)友好的开发环境:通过提供SDK和IDE(Integrated Development Environment ,集成开发环境)等工具来让用户不仅能在本地方便地进行应用的开发和测试,而且能进行远程部署。 (2)丰富的服务:PaaS平台会以API的形式将各种各样的服务提供给上层的应用。 (3)精细的管理和监控:PaaS能够提供应用层的管理和监控,比如能够观察应用运行的情况和具体数值(比如吞吐量Throughput和响应时间Response Time等)来更好地衡量应用的运行状态,还有能够通过精确计量应用使用所消耗的资源来更好地计费。 (4)伸缩性强: PaaS 平台会自动调整资源来帮助运行于其上的应用更好地应对突发流量。 (5) 多租户(Multi-Tenant)机制:许多PaaS平台都自带多租户机制,不仅能更经济地支撑庞大的用户规模,而且能提供一定的可定制性以满足用户的特殊需求。 (6)整合率和经济性:PaaS平台整合率是非常高,比如PaaS的代表Google App Engine能在一台服务器上承载成千上万的应用。
2.2 PaaS的主要成分
了解 PaaS 的最好方法可能是把它分解为主要组件:平台和服务。现在,考虑提供的服务,这称为解决方案堆。也就是说,PaaS 的两个主要成分是计算平台和解决方案堆。 为了说明这两个 “成分”,我们进一步研究一下它们的定义。按照最简单的形式,计算平台是指一个可以一致地启动软件的地方(只要代码满足平台的标准)。平台的常见示例包括 Windows、Apple Mac OS X和Linux操作系统;用于移动计算的Google Android、Windows Mobile和Apple iOS;以及作为软件框架的Adobe AIR和Microsoft .NET Framework。要记住的重点是,计算平台不是指软件本身,而是指构建并运行软件的平台。图4提供一张示意图以帮助理解这种关系。
既然理解了计算平台的概念,现在就来看看什么是解决方案堆。解决方案堆由应用程序组成,这些应用程序有助于开发过程和应用程序部署。这些应用程序是指操作系统、运行时环境、源代码控制存储库和必需的所有其他中间件。
2.3 PaaS供应商的选择
解决方案堆也反映不同PaaS公司的差异,在决定采用PaaS之前,需要深入考察各个提供商提供的解决方案堆。在与某家PaaS提供商签约之前,您应该问几个基本问题: * 它支持哪些框架和语言?理想情况下,PaaS应该支持基于此平台选用的语言的任何框架。 * 可以创建多少个应用程序?大多数PaaS提供商会根据您签订的计划或服务包限制可以构建的应用程序数量。要确保提供商提供的计划或服务包能够满足您的需要。 * 允许哪些内容类型?支持PaaS的基础设施通常涉及多租用者计算的概念,也就是说许多 “租用者” 分享单一服务器上的 “空间”,这些空间由系统管理程序管理的VM实例分隔。PaaS提供商可能会对要驻留的应用程序和内容的类型加以限制。 * 支持哪些数据库类型?如果您的数据要随应用程序转移,这个问题就是非常重要的。必须确保提供商提供的数据库与您想要用来导入数据的格式兼容。 * 它是否支持SSL (HTTPS)?这个问题对于确保安全性非常重要。如果您打算通过应用程序处理事务,但是发现不支持SSL,您就遇到大麻烦了。 在比较PaaS提供商时应该考虑的特性:应用程序开发框架、容易使用、业务流程建模(BPM)工具、可用性、可伸缩性、安全性、包容性、可移植性、移植工具、API等。
2.4 PaaS使用的技术
PaaS 层的技术比较多样性,下面是常见的五种:
(1)REST :通过 REST(Representational State Transfer,表述性状态转移)技术,能够非常方便和优雅地将中间件层所支撑的部分服务提供给调用者。 (2)多租户:就是能让一个单独的应用实例可以为多个组织服务,而且能保持良好的隔离性和安全性,并且通过这种技术,能有效地降低应用的购置和维护成本。 (3)并行处理:为了处理海量的数据,需要利用庞大的x86集群进行规模巨大的并行处理,Google的MapReduce是这方面的代表之作。 (4)应用服务器:在原有的应用服务器的基础上为云计算做了一定程度的优化,比如用于Google App Engine的Jetty应用服务器。
(5)分布式缓存:通过分布式缓存技术,不仅能有效地降低对后台服务器的压力,而且还能加快相应的反应速度,最著名的分布式缓存例子莫过于Memcached 。 对于很多PaaS平台,比如用于部署Ruby应用的Heroku云平台,应用服务器和分布式缓存都是必备的,同时REST技术也常用于对外的接口,多租户技术则主要用于SaaS应用的后台,比如用于支撑Salesforce 的CRM等应用的Force.com多租户内核,而并行处理技术常被作为单独的服务推出,比如Amazon的Elastic MapReduce 。
2.5 主要的PaaS产品
(1)Force.com:Force.com是业界第一个PaaS平台,其主要通过提供完善的开发环境和强健的基础设施等来帮助企业和第三方供应商交付健壮的、可靠的和可伸缩的在线应用。还有, Force.com本身是基于Salesforce著名的多租户的架构。 (2)Google App Engine:Google App Engine提供Google的基础设施来让大家部署应用,它还提供一整套开发工具和SDK来加速应用的开发,并提供大量的免费额度来节省用户的开支。 (3)Windows Azure Platform :它是微软推出的PaaS产品,并运行在微软数据中心的服务器和网络基础设施上的,通过公共互联网来对外提供服务,它由具有高扩展性云操作系统、数据存储网络和相关服务组成,而且服务都是通过物理或虚拟的Windows Server 2008实例提供。还有,其附带的Windows Azure SDK(软件开发包)提供了一整套开发、部署和管理Windows Azure云服务所需要的工具和API 。 (4)Heroku:是一个用于部署Ruby On Rails应用的PaaS平台,并且其底层基于Amazon EC2 的IaaS服务,而且在Ruby程序员中有非常好的口碑。
3、基础架构即服务IaaS
基础架构,或称基础设施(Infrastructure)是云的基础。它由服务器、网络设备、存储磁盘等物理资产组成。在使用IaaS时,用户并不实际控制底层基础架构,而是控制操作系统、存储和部署应用程序,还在有限的程度上控制网络组件的选择。
通过IaaS这种模式,用户可以从供应商那里获得他所需要的计算或者存储等资源来装载相关的应用,并只需为其所租用的那部分资源进行付费,而同时这些基础设施繁琐的管理工作则交给IaaS供应商来负责。
IaaS的关键概念: * 云爆发(cloud bursting) * 多租户计算(multi-tenant computing) * 资源共用(resources pooling) * 虚拟机监控程序(hypervisor)
IaaS最与众不同的两个方面:可伸缩性和虚拟化(elasticity and virtualization)。
对于企业而言,IaaS的巨大价值通过云爆发(cloudbursting)概念实现。云爆发是指当业务瞬间增长,需要大量的计算资源时,将任务负载扩展到云环境的过程。云爆发促成的资本节约潜力巨大,因为企业无需额外投资利用率很低的服务器,那些服务器一年中只有两三次使用 70% 的容量,其余时间仅有 7-10% 的负荷。
3.1 从”基础架构即资产“到”基础架构即服务”
在过去50年之内,大量成功的公司花费大量宝贵时间和资源来构建基础架构,其目标是通过创建一个更大、更快、更强的网络来获取战胜其竞争对手的竞争优势。IT 行业中的 “基础架构即资产” 范式拥有上世纪六七十年代的 “暴力跑车(muscle cars)” 所拥有的相同或类似的低效率和不利特征。对于企业计算,这些低效率包括: * 大量未使用的计算能力和容量,它们耗费的成本与大型、昂贵的数据中心中的硬件消耗的大量空间相关联。比如服务器一年中可能只有两三次使用70%的容量,其余时间仅有7-10%的负荷。 * 昂贵的人力资源需求,包括要求基础架构资产(服务器、路由器、交换机等)所在的数据中心的网络管理员进行24小时监控。 * 旨在应对高水平能源浪费的Green Computing计划的一个巨大障碍。 IaaS标志着从 “基础架构即资产” 到 “基础架构即服务” 的转变。云计算的其他两个类别也标志着范式转变。对于Platform as a Service (PaaS),转变来自 “平台即资产” 范式,该范式的特征是大量采购许可。同样的转变也适用Software as a Service (SaaS),这种转变是从 “软件以许可形式作为组织资产” 到 “软件以服务形式提供”。
3.2 IaaS的主要特征
(1)可伸缩性
可伸缩性是IaaS的首要关键特征。为了阐述可伸缩的概念,我需要您展开想象。假设云由一些粘在一起的棉花糖簇组成,这样人们就可以坐在它们上面。每个棉花糖都能承载一定数量的人,具体取决于组成云的棉花糖簇的数量和那些簇中包含的棉花糖的数量。随着越来越多的人登上棉花糖云,您可以通过粘贴更多的棉花糖来扩展棉花糖簇,增加表面面积。您可能已经明白,人代表需要计算资源的应用程序,比如承载网站并运行软件的资源。棉花糖簇代表VM集群,每个棉花糖代表一 VM。 尽管这听起来有点像Seuss博士的书中可能出现的内容,但它提供了一种方法来理解许多黑魔法(dark art)考虑的一个概念:可伸缩的集群(elastic clustering)。集群化几个物理服务器来形成一个虚拟云称为云集群(cloud clustering),如果它真是一种黑魔法,则精通程度可以通过一位艺术家的系统设计的可伸缩性来衡量。 我们来看一个例子。假设您是一位为美国政府工作的统计研究员。政府有点人手不足,您刚刚接受一个任务,需要编辑最近的美国人口统计的所有数据。您负责制定必要的统计数据,以便议会能够制定关于经济恢复资金分配和从现在起三天内的税收金额的重要决策。毋庸讳言,这是一项非常重要的工作,您的时间有点紧张。而且,您必须处理的数据量简直是个天文数字,您刚刚发现,编辑那些统计数据需要的计算资源需要IT部门三周时间才能准备好! 这种问题正是您可以使用IaaS轻松缓解的。事实上,使用IaaS,您可以在一小时之内完成全美人口普查数据分析。您首先创建一个服务器的单个实例,这个服务器包含在数据上运行查询需要的数据库软件。这个实例称为一个映像。当您部署映像并将数据导入数据库之后,就可以根据需要复制那个映像任意多次,并开始运行您的数据处理任务。当任务运行时,您可以手动或自动添加和移除资源。例如,如果计算任务的运行速度不够快,只需将更多机器实例副本添加到集群。
(2)虚拟化
IaaS很容易定位,因为它通常是独立于平台的。IaaS有一个硬件和软件资源组合组成。IaaS软件是低级代码,独立于操作系统运行,例如虚拟机监控程序。虚拟机监控程序负责管理硬件资源的库存并根据需要分配上述资源(见图 2-3)。这个过程称为资源共用(resource pooling)。虚拟机监控程序实现的资源共用使得虚拟化成为可能,虚拟化使多租户计算(multi-tenant computing)成为可能。多租户计算概念指由几个组织共享的一个基础架构,这些组织在安全需求和遵从性问题方面有类似的兴趣。
图2-3. VMs、虚拟机监控程序和计算机之间的关系
通过 IaaS,您拥有提供处理、存储、网络和其他计算资源的能力,您可以在那里部署和运行任意软件,比如操作系统和应用程序。大多数云计算用例遵循您已经习惯的基础分层结构:一个软件解决方案堆栈或平台被部署在一个网络基础架构上,一些应用程序在那个平台之上运行。但是,虚拟化使得云范式独一无二。
3.3 IaaS的优势
IaaS服务和传统的企业数据中心相比,在很多方面都存在一定的优势,下面是最明显的五个。 (1)免维护:主要的维护工作都有IaaS云供应商负责,所以不必用户操心。 (2)非常经济:首先免去了用户前期的硬件购置成本,而且由于IaaS云大都采用虚拟化技术,所以在应用和服务器的整合率普遍在10以上,这样能有效降低使用成本。 (3)开放标准:虽然很多IaaS平台都存在一定的私有功能,但是由于OVF等应用发布协议的诞生,使得IaaS在跨平台方面稳步前进,从而使得应用能在多个IaaS云上灵活的迁移,而不会被固定在某个企业数据中心内。 (4)支持的应用:因为IaaS主要是提供虚拟机,而且普通的虚拟机能支持多种操作系统,所以IaaS所支持应用的范围是非常广泛的。 (5)伸缩性强:IaaS云只需几分钟就能提供用户一个新的计算资源,而传统的企业数据中心则往往需要几周时间,并且计算资源可以根据用户需求来调整其资源的大小。
3.4 IaaS使用的技术
在IaaS所采用的技术方面,都是一些比较底层的技术,其中有四种技术是比较常用的: (1)虚拟化:也可以理解它为基础设施层的“多租户”,因为通过虚拟化技术,能够在一个物理服务器上生成多个虚拟机,并且能在这些虚拟机之间能实现全面的隔离, 这样不仅能减低服务器的购置成本,而且还能同时降低服务器的运维成本,成熟的x86虚拟化技术有VMware的ESX和开源的Xen 。 (2)分布式存储:为了承载海量的数据,同时也要保证这些数据的可管理性,所以需要一整套分布式的存储系统,在这方面, Google 的GFS是典范之作。 (3)关系型数据库:基本是在原有的关系型数据库的基础上做了扩展和管理等方面的优化,使其在云中更适应。 (4)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则推出基于NoSQL技术的Simple DB 。
3.5 主要的IaaS产品
最具代表性的IaaS产品有Amazon EC2、IBM Blue Cloud、Cisco UCS和Joyent。 (1)Amazon EC2。EC2主要以提供不同规格的计算资源(也就是虚拟机)为主。它基于著名的开源虚拟化技术Xen。通过Amazon的各种优化和创新, EC2不论在性能上还是在稳定性上都已经满足企业级的需求。而且它还提供完善的API和Web管理界面来方便用户使用。这种IaaS产品得到业界广泛地认可和接受,其中就包括部分大型企业,比如著名的纽约时报。 (2)IBM Blue Cloud。“蓝云”解决方案是由IBM云计算中心开发的业界第一个,同时也是在技术上比较领先的企业级云计算解决方案。该解决方案可以对企业现有的基础架构进行整合,通过虚拟化技术和自动化管理技术来构建企业自己的云计算中心,并实现对企业硬件资源和软件资源的统一管理、统一分配、统一部署、统一监控和统一备份,也打破了应用对资源的独占,从而帮助企业能享受到云计算所带来的诸多优越性。 (3)Cisco UCS。它是下一代数据中心平台,在一个紧密结合的系统中整合了计算、网络、存储与虚拟化功能。该系统包含一个低延时、无丢包和支持万兆以太网的统一网络阵列以及多台企业级x86架构刀片服务器等设备,并在一个统一的管理域中管理所有资源。用户可以通过在UCS上安装VMWare vSphere来支撑多达几千台虚拟机的运行。通过Cisco UCS,能够让企业快速在本地数据中心搭建基于虚拟化技术的云环境。 (4)Joyent。它提供基Open Solaris技术的IaaS服务。其IaaS服务中最核心的是Joyent SmartMachine。与大多数的IaaS服务不同的是,它并不是将底层硬件按照预计的额度直接分配给虚拟机,而是维护了一个大的资源池,让虚拟机上层的应用直接调用资源,并且这个资源池也有公平调度的功能,这样做的好处是优化资源的调配,并且易于应对流量突发情况,同时使用人员也无需过多关注操作系统级管理和运维。
总结:
为帮助您理解云计算的这三个类别,我创建了一个跨概念矩阵供您参考:
表 1. 三个云计算类别的跨概念矩阵
范型转变 | 特征 | 关键词汇 | 优点 | 缺点和风险 | 不应该使用的场合 | |
---|---|---|---|---|---|---|
基础设施即服务 (IaaS) | 基础设施即资产 | 常常独立于平台;分担基础设施成本,因此会降低成本;服务水平协议 (SLA);按使用量付费;自我伸缩 | 网格计算,效用计算,计算实例,系统管理程序,暴雨 (cloudbursting),多租用者计算,资源池 | 避免在硬件和人力资源方面花费资产费用;降低 ROI 风险;降低进入门槛;简化和自动化伸缩过程 | 企业效率和生产力很大程度上取决于厂商的能力;可能会增加长期成本;集中化需要新的/不同的安全措施 | 当资产预算大于运营预算时 |
平台即服务 (PaaS) | 许可证购买 | 消费云基础设施;能够满足敏捷的项目管理方法 | 解决方案堆 | 简化的版本部署 | 集中化需要新的/不同的安全措施 | 无 |
SaaS | 软件即资产(企业和消费者) | SLA;由 “瘦客户机” 应用程序提供 UI;云组件;通过 API 进行通信;无状态;松散耦合;模块化;语义性互操作能力 | 瘦客户机;客户机-服务器应用程序 | 避免在软件和开发资源方面花费资产费用;降低 ROI 风险;简化和迭代式的更新 | 数据的集中化需要新的/不同的安全措施 | 无 |
三、云管理层
虽然和前面云服务的3层相比,熟悉云管理层的人非常少,但是它确实是云最核心的部分,就好像一个公司离不开其董事会的管理一样。与过去的数据中心相比,云最大的优势在于云管理的优越性。云管理层也是前面3层云服务的基础,并为这3层提供多种管理和维护等方面的功能和技术。如下图所示,云管理层共有9个模块,这9个模块可分为3层,它们分别是用户层、机制层和检测层。
1、用户层
顾名思义,这层主要面向使用云的用户,并通过多种功能来更好地为用户服务,共包括4个模块:用户管理、客户支持、服务管理和计费管理。 (1)用户管理 对于任何系统而言,对于用户的管理都是必需的,云也是如此。云方面的用户管理主要有3种功能。其一是账号管理,包括对用户身份及其访问权限进行有效地管理,还包括对用户组的管理;其二是单点登录,英文为“Single Sign On”,其意义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,这个机制可以极大地方便用户在云服务之间进行切换;其三是配置管理,对与用户相关的配置信息进行记录、管理和跟踪,配置信息包括虚拟机的部署、配置和应用的设置信息等。 (2)客户支持 好的用户体验对于云而言也是非常关键的,所以帮助用户解决疑难问题的客户支持是必需的,并且需要建设一整套完善的客户支持系统,以确保问题能按照其严重程度或者优先级来依次进行解决,而不是一视同仁。这样,能提升客户支持的效率和效果。 (3)计费管理 利用底层监控系统所采集的数据来对每个用户所使用的资源(比如所消耗CPU的时间和网络带宽等)和服务(比如调用某个付费API的次数)进行统计,来准确地向用户索取费用,并提供完善和详细的报表。 (4)服务管理 大多数云都在一定程度上遵守SOA(Service-Oriented Architecture,面向服务的架构)的设计规范。SOA的意思是将应用不同的功能拆分为多个服务,并通过定义良好的接口和契约来将这些服务连接起来,这样做的好处是能使整个系统松耦合,从而使整个系统能够通过不断演化来更好地为客户服务。而一个普通的云也同样由许许多多的服务组成,比如部署虚拟机的服务、启动或者关闭虚拟机的服务等,而管理好这些服务对于云而言是非常关键的。服务管理主要有下面这5个功能。 * 管理接口。提供完善的关于服务的Web管理界面和API接口。 * 自定义服务。能让用户对服务进行自定义和扩展。 * 服务调度。配备强健的机制来负责服务的调度,以使服务能在合理的时间内被系统调用和处理。 * 监控服务。利用底层的监控系统来观测服务实际的运行情况。 * 流程管理。提供一个工具来让用户将多个服务整合为一个流程,并对它进行管理以提升运行效率。
2、机制层
这层主要提供各种用于管理云的机制。通过这些机制,能让云计算中心内部的管理更自动化、更安全和更环保。和用户层一样,该层也包括4个模块:运维管理、资源管理、安全管理和容灾支持。 (1)运维管理 云的运行是否出色,往往取决于其运维系统的强健和自动化程度。而和运维管理相关的功能主要包括3个方面。首先是自动维护:运维操作应尽可能地专业和自动化,从而降低云计算中心的运维成本。其次是能源管理:它包括自动关闭闲置的资源,根据负载来调节CPU的频率以降低功耗并提供关于数据中心整体功耗的统计图与机房温度的分布图等来提升能源的管理,并相应地降低浪费。还有就是事件监控:它是通过对在数据中心发生的各项事件进行监控,以确保在云中发生的任何异常事件都会被管理系统捕捉到。 (2)资源管理 这个模块和物理节点的管理相关,比如服务器、存储设备和网络设备等,它涉及下面这3个功能。其一是资源池:通过使用资源池这种资源抽象方法,能将具有庞大数量的物理资源集中到一个虚拟池中,以便于管理。其二是自动部署:也就是将资源从创建到使用的整个流程自动化。其三是资源调度:它将不仅能更好地利用系统资源,而且能自动调整云中资源来帮助运行于其上的应用更好地应对突发流量,从而起到负载均衡的作用。 (3)安全管理 安全管理是对数据、应用和账号等IT资源采取全面保护,使其免受犯罪分子和恶意程序的侵害,并保证云基础设施及其提供的资源能被合法地访问和使用。主要包括下面这7种机制。 * 访问授权。为多个服务提供集中的访问控制,以确保应用和数据只能被有授权的用户访问。 * 安全策略。实现基于角色或者规则的一整套安全策略,而且还允许系统能模拟策略发生变更的情况以提升安全策略的健壮性 * 安全审计。对安全相关的事件进行全面审计,以检测是不是存在任何隐患。 * 物理安全。根据职责限定每个云管理人员不同的权限,比如门禁等。 * 网络隔离。使用VPN(Virtual Private Network,虚拟专用网络)、SSL(Secure Sockets Layer,安全套接层)和VLAN(Virtual Local Area Network,虚拟局域网)等技术来确保网络的隔离和安全。 * 数据加密。这个机制能确保即使数据被窃取,也不会被非法分子利用。相关的机制有:对称加密和公钥加密等。 * 数据备份。由于数据完整性对云计算而言是基本要求,所以除了通过上面这些机制来确保数据不会被没有权限的人访问之外,还需要对数据进行备份,以避免由于磁盘损坏或者管理不当导致数据丢失的情况,所以需要完善的备份服务来满足每个用户不同的备份策略。 (4)容灾支持 在容灾方面,主要涉及两个层面。其一是数据中心级别。如果数据中心的外部环境出现了类似断电、火灾、地震或者网络中断等严重的事故,将很有可能导致整个数据中心不可用,这就需要在异地建立一个备份数据中心来保证整个云服务持续运行。这个备份数据中心会实时或者异步地与主数据中心进行同步,当主数据中心发生问题的时候,备份数据中心会自动接管在主数据中心中运行的服务。其二是物理节点级别。系统需要检测每个物理节点的运行情况,如果一个物理节点出现问题,系统会试图恢复它或者将其屏蔽,以确保相关云服务正常运行。
3、检测层
这层比较简单,主要监控这个云计算中心的方方面面,并采集相关数据,以供用户层和机制层使用。 (1)监控系统 全面监控云计算的运行主要涉及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种模式,它们分别是:公有云、私有云、混合云和行业云。接下来,将详细介绍每种模式的概念、构建方式、优势、不足之处及其对未来的展望等。
1、公有云
公有云是现在最主流也就是最受欢迎的云计算模式。它是一种对公众开放的云服务,能支持数目庞大的请求,而且因为规模的优势,其成本偏低。公有云由云供应商运行,为最终用户提供各种各样的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)对未来的展望 由于公有云在规模和功能等方面的优势,它会受到绝大多数用户的欢迎。从长期而言,公有云将像公共电厂那样毋庸置疑会成为云计算最主流甚至是唯一的模式,因为在规模、价格和功能等方面的潜力实在太大了。但是在短期之内,因为信任和遗留等方面的不足会降低公有云对企业的吸引力,特别是大型企业。
2、私有云
关于云计算,虽然人们谈论最多的莫过于以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服务围绕着业务展开,从而更好地为业务服务。
3、混合云
混合云虽然不如前面的公有云和私有云常用,但已经有类似的产品和服务出现。顾名思义,混合云是把公有云和私有云结合到一起的方式,即它是让用户在私有云的私密性和公有云灵活的低廉之间做一定权衡的模式。比如,企业可以将非关键的应用部署到公有云上来降低成本,而将安全性要求很高、非常关键的核心应用部署到完全私密的私有云上。 现在混合云的例子非常少,最相关的就是Amazon VPC(Virtual Private Cloud,虚拟私有云)和VMware vCloud了。比如,通过Amazon VPC服务能将Amazon EC2的部分计算能力接入到企业的防火墙内。 (1)构建方式 混合云的构建方式有两种。其一是外包企业的数据中心。企业搭建了一个数据中心,但具体维护和管理工作都外包给专业的云供应商,或者邀请专业的云供应商直接在厂区内搭建专供本企业使用的云计算中心,并在建成之后,负责今后的维护工作。其二是购买私有云服务。通过购买Amazon等云供应商的私有云服务,能将一些公有云纳入到企业的防火墙内,并且在这些计算资源和其他公有云资源之间进行隔离,同时获得极大的控制权,也免去了维护之苦。 (2)优势 通过使用混合云,企业可以享受接近私有云的私密性和接近公有云的成本,并且能快速接入大量位于公有云的计算能力,以备不时之需。 (3)不足之处 现在可供选择的混合云产品较少,而且在私密性方面不如私有云好,在成本方面也不如公有云低,并且操作起来较复杂。 (4)对未来的展望 混合云比较适合那些想尝云计算的企业和面对突发流量但不愿将企业IT业务都迁移至公有云的企业。虽然混合云不是长久之计,但是它应该也会有一定的市场空间,并且也将会有一些厂商推出类似的产品。
4、行业云
行业云虽然较少提及,但是有一定的潜力,主要指的是专门为某个行业的业务设计的云,并且开放给多个同属于这个行业的企业。 虽然行业云现在还没有一个成熟的例子,但盛大的开放平台颇具行业云的潜质,因为它能将其整个云平台共享给多个小型游戏开发团队,这样这些小型团队只需负责游戏的创意和开发即可,其他和游戏相关的烦琐的运维可转交给盛大的开放平台来负责。 (1)构建方式 在构建方式方面,行业云主要有两种方式。其一是独自构建:某个行业的领导企业自主创建一个行业云,并与其他同行业的公司分享。其二是联合构建:多个同类型的企业可以联合建设和共享一个云计算中心,或者邀请外部的供应商来参于其中。 (2)优势 能为行业的业务作专门的优化。和其他的云计算模式相比,这不仅能进一步方便用户,而且能进一步降低成本。 (3)不足之处 缺点是支持的范围较小,只支持某个行业,同时建设成本较高。 (4)对未来的展望 行业云非常适合那些业务需求比较相似,而且对成本非常关注的行业。虽然现在还没有非常好的示例,但是对部分行业应该存在一定的吸引力,比如上面提到的游戏业。 本文主要在技术层面(特别是在云计算的架构方面)对云计算进行了详细描述,并且介绍了SaaS、PaaS和IaaS这3个云服务层,以及作为云计算中心“大脑”的云管理层,同时也讨论了公有云、私有云、混合云和行业云这4种主要的云计算模式。