【www.shanpow.com--网络散文】
第一篇云计算架构图:《云计算基础设施和体系架构指南》
云计算架构介绍白皮书 第 1 版,2009 年 6 月摘要云计算可望提高应用程序部署速度、促进创新和降低成本,同时还增强经营敏捷 性。Sun 抱持一种全面的云计算观点,因而可以支持各个层面,其中包括服务器、 存储、网络和虚拟化技术,这些技术将云计算环境扩展到虚拟设备中运行的软件, 而这些虚拟设备可用来在极少时间内成功汇编应用程序。本白皮书探讨云计算如何 变革我们的设计、构建和提供应用程序的方式,以及企业在采纳并应用云计算技术 时必须考虑的架构问题。
本页故意留空。
Sun 公司目录引言............................................................... 1 Sun 公司观点. ....................................................... 1 云计算的性质....................................................... 2 扩大已形成的趋势................................................... 2 将虚拟机作为标准部署对象......................................... 2 按需、自助、以使用情况付费的模式................................. 2 通过网络提供服务................................................. 5 开放源软件的作用................................................. 5 云计算基础设施模式................................................. 6 公用云、专用云和混合云........................................... 6 云计算的架构层................................................... 9 云应用程序设计接口.............................................. 11 云计算效益........................................................ 11 缩短运行时间和响应时间.......................................... 11 最大限度地减轻基础设施风险...................................... 12 降低入市成本.................................................... 12 加快创新步伐.................................................... 12 实现 IaaS 必须考虑的架构问题. ....................................... 13 不断发展的应用程序架构............................................ 变革架构的途径.................................................. 变革应用程序设计................................................ 目标仍然相同...................................................... 一致而稳定的抽象层................................................ 标准有助于解决复杂问题.......................................... 松散耦合、无状态、原地失败 (Fail-in-Place) 计算. ........................ 水平扩展.......................................................... 并行化............................................................ 分割并征服...................................................... 数据物理.......................................................... 数据与处理之间的关系............................................ 编程策略........................................................ 合规与数据物理.................................................. 安全性与数据物理................................................ 网络安全做法...................................................... 13 13 13 14 16 16 18 18 19 20 21 21 21 22 22 23Sun 公司与云计算. .................................................. 24 来自 Sun 社区的创新................................................ 社区与开放式标准.................................................. 选择的重要性...................................................... 选择云计算提供商.................................................. 感谢.............................................................. 24 25 25 25 26
1云计算架构介绍Sun 公司第1章引言什么是云计算 (Cloud Computing)? 每个人都有自己的看法。云计算可以是租用 一台服务器或一千台服务器并在目前世界上最强大的系统上运行地球物理建 模应用程序的能力。云计算也可以是租用一个虚拟服务器、在其上面加载软 件、随意打开和关闭该虚拟服务器或克隆该服务器十次以满足突发工作负荷需 求的能力。云计算可以存储并保护巨量数据,而且这些数据只允许授权应用 程序和用户进行访问。云计算可由建立一个包括 OS、Apache、MySQL?.数据 库、Perl、Python 和 PHP 的平台的云提供商提供支持,该平台能够根据不断变 化的工作负荷自动扩展。云计算还可以是在互联网上使用存储并保护数据同时 提供服务 [包括电子邮件、销售能力自动化 (Sales Force Automation) 和报税 (Tax Preparation),等等] 的应用程序的能力。云计算可以使用存储云 (Storage Cloud) 来保存应用程序、企业和个人数据。而且,云计算还可以使用少数 Web 服务来 集成照片、地图和 GPS 信息,以便与客户 Web 浏览器中创建聚合 (Mashup)。Sun 公司观点Sun 公司采取一种全面的观点,这种观点认为,云的类型有很多种,而且有很 多不同的应用程序可以使用云来构建。由于云计算有助于提高应用程序部署速 度,有助于加快创新步伐,因而云计算可能还会出现我们现在无法想像到的形 式。然而,永恒不变的是,Sun 公司是一家具有丰富经验的服务器、网络和软 件技术提供商,我们提供的这些技术均支持云计算。作为创造“网络就是计算 机”(The Network is the Computer?).这一短语的公司,我们深信云计算就是下一 代的网络计算。 云计算与以前的模式有什么区别? 就云计算这个短语而言,它就是通过网络把信 息技术当作服务来使用。我们将其定义为封装的、具有 API 且通过网络提供的 服务。此定义同时包含把计算和存储资源当作服务使用。云计算首先以效率原 理为基础,此处所说的效率是指产生用来处理 80% 的使用案例的高级工具,这 样才能以一种惊人的速度创建和部署应用程序。 云计算可以由企业数据中心自己的服务器进行提供,也可以由承担拥有基础 设施的全部风险的云提供商提供。错误的观念认为资源是取之不尽的。尽管 该领域还处于萌芽阶段,但其模式已在信息技术 (IT) 行业引起极大反响。现 在,云计算的主要模式称为“把基础设施当作服务”(IaaS),而且由于其突出特 性,IaaS 模式成为本白皮书第一版本的焦点。 本白皮书探讨云计算的性质及其如何在变革世界各地的企业构建和部署应用程 序的方式的同时扩大已形成的趋势。然后,讨论云架构设计师 (Cloud Architect) 设计基于云的应用程序时必须考虑的架构问题。最后,介绍 Sun 公司提供的支 持云计算的技术。
2云计算架构介绍Sun 公司第2章云计算的性质 扩大已形成的趋势云计算推动降低服务提供成本的已有趋势,同时提高部署服务的速度和敏捷 性。它缩短了从设计应用程序架构到实际部署应用程序的时间。云计算把虚拟 化、按需部署、网上服务提供和开放源软件融合在一起。从一种观点看,云计 算并非新生事物,因为它使用既有的方法、概念和最佳做法。而从另一种观点 看,一切都是新的,因为云计算变革我们发明、开发、部署、扩展、更新、维 护和支付应用程序以及运行应程序的基础设施的方式。在本章中,我们考查上 述趋势,以及这些趋势是如何成为云计算的性质的核心的。将虚拟机作为标准部署对象在过去几年时间里,虚拟机已成为一种标准部署对象。虚拟化进一步增强了灵 活性,因为它把硬件概括到这样一个高度:在硬件上面,可以在不需要连接具 体物理服务器的情况下部署和重新部署软件栈。虚拟化实现了一个动态数据中 心,其中的服务器提供一个包含可根据需要使用资源的资源池,而且,其中的 应用程序与计算、存储和网络资源的关系可动态变化,以适应工作负荷和业务 需求。由于应用程序部署与服务器部署相分离,因而可以快速部署和扩展应用 程序,而不必首先购置物理服务器。 虚拟机已成为流行抽象概念.—.和部署单位.—.因为它们是服务提供商和开发 人员之间的最小公分母连接体。把虚拟机用作部署对象足以适应 80 % 的使用情 况,而且这将有助于满足快速部署和扩展应用程序的需要。 虚拟设备 (包含软件的虚拟机,这些软件部分或全部地配置为执行像 Web 服务 器或数据库服务器这样的特定任务) 进一步增强了快速创建和部署应用程序的能 力。把虚拟机和设备作为标准部署对象组合在一起是云计算的关键特性之一。 计算云通常由存储云进行补充,存储云通过 API 提供虚拟化存储,而这些 API 为 存储虚拟机映像 (Image)、用于诸如 Web 服务器的组件的源文件、应用程序状态 数据以及一般业务数据,提供便利。按需、自助、以使用情况付费的模式云计算的按需、自助和以使用情况付费的性质也是已有趋势的一种延伸。从企 业的观点看,云计算的按需性质有助于支持服务水平目标的性能和容量方面。 云计算的自助性质使机构可以创造根据工作负荷和目标性能参数进行扩展和收 缩的弹性环境。而且云计算的按使用情况付费的性质可以采取设备租赁的形 式,设备租赁保证了云提供商提供一种最低的服务水平。
3云计算架构介绍Sun 公司虚拟化是此模式的一个关键特性。早在几年前,IT 机构就已经明白虚拟化使他 们可以方便快捷地创建已有环境的副本—有时涉及多个虚拟机—来支持测试、 开发和分级 (Staging) 活动。这些环境的成本极小,因为它们几乎不使用什么资 源,因而可以与生产环境共处于同样的服务器之上。. 同样地,可以在已有服务器上的新虚拟机中开发和部署新应用程序,在互联网 上开放使用,并且在应用程序在市场上取得成功时进行扩展。这种轻便的部署 模式已经产生一种“进化式”(Darwinistic) 业务开发方法,其中,软件的 Beta 版 是对公众开放的,而且由市场决定哪些应用程序值得进一步扩展和开发,或者 静静地报废。 云计算通过自动化扩大了这一趋势。不是与 IT 机构洽谈购买用来部署应用程序 的资源,计算云是一个自助式命题,其中,一张信用卡即可购买计算周期,而 且可以使用 Web 接口或 API 创建虚拟机,并在虚拟机之间建立网络关系。云不 需要与 IT 机构或服务提供商签订长期服务合同,而是按照根据使用情况付费或 按 Sip 付费 (Pay-by-the-Sip) 的模式运作,在这种模式下,一个应用程序可能为运 行一项作业几分钟或几小时而存在,也可能为长期向客户提供服务而存在。构 建计算云时就好像应用程序是临时的,而计费是按照资源消耗情况进行的:使 用的 CPU 小时数、移动的数据量或存储的数据的千兆字节 (GB) 数。 使用和仅对使用的资源付费的能力,把购买多少基础设施的风险,从开发应用 程序的机构转移给云提供商。这种能力还把架构决策的责任从应用程序架构设 计师转移给开发人员。这种转移会增大风险,即出于某种原因制定了流程的企 业必须控制的风险,以及系统、网络和存储架构设计师需要把云计算设计包括 在内的风险。 基础设施是可以编程的 这种架构责任的转移产生重要的后果。过去,架构设计师确定一个应用程序的 各种组件如何在一组服务器上进行布局,即如何连接、固定、管理和扩展这些 组件。现在,开发人员可以使用云提供商的 API 不仅在虚拟机上创建应用程序 的初始结构,而且还确定该应用程序如何扩展和演进以适应工作负荷的变化。. 看看下面这个类比:历史上,使用 Java 编程语言编写软件的开发人员确定何时 适合创建使多项活动同时推进的新线程。现在,开发人员可以同样轻而易举地 发现和连接一项服务,使它们可以将一个应用程序扩展到这样一个高度:该应 用程序可使用成千上万个虚拟机来适应需求激增情况。 动态编写应用程序架构的程序的能力使开发人员拥有了巨大权力,同时也承担 相应大的责任。要最有效地使用云计算,开发人员还必须是架构设计师,而且 该架构设计师需要能够创建自我监控和自我扩展的应用程序。该开发人员/架. 构设计师需要清楚何时适合创建一个新的线程 (而不是何时创建一个新的虚拟 机) ,并创建如何把它们相互连接起来的架构模式。
云计算架构介绍Sun 公司一旦很好地理解并利用这种能力,结果将会是蔚为壮观的。一个已经具有传奇色彩的故事是 Animoto 的聚合工具,该工具从一组映像和音乐中创建一个视频。该公司的应用程序在仅仅三天时间里从 50 台服务器扩展到 3500 台服务器,这部分是因为一个使该应用程序能够容易地扩展的架构。为了达到这一目的,该应用程序必须设计为可以水平扩展、具有有限的状态,并且通过云 API 管理自己的部署。对于每个像这样的成功案例,都可能会成为一个相似的故事:其中该应用程序不能自我扩展,而且无法满足消费者的需求。这种从开发人员到开发人员/架构设计师的转移的重要性是无法理解的。看看您的企业数据中心是否能够以这么快的速度将一个应用程序扩展为适应如此快速增加的工作负荷,以及云计算是否可以测量您的当前能力。这种自助式、按使用情况付费的模式的另一个后果是,就像编写应用程序一样,通过汇编和配置设备和开放源软件来组合应用程序。可以重构 (Refactor) 以最大限度地利用标准组件的应用程序和架构,是那些将会在利用云计算效益方面最为成功的应用程序和架构。同样地,应用程序组件应设计为可以组合的,这种组合是通过将应用程序构建的易于使用来实现。这要求具备简单而明确的功能以及精心编写文档的 API。构建大型完整应用程序已成为过去,因为可直接使用或根据特定用途定制的现有工具库已经变得越来越大。例如,像 Hadoop (一种开放源 MapReduce 架构实现) 这样的工具可以在多种情况下使用,其中可以对一个问题及其数据进行重构,以便于其多个部分可以同时执行。当《纽约时报》想将其档案中 1100 万份文章和映像转换成为 PDF 格式时,其内部 IT 机构说这会需要七个星期时间。同时,使用 100 个运行 Hadoop
的 Amazon EC2 简单 Web 服务接口实例的一名开发人员,用 24 小时时间就完成了这项工作,劳动成本只有 300 美元。(这不包括上载数据所需的时间或存储成本。)
甚至大型企业都可以使用云计算,用来以比传统企业计算更少的时间和成本解决重大问题。举一个虚拟化与自助服务结合在一起如何促进应用程序部署的示例,看看如何在云中进行一次二层 Web 应用程序部署 (图):
1. 开发人员可以从一个预配置虚拟机映像库中选择负载平衡器
(Load Balancer)、Web 服务器和数据库服务器设备。
2. 开发人员配置每个组件以制作一个自定义映像。配置负载平衡器,通过将
静态内容上载到存储云来给 Web 服务器填充这些内容,并用站点的动态内容来填充数据库服务器设备。
3. 开发人员把自定义代码层叠在新的架构之中,从而使组件满足特定应用程
序要求。
4. 开发人员选择一个呈现各层映像并部署这些映像的模式,以便于处理网
络、安全和可扩展性问题。
图.1..以基于云的部署形式将应用程序部署到一个二层 Web 服务器架构模式的示例。
5. 安全而高度可用的 Web 应用程序启动并正常运行。当需要更新应用程序
时,可以在开发-测试-生产链之间对虚拟机映像进行更新、版本控制和复制,并且可以重新部署整个基础设施。云计算假定一切都是临时的,而且重新部署整个应用程序就像手动修补一组具体的虚拟机一样容易。
在此示例中,虚拟机映像的抽象性质支持一种组合式应用程序开发方法。通过重构该问题,可以使用一组标准的组件来快速部署应用程序。借助此模式,可以迅速满足企业的业务需要,而不需要对服务器、存储和网络基础设施进行耗时的人工购买、安装、布线和配置工作。
不言而喻,云计算扩大了通过网络提供服务的已有趋势。几乎每个商业机构都认可与其应用程序的连接的基于 Web 的接口的价值,不管是否通过互联网向客户提供应用程序,也不管它们是否是可供授权员工、合作伙伴、供应商和咨询人员使用的内部应用程序。当然,基于互联网的服务提供的美妙之处就在于可以随时随地使用应用程序。.
尽管企业都清醒地认识到利用安全套接字层 (SSL) 以及严格验证技术来确保通信安全的能力,但在云计算环境中引入信任还需要认真考虑企业计算和云计算之间的区别。如果架构设计的合理,互联网服务提供模式可提供各种规模的企业所需的灵活性和安全性。
开放源软件在云计算中发挥着一种重要的作用,因为开放源软件允许从容易访问的组件创建其基本软件元素:虚拟机映像和设备。这会产生巨大的影响:
·?? 例如,开发人员可以通过将 MySQL 软件层叠在一个 OpenSolaris? 操作系统
上并执行自定义来创建一个数据库设备 (图 2)。像这样的设备能够根据需要创建、部署和动态扩展云计算应用程序。例如,看看开放源软件如何使.Animoto 创建的应用程序在几天之内就扩展到 3500 个实例。
Ё???????图.2..可以通过把开放源软件层叠在一个虚拟机映像之中,并执行简化其部署的自定义,来创建设备。在此示例中,通过把 MySQL 软件层叠在 OpenSolaris 操作系统上来创建一个数据库设备。
·?? 由于用开放源组件汇编大型应用程序非常容易,因而生成更多开放源组件。这反过来又使开放源软件的作用更加重要。例如,需要拥有一种可在云计算环境中运行的 MapReduce 算法,这就是刺激开发该算法的因素之一。既然创建了工具,就可以用它来进一步提高开发人员编写云计算应用程序的水平。当从一个标准企业应用程序部署模式向一个基于云计算的应用程序部署模式.转变时,云计算架构设计师需要考虑许多问题。有的公用云和专用云提供互补的优点,有三种基本服务模式需要考虑,并且需要对比开放 API 和专有 API 的.价值。
IT 机构可以选择在各有其取舍的公用云、专用云或混合上部署其应用程序。公用、专用与混合这几个术语并不规定位置。公用云一般就在互联网上,而专用云通常在建筑物内,还有可能设在主机托管场所。.
企业可以就选用哪种云计算模式考虑多种因素,而且有可能选用不只一种模式来解决多种不同问题。如果是临时需要的应用程序,可能最适合在公用云上部署,因为这样可以避免为了临时的需要而购买额外设备的情况。同样地,永久使用或对服务质量或数据位置有具体要求的应用程序,最好在专用云或混合云上部署。
7 云计算架构介绍Sun 公司公用云由第三方运行,而不同客户提供的应用程序可能会在云的服务器、存储系统和网络上混合在一起 (图 3)。公用云通常在远离客户建筑物的地方托管,而且它们通过提供一种像企业基础设施进行的灵活甚至临时的扩展,提供一种降低客户风险和成本的方法。.
如果在实施一个专用云时牢记性能、安全性和数据保存位置,那么,该云中运行的其它应用程序的存在应对云架构设计师和最终用户都是透明的。的确,公用云的优点之一是,它们可以比一个公司的专用云大很多,因而能够根据需要进行伸缩,并将基础设施风险从企业转移到云提供商.—.哪怕仅仅是临时性的。可以将公用云的部分划出去,以便于独占单个客户端,从而产生一个虚拟专用数据中心。虚拟专用数据中心不是仅限于在公用云中部署虚拟机映像,而是使客户在更大程度上清楚地了解其基础设施。现在,客户不仅可以处理虚拟机映像,而且可以处理服务器、存储系统、网络设备和网络拓扑。利用位于同一场所的所有组件创建一个虚拟专用数据中心,有助于缓解数据位置问题,因为当
在同一场所内连接资源时,带宽非常充足,而且一般都可用。.
图.3..公用云向多个客户提供服务,而且,一般在主机托管场所进行部署。专用云是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制 (图 4)。该公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。专用云可部署在企业数据中心中,也可以将它们部署在一个主机托管场所。.
8 云计算架构介绍Sun 公司专用云可由公司自己的.IT.机构也可由云提供商进行构建。在此“托管式专用”模式中,像 Sun 这样的一个公司可以安装、配置和运营基础设施,以支持一个公司企业数据中心内的专用云。此模式赋予公司对于云资源使用情况的极
高水平的控制能力,同时带来建立并运作该环境所需的专门知识。
图.4..专用云可以托管在某个主机托管场所,也可以托管在企业数据中心之中。它们可以由公司支持,也可以由云提供商提供支持,还可以由像外包公司这样的第三方提供支持。混合云把公用云模式与专用云模式结合在一起 (图 5)。混合云有助于提供按需的、外部供应的扩展。用公用云的资源扩充专用云的能力可用来在发生工作负荷快速波动时维持服务水平。在利用存储云支持 Web 2.0 应用程序时,这最常见。混合云也可用来处理预期的工作负荷高峰。专用云,有时称为“超负荷计算”(Surge Computing),可用来执行易于在公用云上部署的定期任务。
混合云引出确定如何在公用云与专用云之间分配应用程序的复杂性。需要考虑的问题包括数据和处理资源之间的关系。如果数据量小,或应用程序无状态,与必须把大量数据传输到一个公用云中进行小量处理相比,混合云要成功得多。
9
云计算架构介绍Sun 公司图.5..混合云把公用云模式和专用云模式结合起来,而且,当这两种类型的云位于同一场所时,混合云特别有效。
Sun 公司的云计算观点是一种全面的观点:云计算可描述在从硬件到应用程序的任何传统层级提供的服务 (图 6)。实际上,云服务提供商倾向于提供可分为如下三个类别的服务:把软件当作服务 (Software as a Service)、把平台当作服务 (Platform as a Service) 以及把基础设施当作服务 (Infrastructure as a Service)。这些类别把如图 6 所示的各种层级组合在一起,其中存在某种重叠。“把软件当作服务”的特色是根据需要作为服务提供的一整套应用程序。该软件的单个实例运行于云上,并为多个最终用户或客户机构提供服务。
最著名的 SasS 示例是 salesforce.com,不过许多其它实例已经进入市场,其中包括提供基本商业服务 (包括电子邮件和文字处理) 的 Google Apps。
尽管 salesforce.com 诞生比云计算定义的出现早了几年,但它现在通过利用其伴侣 force.com 运作,后者可定义为“把平台当作服务”。Web ?????Flickr API?
Google ???? API?????????
salesforce.com?????FlickrН?????AMP?GlassFish ㄝ?????????DNS ???????????????
Ё??????????????????????????????
图.6..云计算意味着把 IT 基础设施用作一项服务,而且该服务可以是从租用原始硬件到使用第三方 API 的任何事情。“把平台当作服务”包含一个软件层,并作为一项服务提供此软件层,这项服务可用来构建更高水平的服务。从服务生产商或消费者的观点看,关于 PaaS 的观点至少有两种:
·?? 生产 PaaS 的某个人可能通过集成 OS、中间件、应用软件甚至是一个随后
作为服务提供给客户的开发环境来生产一个平台。例如,开发 PaaS 的人可能会使其以一组 Sun? xVM 管理程序虚拟机为基础,这组虚拟机包括一个.NetBeans?.集成化开发环境、一个 Sun GlassFish? Web 栈,并支持像 Perl 或.Ruby 这样的其它编程语言。..
·?? 使用 PaaS 的人会看到一个封装式服务,该服务是通过 API 提供给用户的。客户通过.API.与该平台互动,而且该平台执行一切必要的操作来管理和扩展其本身,以提供规定的服务水平。虚拟设备可以归类为 PaaS 的实例。例如,一个内容交换设备会将其所有组成软件对客户隐藏起来,而只向客户提供用来配置和部署服务的一个 API 或 GUI。
PaaS 产品可执行各个阶段的软件开发和测试,也可以专用于某个领域,例如,内容管理。PaaS 的商业示例包括 Google App Engine,它在 Google 的基础设施上提供应用程序服务。像这样的 PaaS 服务可提供一个用来部署应用程序的强大基础,然而它们可能会由于云提供商选择提供的能力而受到制约。
“把基础设施当作服务”通过网络作为标准化服务提供基本存储和计算能力。服务器、存储系统、交换机、路由器和其它系统都是合用的,并可用来处理从应用程序组件到高性能计算应用程序的工作负荷。
IaaS 的商业示例包括 Joyent,其主要产品是提供高度可用的按需基础设施的一系列虚拟化服务器。
区分云计算与标准企业计算的关键特征之一是:基础设施本身是可以编成程序的。开发人员不是实际部署服务器、存储器和网络资源来支持应用程序,而是指定如何配置和互连同样的虚拟组件,包括如何从存储云存储和检索虚拟机映像和应用程序数据。开发人员指定如何且何时通过云提供商指定的 API 来部署组件。
这与文件传输协议 (FTP) 的工作方式相似: FTP 服务器维持与会话期间一直开放的客户端的控制连接。当要传输文件时,该控制连接用来向服务器提供一个来源或目标文件名,并协商一个用于文件传输本身的源和目标端口。从某种意义上讲,云计算 API 就像 FTP 控制信道一样:云计算 API 在使用云期间是开放的,而且控制如何利用云来提供开发人员向往的最终服务。
控制如何利用云基础设施的 API 的使用具有一个缺陷:与 FTP 协议不同的是,云.API 尚未标准化,因此,每个云提供商都有自己用来管理其服务的特定 API。这是一个新兴行业的典型状态,其中,每个供应商都有其专有技术,这样的技术往往把客户限制在其服务里,因为专有 API 使得变更提供商非常困难。
请查找在尽可能多的地方使用标准 API 的提供商。标准 API 现在可用来访问存储设备,而随着时间的推移,用来部署和扩展应用程序的 API 可能会被标准化。另外,请查找有哪些云提供商了解其市场而且提供存档并部署虚拟机映像和预配置设备的方法。
要想从云计算中实现最大效益,开发人员必须能够重构其应用程序,使应用程序可以最有效地利用云计算所支持的架构和部署方式。使用云计算部署应用程序的优点包括缩短运行时间和响应时间、最大限度地减轻部署物理基础设施的风险、降低入市成本以及加快创新步伐。
对于弹性地使用云来运行批量作业的应用程序来说,云计算使得使用 1000 台服务器在相当于单个服务器所需的千分之一的时间里完成一项任务变得非常简单。前面引用的《纽约时报》的示例就是一个很好的批作业示例,通过利用云,极大地缩短了其运行时间。
12 云计算架构介绍Sun 公司对于需要向其客户提供良好响应时间的应用程序来说,重构应用程序以便把任何 CPU 密集型任务外包给“工人”(Worker).虚拟机,有助于优化响应时间,同时还能根据需求进行伸缩,从而满足客户需求。前面引用的 Animoto 应用程序就是云如何用来扩展应用程序并维持服务质量水平的一个很好的示例。
IT 机构可以利用云来减轻购置物理服务器所固有的风险。新的应用程序是否将会成功? 如果成功,需要多少台服务器? 部署这些服务器的步骤是否能够跟得上工作负荷增加速度? 如果不能,投入服务器中的大量资金会不会付之东流? 如果该应用程序的成功非常短命,IT 机构是否还会在多数时间里处于空闲状态的大量基础设施中进行投资?
当把一个应用程序推出到云中时,可扩展性和购买太多或太少基础设施就成为云提供商的问题。越来越多的案例表明,云提供商的基础设施规模如此之大,以至于可以容忍各个客户的业务量增长和工作负荷尖峰情况,因而减轻了这些客户所面临的经济风险。
云计算最大限度地减轻基础设施风险的另一条途径是实现超负荷计算,其中企业数据中心 (也许是实现专用云的数据中心) 通过一个允许其向一个公用云发送超溢工作来扩大其处理工作负荷尖峰情况的能力。在一个资源不再稀缺而且能够以较低成本更好地满足资源需求的环境中,可以更好地处理应用程序生命周期管理问题。
云计算的许多属性有助于降低进入新市场的成本。
·?? 由于基础设施是租用的,而不是购买的,成本得到控制,而且资本投资可能为
零。除通过按 Sip 购买计算周期和存储空间来降低购置成本之外,云提供商的巨大规模也有助于最大限度地降低成本,从而有助于进一步降低入市成本。·?? 应用程序与其说是通过汇编倒不如说是通过编程来开发的。这种快速应用程
序开发方法非常规范,有助于缩短入市时间,因而有可能使在云环境中部署应用程序的机构先于竞争者入市。..
云计算有助于加快创新步伐。降低进入新兴市场的成本有助于使竞争各方处于同一起跑线,因而使新创企业可以快速而低成本地部署新的产品。这使小公司可以更有效地与在企业数据中心领域里所经历的部署过程长得多的传统机构进行竞争。增强竞争能力有助于加快创新步伐,而且由于许多创新是通过利用开放源软件实现的,整个行业都会从云计算技术所促成的创新步伐加快而受益。
13 云计算架构介绍Sun 公司第.3.章正如我们已经说明的:云计算是当前趋势和最佳做法的自然延伸,从架构观点看云计算也是如此。再次强调,云计算并非新生事物,不过在其实现中,云计算改变我们所做的一切工作。
在 20 世纪 90 年代,人们谈论的话题是关于如何把一个应用程序分解成各种组件,然后是如何将这些组件部署到不同的服务器上,以便优化非功能要求,包括可扩展性、可用性、易管理性和安全性。现在,我们所维持的是一个分解式应用程序架构,同时实际部署到一个利用虚拟化的整合式架构上。.
云计算通过提供一种有计划地部署应用程序架构的方法来继续这一趋势,最终实现一个动态数据中心的承诺。在云计算中,效率受到高度重视;如果无法快速而有计划地部署应用程序架构,那么该应用程序就可能不是一个适合于此种模式的应用程序。
过去,应用程序设计为通过垂直扩展来处理大型工作负载。将更多处理器和内存安装在一个邮件服务器上来处理更大的流量。扩展数据中心服务器以提高吞吐量。在超级计算机上运行高性能计算作业。
从高度可扩展的对称型多处理器迁移到价格低廉但可扩展性差的 x86 架构服务器已经对应用程序设计产生了影响。开发人员并不期望应用程序运行于高度可扩展的服务器,而是重构其应用程序,以便能够在多个服务器之间进行水平扩展。此应用程序重构并不总是容易进行的,因为应用程序及其数据都必须进行设计,这样才能把处理和数据同时分解成为较小的数据块。这一已有架构趋势已经成为推广云计算的一个关键因素。这一趋势的示例包括:
高性能计算 (HPC) 工作负荷已经在光金属 (Bare-Metal) 计算网格上运行有一段时间了,这是通过应用程序重构实现的。例如,科学家已经找到为像 3D 气候建模这样的应用程序削减数据的方法,因而可以在许多服务器上展开应用程序。网格计算 (Grid Computing) 是云计算的“前辈”,这是因为网格计算使用工具来供应和管理多架物理服务器,这样,这些服务器就可以共同配合来解决一个问题。由于具有极高的计算、互处理通信和 I/O 需求,HPC 工作负荷非常适合于作为服务提供基础设施的云,尤其是提供对 I/O 设备进行更直接访问的光金属服务器或 Type I 虚拟机。
14 云计算架构介绍Sun 公司数据库管理系统通过水平扩展数据库服务器并在其之间对表进行分区,已经适应于在云环境中运行。此技术 [称为“分片”(Sharding)] 使多个数据库软件实例 (通常是 MySQL 软件) 可以在云环境中扩展性能。应用程序现在不是访问单个中央数据库,而是访问多个数据库实例中的一个,具体取决于哪个“碎片”(Shard) 包含所需数据 (图 7)。????????????????????????
∈???????????????П????????????
图.7..数据库分片技术在多个数据库管理系统实例之间对数据库表进行分区,可通过水平扩展来支持大型数据库。
执行像帧渲染 (Frame Rendering) 这样的活动的应用程序已经设计为不是为每个帧创建一个新线程,而是创建一个单独的虚拟机来渲染每个帧,因而通过水平扩展来提高性能。
开放源社区正在开发一般化工具,这些工具可帮助处理大量数据,然后将结果聚集到相应的进程中。例如,Hadoop 就是 MapReduce 问题的一种开放源实现,这种实现将“工人”(Worker) 虚拟机与他们所需的数据的部署集合在一起。应用程序架构方面的许多进步都有助于促进云计算的推广。这些进步有助于支持高效地部署应用程序的目标,同时有助于使应用程序具有弹性,并适度地自动扩展。然而,杰出应用程序架构的首要目标始终没有发生任何变化:那就是支持同样的始终至关重要的特征:
·??此特征的重要性始终未曾改变。为云计算设计的应用程序需要根
据工作负荷需求进行伸缩,这样,性能及与服务水平的符合性就保持适当。为了达到这一点,必须将应用程序及其数据松散耦合,以使可扩展性最大
15 云计算架构介绍Sun 公司
化。“弹性”这一术语经常适用于伸缩云应用程序,因为云计算应用程序必须不仅可以扩展,而且必须在工作负荷减小时能够缩小,以免抬高在云中的部署成本。·??无论应用程序是向社交网站用户提供服务,还是管理大型制造企
业的供应链,互联网应用程序用户都期望这些应用程序每时每刻都能正常运行。Sun 公司在此领域的行业领先地位早在其推出 SunToneSM 认证计划时就已确立,该计划有助于客户证明其应用程序和服务达到要求的可用性水平。·??随着时间的推移,对于可靠性的重视程度已经发生转变。如果大
型应用程序是指大型对称多处理系统,那么可靠性就意味着系统组件极少发生故障,而且即使发生故障,也可以在不中断系统正常运行的情况下进行更换。现在架构适应此特征的方式是把应用程序设计为:即使分解运行应用程序的一个或多个服务器或虚拟机,应用程序仍能继续运行,而且其数据不会受到破坏。正是在这个方面,我们曾经担心个别服务器组件发生故障,而现在我们构建即使全部服务器发生故障也不会造成破坏的应用程序。设备需要只对获得授权且通过身份验证的用户提供访问权,而且这·??些用户需要能够确信其数据是安全的。无论应用程序帮助各个互联网用户准备其纳税申报表,还是应用程序在公司及其供应商之间交换保密信息,都是如此。现今环境中的安全性是通过如下手段确立的:利用严格的身份验证、授权和帐号管理程序,确保静止和移动中数据的安全性,锁定网络,以及硬化操作系统、中间件和应用软件。安全性是这样一个系统特性,以至于我们不再单独强调安全性.—.必须将安全性融合到应用程序的各个方面以及应用程序部署和操作架构和进程中。·??这些特征越来越重要,因为商业机构发现他们必须通过
提高向客户提供应用程序的速度来更快地适应不断变化的经营环境。云计算强调通过利用最适合的构件 (Building Block) 来快速完成工作,使应用程序非常快速地面市。
·??一旦部署一个应用程序,就需要对其进行维护。过去,可维护性
意味着使用的服务器可以在不停机或极少停机的情况下进行修理。现在,可维护性是指,更新甚至更换一个应用程序的基本基础设施组件时,不会破坏该应用程序的特征,其中包括可用性和安全性。
·??这是特征列表上的新特征,或许这是最能将云计算模式与其它计算模
式区别开来的一个特征。效率是云计算的意义所在,而且如果不能方便快捷地在云中部署应用程序,即使可从模式中受益,该计算模式也可能不是一个良好的可选模式。例如,企业资源规划应用程序可能最适合于垂直扩展的系统,并可能在近期通过 SaaS 提供。不过,提取、处理和呈现这些系统中派生的数据的应用程序可能非常适合于在云中部署。
16 云计算架构介绍Sun 公司云计算提高了抽象水平,这样,所有组件都抽象化或虚拟化,并可用来迅速组合较高级别的应用程序或平台。如果某个组件不向其客户或同行提供一致而稳定的抽象层,该组件就不适合于云计算。
标准部署单位是虚拟机,它本质上可运行于抽象硬件平台。人们很容易过度关注构建虚拟机映像,而忽视用来创建虚拟机映像的模式。在云计算中,维持该模式而非映像本身非常重要。该模式是保留下来的,而映像则是从该模式产生的。虚拟机映像将始终在变化,因为虚拟机映像内的软件层将总是需要修补、升级或重新配置。不变的是创建虚拟机映像的流程,而且这是开发人员所应重视的。开发人员可以通过把 Web 服务器、应用程序服务器和 MySQL 数据库服务器层叠在一个操作系统映像上,应用补丁程序、配置更改,以及互连各层组件,来构建虚拟机映像。重视模式,而非虚拟机映像,可以通过重新把模式应用到一组新组件,根据需要来更新这些映像本身。
凭借这一标准部署单位,云架构设计师可以使用有助于以较低成本加快部署速度的设备。开发人员可以使用一个设备,该设备预配置为通过与该设备的 API 进行互动,在 OpenSolaris OS 上运行 Hadoop。架构设计师可以使用内容交换机,这些内容交换机不是作为物理设备部署的,而是作为虚拟设备部署的。部署该设备所需要做的一切事情只是与其 API 或 GUI 进行互动。即使生产带有许可证的商用软件的公司都在通过更加灵活、基于使用情况的许可模式来适应云计算。无论是调用一个创建虚拟机映像的模式,还是定制一个设备,结果产生的虚拟机映像都需要存储在企业进行版本控制并提供支持的映像库中。
云计算首先重视效率,因而采用少数标准和标准配置有助于降低维护和部署成本。拥有可简化部署的标准比拥有用于作业的最佳环境更重要。80/20 规则就在这里发挥作用:云计算重视可以支持 80% 使用案例的少数标准。这就把经济情况从成本高的一次性实现转变为选择可最大限度地加以利用的构件。将来还会继续专业化,但起点应从标准开始。
对于要采用云计算的企业,标准可以包括虚拟机类型、标准虚拟机映像中的操作系统、工具以及支持的编程语言。想想虚拟机选择对于要支持的应用程序的影响。对于社交网站·??应用程序、出于安全性进行的隔离,以及出于可移植性进行的高水平抽象,会建议使用 Type II 虚拟机。对于高性能计算或可视化应用程序,需要直接访问硬件以实现最佳性能,会建议使用 Type I 虚拟机。
17 云计算架构介绍Sun 公司·??必须像在物理服务器上一样维护虚拟机上的软
件。操作系统仍然需要硬化、修补和升级。拥有一小组标准化的受支持配置,使开发人员可以使用当前支持的虚拟机。当升级支持的配置时,应设计要求自定义的模式,以便于容易地将更改重新应用到一个新的虚拟机映像。设备也是如此,其中,可以通过设备的标准 API 来配置当前版本。·??企业可能以标准方式使用 Java 编程语言和 Ruby on Rails;小企
业可以以标准方式将 PHP 作为其用于构建应用程序的首选工具。当这些标准在云计算上下文中成熟时,它们开始形成下一层:把平台当作服务 (PaaS)。当通过组合和配置一组虚拟机映像和设备重构并创建应用程序时,要将重点放在特定虚拟机发挥什么作用上,而不是放在如何实现该虚拟机上。虚拟化和封装技术将实现细节隐藏起来,并使开发人员重新重视组件之间的接口和互动。这些组件应该提供标准接口,以便于开发人员方便快捷地构建应用程序,同时利用与性能或成本所要求的相似的功能来使用替代组件。
应用程序开发是有计划地完成的,甚至用来部署应用程序的程序也可以封装,以便于利用和重新利用。可以封装部署三层式 Web 基础设施的程序,这样,该程序的参数就会包括指向用于 Web 服务器、业务逻辑和数据库层的虚拟机映像的指针。然后就可以执行此设计模式,以便于部署标准应用程序,而不必重新设想或甚至重新考虑 (例如) 支持每层所要求的网络架构。
应用程序维护的云计算原则并非修补,而是重新部署。管理创建虚拟机映像的模式,而不是映像本身,简化了这种重新部署。部署之后发现的问题解决起来相当容易,或者通过更新组件虚拟机并调用用于重新部署的设计模式,来发布应用程序的新版本。当开发人员修补虚拟机时,只需要创建一个虚拟机映像,而且要有计划地复制并部署其余映像。应对虚拟机进行版本控制,以便于必要时回滚。WEB ??????
图.8..一种部署模式可以封装起来,以便于重复利用。在此示例中,一个模式指定 Web 服务器、应用程序服务器和数据库服务器层,而用此模式部署其本身的一个实例所需要的一切只是指向上述三层中各层的虚拟机的指针。
Project Kenai 生产的 OpenSolaris 动态
服务容器 (OpenSolaris Dynamic Service
Containers) 提供一个轻便的供应系统,.
可用来水平扩展 Solaris 区域 (Solaris
Zones)。 云计算架构介绍Sun 公司几年以来,基于 Web 的应用程序已在向松散耦合和无状态转变。在云计算中,这些特征甚至更加重要,因为云计算具有更加动态的性质。应用程序映像不修补,它们是用完丢弃的对象,因而需要是无状态的。如果一个虚拟机失败,应用程序必须继续不间断地运行。应用程序之间的耦合需要是松散的,这样,任何组件发生故障都不会影响整个应用程序的可用性。一个组件应该做到“原地故障”,极少甚至不会对应用程序产生影响。由于应用程序组件越来越具有临时性,因而不能包含存在时间超过任何应用程序实例的数据。应通过将状态推出软件来尽可能使应用程序无状态,从而尽可能地将处理与数据分开。能够做到这一点的技术包括:·?? 以 Cookie 的形式将状态推出到用户,或者将状态代码编入 URL。·?? 将状态下推至后端数据库·?? 维护数据的补充副本,这是 Hadoop 使用的一个策略·?? 使用基于网络的持久性技术,例如,GlassFish 应用程序服务器中的.Terracotta 或 Shoal。“原地失败”计算对操作活动的影响是,即使是硬件也应该是无状态的,以便于云正常工作。硬件配置应存储在元数据中,这样,在发生故障时就能够恢复配置。云计算使得大规模水平可扩展性可以用于有条件利用的应用程序。现在出现一个设计并重构应用程序以在水平扩展环境中顺利工作的趋势,该趋势意味着越来越多的应用程序能够很好地适应云计算。利用水平扩展的应用程序应该重视假如个别组件发生故障整个应用程序的可用性。多数云平台是在一个虚拟服务器资源池上构建的,其中,如果任何一个物理服务器发生故障,该服务器托管的虚拟机只是在一个不同的物理服务器上进行重构。把无状态和松散耦合的应用程序组件与水平扩展技术结合在一起,可促成一种“原地失败”策略,这种策略与任何一个组件的可靠性都没有关系。
水平扩展不必局限于单个云。根据应用程序数据的大小和位置,“超负荷”计算可用来扩展一个云的能力,以适应临时性工作负荷增加。在超负荷计算中,运行于专用云的应用程序可能会根据需要吸纳来自公用云的额外资源。.
超负荷计算很大程度上取决于数据的数量和位置。如果是一个位于企业数据中心的专用云,而且该企业数据中心扩展为使用互联网上某个其它位置的一个公用云,需要移动到公用云的数据的数量需要分解为等式 (参阅下面的“数据物理”一节)。如果是一个驻留在与公用云提供商相同的托管场所的专用云,数据位置问题就会大大减小,因为几乎无限的自由带宽可以连接这两个云。
水平扩展和并行化如影随形,不过,现在扩展和实现发生了变化。从微观上讲,软件可以在对称式多处理器上使用垂直扩展来产生多个线程,其中,并行化可加快操作速度或改进响应时间。但是,随着现今的计算环境转变为包含两个和四个插槽的 x86 架构服务器,垂直扩展只是像服务器拥有核心的数量一样多地拥有并行处理能力 (或者购买一样多的核心并分配给特定虚拟机)。从宏观上讲,可以在多个服务器之间使用并行化的软件也可以扩到成千上万个服务器,从而提供比用对称式多处理技术实现的更大可扩展性。
在实体世界中,并行化技术通常是通过在多个服务器之间分配入站请求的负载平衡器或内容交换机实现的。而在云计算世界里,并行化可以通过在多个虚拟机之间分配入站请求的负载平衡设备或内容交换机来实现。无论是上述哪种情况,应用程序都可设计为吸收补充资源来适应工作负荷尖峰。
通过负载平衡实现并行化的经典示例是:许多同时访问相同数据的无状态 Web 服务器,其中,在服务器池内分配入站工作负荷 (图 9)。
WEB 图.9..并行化与负载平衡的一个十分常见的使用情况是水平扩展式 Web 服务器。
在云计算环境中使用并行化还有许多其它途径。使用巨量 CPU 时间处理用户数据的应用程序可能会使用如图 10 中所示的模式。一个调度程序接收来自用户的作业,将数据存入存储库,然后针对每项作业启动一个新的虚拟机,交给该
虚拟机一个令牌,此令牌允许该虚拟机从存储库中检索数据。当虚拟机完成其任务时,它将令牌传回调度程序,调度程序允许虚拟机将完成的项目返回给用户,并且虚拟机终止工作。
图.10..并行化的另一个示例是代表用户成批执行资源密集型任务。
应用程序只能并行化到可以对其数据进行分区的地步,这样,独立系统就可以在其上面并行工作。一个良好的应用程序架构包括一个分割并征服数据的计划,而其多种真实示例阐释了多种多样的方法:
·??Hadoop 是 MapReduce 模式的一种实现,该模式又是主/工人并行化模式的一
种实现。
·?? 数据库分片可通过多种分区技术来完成,其中包括垂直分区、基于范围的分
区或基于目录的分区。使用的方法完全取决于将要如何使用数据。.
·?? 大型金融机构已经重构其欺诈检测算法,这样,曾经是大部分批数据挖掘操
作的程序现在并行运行于大量系统之上,对输入数据进行实时分析。
·?? 现在已经设计出一些处理三维数据的高性能计算应用程序,因而通过一个进程就可以为时间 t 计算出一立方容积 (的气体、液体或固体) 的状态。然后一立方的状态就传递给代表八相邻立方的进程,并为时间 t+1 计算出状态。数据分区对于通过网络传输的数据的量影响很大,这使数据物理成为下一个考虑事项。
21 云计算架构介绍Sun 公司数据物理考虑处理元素与处理元素所操作的数据之间的关系。由于多数计算云在云中存储数据,而不是在物理服务器的本地磁盘上存储数据,因而需要花费时间把数据迁移到要处理的服务器上。数据物理由一个简单的公式进行确定,该公式描述在生成、存储、处理和存档数据的位置之间迁移一定量的数据花费多长时间。云善长于存储数据,并不一定善长于对数据进行存档并按照预定计划毁坏数据。大量数据,或低带宽管道,延长移动数据所花费的时间:
时间 =字节数 * 8带宽
此公式对于 Moment-by-Moment 式数据处理和长期规划都意义重大。例如,它有助于确定实施超负荷计算策略是否有意义,因为其中把数据移动到公用云可能要比直接处理数据花费更长时间。它还有助于确定将操作从一个云提供商移动到另一个云提供商的成本。无论数据在一个云提供商的数据中心里积聚成什么程度,都必须将其移动到另一个云提供商那里,而这一过程可能花费时间。移动数据的成本可以用时间和带宽费用来表示。图 5 所示的混合模式 (其中一个公司的专用云托管在其云提供商的公用云那里) 有助于极大地降低成本。托管场所的带宽一般都是充足而空闲的,这使这一策略无论在到处移动数据花费的时间还是费用方面都是一个双赢的命题。
数据物理提醒人们考虑数据与处理之间的关系,以及从存储设备将数据移动到处理设备会既花费时间又花费资金。这种关系中需要考虑的一些方面包括:·?? 在附近没有计算能力的情况下存储的数据价值有限,而且云提供商应该在这
两个组件的网络关系方面保持透明。其管道的大小如何? 时间延迟情况如何? 连接的可靠性如何? 云提供商应提前回答上述问题。
·?? 云架构设计师应该能够指定虚拟组件和服务的位置,这样,虚拟机与其访问
的存储设备之间有一个明确定义的关系。
·?? 云提供商可以自动为客户优化这种关系,但要考虑其机构是否适合于手头的
应用程序。
·?? 在一个联网环境中,有时计算一个值比从联网存储设备汇总检索它效率更高.
(更快,时间延迟更短)。想想使用计算周期与到处移动数据之间的利弊得失。计算云要求使用考虑数据移动的编程策略:
·?? 到处移动指针通常要比移动实际数据要方便得多。请注意图 10 所示的调度程
序/工人模式使用一种中央存储服务,并在应用程序之间传递令牌,而不是传送实际数据。
·?? 指针应视为一种能力,认真确保指针不容易被伪造。
22 云计算架构介绍Sun 公司·?? 像代表性状态传输 (REST) 或简单对象访问协议 (SOAP) 这样的工具有助于降低应用程序状态,同时还能管理状态数据的传输。
保持符合政府法规和行业要求给数据管理增加了另一层需要考虑的因素。云架构设计师需要能够给数据存储指定拓扑和地理约束。云提供商应该设法简化指定数据与处理数据的虚拟机之间的关系以及数据实际存储位置。
·?? 处理个人数据的公司可能需要遵守与数据处理相关的政府法规。例如,在欧
盟国家开展业务的公司如果将其数据存储在美国,那就违反了本地法律,因为两地法律保护个人数据的规定存在差异。在类似情况下,云提供商应该提供一种对数据移动方式和位置指定约束条件的能力。
·?? 受行业标准制约的公司 (例如,通过处理授权的信用卡征税的行业标准) 可能面临在哪里存储数据以及如何和何时毁坏数据方面的限制。在类似情况下,不允许把空闲磁盘存储块与另一个客户的存储块混合起来。重新使用之前必须安全地擦除这些存储块。
选择云提供商存储数据时,要考虑的不仅仅是该提供商是否可信。还需要考虑云提供商是否按照适用于相应应用程序的标准通过认证。.
数据通常是一个公司最有价值的资产,必须使用尽可能比对于任何其它资产大的警惕性来加以保护。需要以更大警惕性保护数据这一论点证明起来非常容易,因为入侵者可能会采取人们无法想象的方式从互联网上的任何地方取得一个公司的数据。需要采取的措施包括:
·?? 对空闲的数据进行加密,这样,假如任何入侵者能够突破云提供商的安全防
护措施,或者假如某个配置错误使得未经授权的人能够访问到该数据,数据就不会被破译。
·?? 对传送中的数据进行加密。设想数据将通过公用基础设施进行传递,并且可
能会被其间的某些人看到。
·?? 要求在应用程序组件之间进行严格的身份验证,因而只把数据传送给已知接
受方。
·?? 注意加密方法以及如何破解算法并随时间的推移用新算法取代。例如,鉴于.
MD5 已证明容易受到攻击,那就使用一种像 SHA-256 这样的更加严密的加密技术。
·?? 对有权访问应用程序的人以及访问方式进行管理:
·?? 考虑让管理员使用严密的、基于令牌的身份验证技术。
·?? 对于客户登录/密码访问,考虑什么人管理身份验证服务器,以及访问是否在相应公司或云提供商的控制之下。
云计算架构介绍Sun 公司·?? 对于匿名访问存储器,例如,匿名 FTP,考虑客户是否必须通过云提供商进行注册后才能访问,或云提供商是否可以与公司的身份验证服务器联合起来。良好的安全做法贯穿于系统设计、实现和部署的各个方面。应用程序的设计必须是安全的,其接口只能给授权用户提供相应的数据。实现期间,开发人员必须认真避免可能导致易受如下技术攻击的编码做法:缓冲器过载 (Buffer Overflow).或 SQL 注入 (SQL 注入)。部署时,应对操作系统进行硬化,并用最新安全补丁对软件各层进行及时更新。在云计算中,应用程序部署在一个共享的网络环境中,而且使用非常简单的安全技术 (例如,VLAN 和端口过滤,对应用程序部署架构的各层进行分割和保护,并把客户彼此隔离开来。其中一些网络安全方法包括:·?? 使用安全域把虚拟机组合在一起,然后通过云提供商的端口过滤功能控制对域的访问。例如,创建一个用于前端 Web 服务器的安全域,对外部世界只打开 HTTP 或 HTTPS 端口,并过滤从 Web 服务器安全域到包含后端数据库的域的流量 (图 11)。
图.11..云提供商应提供安全机制 (如安全域) 来保护一组虚拟机的安全,并控制流入和流出该组的通信流量。·?? 使用云提供商的基于后端的过滤来控制流量,或者通过在适当的地方插入内容交换机或防火墙设备来利用更加有状态的数据包过滤。为了对流量实现更
加严密的控制,可以采用不可变服务容器 (ISC) 这一概念,它允许在单个虚拟机中部署多个软件层,并采用仅限虚拟机内部使用的预探测联网。此技术使用 Solaris? Zones 在单个共享式 OS 平台上支持多个安全虚拟环境,并且只能使用 Solaris 操作系统和 OpenSolaris 操作系统。
24 云计算架构介绍Sun 公司第 4 章十几年来,Sun 公司一直致力于推动构成云计算基础的大型计算基础设施的技术进步。早在 20 世纪 90 年代,Sun 公司就已成为帮助服务提供商实现其大型网络的领先者,使他们可以向数以百万计的客户提供服务。金融机构和股票交易所利用大量 Sun 服务器处理各种任务:从处理交易到实施欺诈检测。Sun 公司通过开发一次一架 (Rack-at-a-Rack) 的部署模式、从光金属到应用程序的自动供应 (Automatic Provisioning),以及具有每秒一 PB (Petabit) 吞吐量的大型虚拟网络,已经成为高性能计算行业的领先者。的确,通过按小时销售物理服务器时间,并帮助客户实现内部网格以支持其自己的业务活动,Sun 公司是云的前辈“网格计算”当之无愧的开拓者。
就像这些大型计算能力有助于 Sun 公司开发云计算解决方案一样,上述能力也有助于改善这些解决方案所需的系统品质:可扩展性、可用性、可靠性、易管理性和安全性。Sun 公司开发出用于云计算的基础性技术,并已成为这些技术所促成的社区开发流程的主要参与者。Sun 公司在长期保持 Solaris 操作系统的行业领先地位的同时,还围绕 OpenSolaris 操作系统发起一个相应的开放源运动。MySQL.数据库是首选的.Web.应用程序数据库,而 Java 编程语言驱动着全世界的网站和企业数据中心。基于社区的开放源 GlassFish 应用程序服务器提供一个 Java 软件执行容器,它已扩展为支持 Ruby 应用程序和 Drupal 内容管理系统。OpenSolaris Project Crossbow 已帮助扩展了 Sun xVM 管理程序中的多重租用支持。
在 Sun 公司大力促进的丰富而得到社区支持的软件下面,是使这些软件正常运行的功能强大的服务器、存储和网络产品,其中包括标准的可扩展 x86 架构服务器、Sun 公司 UltraSPARC? 处理器驱动的服务器产品线,以及包含 Sun 公司的高效率、芯片多线程 (CMT) UltraSPARC T1、T2 和 T2 Plus 处理器的服务器。Sun 公司.CMT.处理器处理高吞吐量工作负荷如此高效,以至于它们在各种内容负载平衡和应用程序提供产品 (如 Zeus 可扩展流量管理器) 中得到广泛应用。Sun 公司的开放式存储产品把开放源软件与行业标准的硬件结合起来,帮助减轻对高价位的专用型系统的依赖性。实际上,Sun 公司具有突破意义的 Sun Fire X4500 服务器帮助整个行业看到了把服务器和存储技术合并到同一系统中的优势。Sun 公司通过 InfiniBand 向采用 Sun Datacenter Switch 3456 (扩展到多达 13,834 个节点) 的大型计算网格,提供用于大型计算的虚拟网络技术。
云计算架构介绍Sun 公司与一个社区合作创造出基于开放式标准的产品,并有助于提供投资保护。在一个像云计算这样的快速变化的新兴市场里,创建由于使用专有 API 和格式而被限制在一个供应商的云中的应用程序非常容易。使用开放式标准和开放源软件可以最有效地保证:您现今创建的应用程序将来仍会有用,并将赋予您更换云提供商所需的灵活性。Sun 公司所参与的开放源社区开发他们所采用的开放标准,并且在开发出新产品时制定新的开放式标准。开放源、开放标准和开放.API.产生具有更大可移植性和使用寿命的应用程序。Sun 公司的开放源社区凭证是无懈可击的,其项目包括:OpenSolaris OS、Linux OS、StarOffice? 软件、NetBeans? 平台应用程序框架、OpenSPARC? 技术、Java 编程语言、Sun xVM 管理程序、Sun xVM VirtualBox、Sun 开放式存储解决方案、MySQL 数据库管理系统以及 Solaris ZFS? 文件系统。Sun 公司的硬件和软件产品线与精品同义。Sun 公司提供对于基于 x86 架构的服务器的广泛选择余地,这些服务器由功能强大的 SPARC? 和 UltraSPARC 处理器所驱动,并且采用了 CoolThreads? 技术。Sun 公司提供上述各种形式的选择,包括机架式和刀片式系统,为客户提供各种密度和 I/O 容量选择。Sun 公司为其各个服务器产品都提供虚拟化解决方案,包括在其.x86.架构服务器上支持 Sun xVM 管理程序、VMware vSphere 和 Microsoft Hyper-V,当然也包括您也可以选择操作系统,这包括 Solaris OS、Linux 和 Microsoft Windows。Sun 公司创新是云计算环境的基础,而云计算环境具有开放性,基于标准,且是社区成员共同努力的结果。加入 Sun 公司云计算社区就意味着您可以选择采用可发挥最大作用的服务器、存储和联网技术。这同时也意味着可以使用不为某个云提供商所拥有的软件栈、API 和标准,而是属于构建其云应用程序以拥有持久价值的公司。Sun 公司提供多种选择,这不仅仅是使用恰当硬件和软件组件完成工作任务方面的选择,而且包含利用云计算技术实现最大效益方面的选择。.那些为了云计算加入 Sun 社区的机构可以拥有多种选项。Sun 公司可帮助各种机构构建自己专用的本地云,以便于将企业数据中心过渡到这种新的计算
模式,同时保留对关键业务数据的绝对控制权。Sun 公司可帮助各种公司构建自己专用的非本地云,以便于利用成本低廉的新型大规模高效托管场所,例如,Switch Communications 公司的位于内华达州拉斯维加斯的 SuperNAP 托管设施。Sun 公司可以为那些希望成为云提供商的机构提供帮助,供应所需的硬件、软件和管理能力。而且,从现在开始,世界各地的机构都可以利用 Sun 公司公用云产品扩大其专用云—可以与 Sun 公司共同位于 SuperNAP 站点,并享有高速度本地基础设施所带来的优势,也可以使用 Sun 公司在互联网上提供的
服务。无论是您在寻找用于开发和测试的云计算,寻求体验在云中托管应用程序,卸载特定功能,还是将云用于超负荷计算,Sun 公司都可以得心应手地帮助企业构建并利用云计算。
本白皮书的完成主要归功于 Jason Carolan 和 Steve Gaede 的努力。其他做出贡献的人士还包括 James Baty、Glenn Brunette、Art Licht、Jim Remmell、Lew Tucker 和 Joel Weise。此外,还要感谢 Benoit Chaffanjon、David Douglas、Mikael Lofstrand、Ken Pepple、Scott Mattoon 以及 John Stanford 所提出的宝贵意见。
本页故意留空。
第二篇云计算架构图:云计算的架构图
一、云计算概述
云计算到底是什么呢?在这个问题上,可谓众说纷纭。比如,在维基百科上的定义是“云计算是一种基于互联网的计算新方式,通过互联网上异构、自治的服务为个人和企业用户提供按需即取的计算”;著名咨询机构 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-2. 云计算分类与PaaS元素之间关系的图形化解释
既然理解了计算平台的概念,现在就来看看什么是解决方案堆。解决方案堆由应用程序组成,这些应用程序有助于开发过程和应用程序部署。这些应用程序是指操作系统、运行时环境、源代码控制存储库和必需的所有其他中间件。
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种主要的云计算模式。
参考文献:
云计算的架构:http://www.uml.org.cn/yunjisuan/201304171.asp
云计算服务模型第1部分(基础架构即服务):http://www.ibm.com/developerworks/cn/cloud/library/cl-cloudservices1iaas/index.html
云计算服务模型第2部分(平台即服务):http://www.ibm.com/developerworks/cn/cloud/library/cl-cloudservices2paas/index.html
云计算服务模型第3部分(软件即服务):http://www.ibm.com/developerworks/cn/cloud/library/cl-cloudservices3saas/index.html
第三篇云计算架构图:云计算体系基本架构
什么是云计算?
云计算(Cloud Computing ):是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。是指基于互联网的超级计算模式--即把存储于个人电脑、移动电话和其他设备上的大量信息和处理器资源集中在一起,协同工作。在极大规模上可扩展的信息技术能力向外部客户作为服务来提供的一种计算方式。
云计算综述
数据在云端:不怕丢失,不必备份,可以任意点的恢复 ;
软件在云端:不必下载自动升级 ;
无所不在的计算:在任何时间,任意地点,任何设备登录后就可以进行计算服务;
无限强大的计算:具有无限空间的,无限速度。
云计算六种服务方式
SAAS( Software as a Service ) ;
PAAS( Platform as a Service ) ;
IAAS( Infrastructure as a Service );
云存储;
MSP(管理服务提供);
商业服务平台 。
云计算体系结构
云计算的基本原理是通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将更与互联网相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。
云计算体系特点
通过Internet接入
不需要自身具有IT技术来实施
第三方提供
资源共享
无多余功能开发
无多余费用
系统延续性好






