3 云计算架构介绍Sun 公司
虚拟化是此模式的一个关键特性。早在几年前,IT 机构就已经明白虚拟化使他们可以方便快捷地创建已有环境的副本—有时涉及多个虚拟机—来支持测试、开发和分级 (Staging) 活动。这些环境的成本极小,因为它们几乎不使用什么资源,因而可以与生产环境共处于同样的服务器之上。.
同样地,可以在已有服务器上的新虚拟机中开发和部署新应用程序,在互联网上开放使用,并且在应用程序在市场上取得成功时进行扩展。这种轻便的部署模式已经产生一种“进化式”(Darwinistic) 业务开发方法,其中,软件的 Beta 版是对公众开放的,而且由市场决定哪些应用程序值得进一步扩展和开发,或者静静地报废。
云计算通过自动化扩大了这一趋势。不是与 IT 机构洽谈购买用来部署应用程序的资源,计算云是一个自助式命题,其中,一张信用卡即可购买计算周期,而且可以使用 Web 接口或 API 创建虚拟机,并在虚拟机之间建立网络关系。云不需要与 IT 机构或服务提供商签订长期服务合同,而是按照根据使用情况付费或按 Sip 付费 (Pay-by-the-Sip) 的模式运作,在这种模式下,一个应用程序可能为运行一项作业几分钟或几小时而存在,也可能为长期向客户提供服务而存在。构建计算云时就好像应用程序是临时的,而计费是按照资源消耗情况进行的:使用的 CPU 小时数、移动的数据量或存储的数据的千兆字节 (GB) 数。
使用和仅对使用的资源付费的能力,把购买多少基础设施的风险,从开发应用程序的机构转移给云提供商。这种能力还把架构决策的责任从应用程序架构设计师转移给开发人员。这种转移会增大风险,即出于某种原因制定了流程的企业必须控制的风险,以及系统、网络和存储架构设计师需要把云计算设计包括在内的风险。
基础设施是可以编程的这种架构责任的转移产生重要的后果。过去,架构设计师确定一个应用程序的各种组件如何在一组服务器上进行布局,即如何连接、固定、管理和扩展这些组件。现在,开发人员可以使用云提供商的 API 不仅在虚拟机上创建应用程序的初始结构,而且还确定该应用程序如何扩展和演进以适应工作负荷的变化。.看看下面这个类比:历史上,使用 Java 编程语言编写软件的开发人员确定何时适合创建使多项活动同时推进的新线程。现在,开发人员可以同样轻而易举地发现和连接一项服务,使它们可以将一个应用程序扩展到这样一个高度:该应用程序可使用成千上万个虚拟机来适应需求激增情况。
动态编写应用程序架构的程序的能力使开发人员拥有了巨大权力,同时也承担相应大的责任。要最有效地使用云计算,开发人员还必须是架构设计师,而且该架构设计师需要能够创建自我监控和自我扩展的应用程序。该开发人员/架.构设计师需要清楚何时适合创建一个新的线程 (而不是何时创建一个新的虚拟机) ,并创建如何把它们相互连接起来的架构模式。
有关如何完成这一壮举的说明,请访问:http://open.blogs.nytimes.com/2007/11/01/self-service-prorated-super-computing-fun/01/self-service-prorated-super-computing-fun/
4 云计算架构介绍Sun 公司
一旦很好地理解并利用这种能力,结果将会是蔚为壮观的。一个已经具有传奇色彩的故事是 Animoto 的聚合工具,该工具从一组映像和音乐中创建一个视频。该公司的应用程序在仅仅三天时间里从 50 台服务器扩展到 3500 台服务器,这部分是因为一个使该应用程序能够容易地扩展的架构。为了达到这一目的,该应用程序必须设计为可以水平扩展、具有有限的状态,并且通过云 API 管理自己的部署。对于每个像这样的成功案例,都可能会成为一个相似的故事:其中该应用程序不能自我扩展,而且无法满足消费者的需求。这种从开发人员到开发人员/架构设计师的转移的重要性是无法理解的。
看看您的企业数据中心是否能够以这么快的速度将一个应用程序扩展为适应如此快速增加的工作负荷,以及云计算是否可以测量您的当前能力。应用程序是组合在一起的,而且设计为可以组合的这种自助式、按使用情况付费的模式的另一个后果是,就像编写应用程序一样,通过汇编和配置设备和开放源软件来组合应用程序。可以重构 (Refactor) 以最大限度地利用标准组件的应用程序和架构,是那些将会在利用云计算效益方面最为成功的应用程序和架构。同样地,应用程序组件应设计为可以组合的,这种组合是通过将应用程序构建的易于使用来实现。这要求具备简单而明确的功能以及精心编写文档的 API。构建大型完整应用程序已成为过去,因为可直接使用或根据特定用途定制的现有工具库已经变得越来越大。
例如,像 Hadoop (一种开放源 MapReduce 架构实现) 这样的工具可以在多种情况下使用,其中可以对一个问题及其数据进行重构,以便于其多个部分可以同时执行。当《纽约时报》想将其档案中 1100 万份文章和映像转换成为 PDF 格式时,其内部 IT 机构说这会需要七个星期时间。同时,使用 100 个运行 Hadoop 的 Amazon EC2 简单 Web 服务接口实例的一名开发人员,用 24 小时时间就完成了这项工作,劳动成本只有 300 美元。(这不包括上载数据所需的时间或存储成本。)
甚至大型企业都可以使用云计算,用来以比传统企业计算更少的时间和成本解决重大问题。
Web 应用程序部署示例举一个虚拟化与自助服务结合在一起如何促进应用程序部署的示例,看看如何在云中进行一次二层 Web 应用程序部署 (图):
1. 开发人员可以从一个预配置虚拟机映像库中选择负载平衡器
(Load Balancer)、Web 服务器和数据库服务器设备。
2. 开发人员配置每个组件以制作一个自定义映像。配置负载平衡器,通过将
静态内容上载到存储云来给 Web 服务器填充这些内容,并用站点的动态内容来填充数据库服务器设备。3. 开发人员把自定义代码层叠在新的架构之中,从而使组件满足特定应用程
序要求。
5 云计算架构介绍Sun 公司
4. 开发人员选择一个呈现各层映像并部署这些映像的模式,以便于处理网
络、安全和可扩展性问题。
图.1..以基于云的部署形式将应用程序部署到一个二层 Web 服务器架构模式的示例。
5. 安全而高度可用的 Web 应用程序启动并正常运行。当需要更新应用程序
时,可以在开发-测试-生产链之间对虚拟机映像进行更新、版本控制和复制,并且可以重新部署整个基础设施。云计算假定一切都是临时的,而且重新部署整个应用程序就像手动修补一组具体的虚拟机一样容易。在此示例中,虚拟机映像的抽象性质支持一种组合式应用程序开发方法。通过重构该问题,可以使用一组标准的组件来快速部署应用程序。借助此模式,可以迅速满足企业的业务需要,而不需要对服务器、存储和网络基础设施进行耗时的人工购买、安装、布线和配置工作。
通过网络提供服务不言而喻,云计算扩大了通过网络提供服务的已有趋势。几乎每个商业机构都认可与其应用程序的连接的基于 Web 的接口的价值,不管是否通过互联网向客户提供应用程序,也不管它们是否是可供授权员工、合作伙伴、供应商和咨询人员使用的内部应用程序。当然,基于互联网的服务提供的美妙之处就在于可以随时随地使用应用程序。.
尽管企业都清醒地认识到利用安全套接字层 (SSL) 以及严格验证技术来确保通信安全的能力,但在云计算环境中引入信任还需要认真考虑企业计算和云计算之间的区别。如果架构设计的合理,互联网服务提供模式可提供各种规模的企业所需的灵活性和安全性。
开放源软件的作用开放源软件在云计算中发挥着一种重要的作用,因为开放源软件允许从容易访问的组件创建其基本软件元素:虚拟机映像和设备。这会产生巨大的影响:
6 云计算架构介绍Sun 公司
??? 例如,开发人员可以通过将 MySQL 软件层叠在一个 OpenSolaris? 操作系统上并执行自定义来创建一个数据库设备 (图 2)。像这样的设备能够根据需要创建、部署和动态扩展云计算应用程序。例如,看看开放源软件如何使.Animoto 创建的应用程序在几天之内就扩展到 3500 个实例。
?????????
????????Ё???????
?????????图.2..可以通过把开放源软件层叠在一个虚拟机映像之中,并执行简化其部署的自定义,来创建设备。在此示例中,通过把 MySQL 软件层叠在 OpenSolaris 操作系统上来创建一个数据库设备。
??? 由于用开放源组件汇编大型应用程序非常容易,因而生成更多开放源组件。这反过来又使开放源软件的作用更加重要。例如,需要拥有一种可在云计算环境中运行的 MapReduce 算法,这就是刺激开发该算法的因素之一。既然创建了工具,就可以用它来进一步提高开发人员编写云计算应用程序的水平。
云计算基础设施模式当从一个标准企业应用程序部署模式向一个基于云计算的应用程序部署模式.转变时,云计算架构设计师需要考虑许多问题。有的公用云和专用云提供互补的优点,有三种基本服务模式需要考虑,并且需要对比开放 API 和专有 API 的.价值。
公用云、专用云和混合云IT 机构可以选择在各有其取舍的公用云、专用云或混合上部署其应用程序。公用、专用与混合这几个术语并不规定位置。公用云一般就在互联网上,而专用云通常在建筑物内,还有可能设在主机托管场所。.
企业可以就选用哪种云计算模式考虑多种因素,而且有可能选用不只一种模式来解决多种不同问题。如果是临时需要的应用程序,可能最适合在公用云上部署,因为这样可以避免为了临时的需要而购买额外设备的情况。同样地,永久使用或对服务质量或数据位置有具体要求的应用程序,最好在专用云或混合云上部署。
7 云计算架构介绍Sun 公司
公用云.公用云由第三方运行,而不同客户提供的应用程序可能会在云的服务器、存储系统和网络上混合在一起 (图 3)。公用云通常在远离客户建筑物的地方托管,而且它们通过提供一种像企业基础设施进行的灵活甚至临时的扩展,提供一种降低客户风险和成本的方法。.
如果在实施一个专用云时牢记性能、安全性和数据保存位置,那么,该云中运行的其它应用程序的存在应对云架构设计师和最终用户都是透明的。的确,公用云的优点之一是,它们可以比一个公司的专用云大很多,因而能够根据需要进行伸缩,并将基础设施风险从企业转移到云提供商.—.哪怕仅仅是临时性的。可以将公用云的部分划出去,以便于独占单个客户端,从而产生一个虚拟专用数据中心。虚拟专用数据中心不是仅限于在公用云中部署虚拟机映像,而是使客户在更大程度上清楚地了解其基础设施。现在,客户不仅可以处理虚拟机映像,而且可以处理服务器、存储系统、网络设备和网络拓扑。利用位于同一场所的所有组件创建一个虚拟专用数据中心,有助于缓解数据位置问题,因为当在同一场所内连接资源时,带宽非常充足,而且一般都可用。.
图.3..公用云向多个客户提供服务,而且,一般在主机托管场所进行部署。
专用云专用云是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制 (图 4)。该公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。专用云可部署在企业数据中心中,也可以将它们部署在一个主机托管场所。.
《云计算基础设施和体系架构指南》
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)