技术开发 频道

开源云计算平台架构介绍(一)

  第 2 章 云计算的性质

  扩大已形成的趋势

  云计算推动降低服务提供成本的已有趋势,同时提高部署服务的速度和敏捷性。它缩短了从设计应用程序架构到实际部署应用程序的时间。云计算把虚拟化、按需部署、网上服务提供和开放源软件融合在一起。从一种观点看,云计算并非新生事物,因为它使用既有的方法、概念和非常好的做法。而从另一种观点看,一切都是新的,因为云计算变革我们发明、开发、部署、扩展、更新、维护和支付应用程序以及运行应程序的基础设施的方式。在本章中,我们考查上述趋势,以及这些趋势是如何成为云计算的性质的核心的。

  将虚拟机作为标准部署对象

  在过去几年时间里,虚拟机已成为一种标准部署对象。虚拟化进一步增强了灵活性,因为它把硬件概括到这样一个高度:在硬件上面,可以在不需要连接具体物理服务器的情况下部署和重新部署软件栈。虚拟化实现了一个动态数据中心,其中的服务器提供一个包含可根据需要使用资源的资源池,而且,其中的应用程序与计算、存储和网络资源的关系可动态变化,以适应工作负荷和业务需求。由于应用程序部署与服务器部署相分离,因而可以快速部署和扩展应用程序,而不必首先购置物理服务器。

  虚拟机已成为流行抽象概念.—.和部署单位.—.因为它们是服务提供商和开发人员之间的最小公分母连接体。把虚拟机用作部署对象足以适应 80 % 的使用情况,而且这将有助于满足快速部署和扩展应用程序的需要。

  虚拟设备 (包含软件的虚拟机,这些软件部分或全部地配置为执行像 Web 服务器或数据库服务器这样的特定任务) 进一步增强了快速创建和部署应用程序的能力。把虚拟机和设备作为标准部署对象组合在一起是云计算的关键特性之一。计算云通常由存储云进行补充,存储云通过 API 提供虚拟化存储,而这些 API 为存储虚拟机映像 (Image)、用于诸如 Web 服务器的组件的源文件、应用程序状态数据以及一般业务数据,提供便利。

  按需、自助、以使用情况付费的模式

  云计算的按需、自助和以使用情况付费的性质也是已有趋势的一种延伸。从企业的观点看,云计算的按需性质有助于支持服务水平目标的性能和容量方面。云计算的自助性质使机构可以创造根据工作负荷和目标性能参数进行扩展和收缩的弹性环境。而且云计算的按使用情况付费的性质可以采取设备租赁的形式,设备租赁保证了云提供商提供一种最低的服务水平。

  虚拟化是此模式的一个关键特性。早在几年前,IT 机构就已经明白虚拟化使他们可以方便快捷地创建已有环境的副本—有时涉及多个虚拟机—来支持测试、开发和分级(Staging)

  活动。这些环境的成本极小,因为它们几乎不使用什么资源,因而可以与生产环境共处于同样的服务器之上。

  同样地,可以在已有服务器上的新虚拟机中开发和部署新应用程序,在互联网上开放使用,并且在应用程序在市场上取得成功时进行扩展。这种轻便的部署模式已经产生一种“进化式”(Darwinistic) 业务开发方法,其中,软件的 Beta 版是对公众开放的,而且由市场决定哪些应用程序值得进一步扩展和开发,或者静静地报废。

  云计算通过自动化扩大了这一趋势。不是与 IT 机构洽谈购买用来部署应用程序的资源,计算云是一个自助式命题,其中,一张信用卡即可购买计算周期,而且可以使用 Web 接口或 API 创建虚拟机,并在虚拟机之间建立网络关系。云不需要与 IT 机构或服务提供商签订长期服务合同,而是按照根据使用情况付费或按 Sip 付费 (Pay-by-the-Sip) 的模式运作,在这种模式下,一个应用程序可能为运行一项作业几分钟或几小时而存在,也可能为长期向客户提供服务而存在。构建计算云时就好像应用程序是临时的,而计费是按照资源消耗情况进行的:使用的 CPU 小时数、移动的数据量或存储的数据的千兆字节 (GB) 数。

  使用和仅对使用的资源付费的能力,把购买多少基础设施的风险,从开发应用程序的机构转移给云提供商。这种能力还把架构决策的责任从应用程序架构设计师转移给开发人员。这种转移会增大风险,即出于某种原因制定了流程的企业必须控制的风险,以及系统、网络和存储架构设计师需要把云计算设计包括在内的风险。

  基础设施是可以编程的

  这种架构责任的转移产生重要的后果。过去,架构设计师确定一个应用程序的各种组件如何在一组服务器上进行布局,即如何连接、固定、管理和扩展这些组件。现在,开发人员可以使用云提供商的 API 不仅在虚拟机上创建应用程序的初始结构,而且还确定该应用程序如何扩展和演进以适应工作负荷的变化。

  看看下面这个类比:历史上,使用 Java 编程语言编写软件的开发人员确定何时适合创建使多项活动同时推进的新线程。现在,开发人员可以同样轻而易举地发现和连接一项服务,使它们可以将一个应用程序扩展到这样一个高度:该应用程序可使用成千上万个虚拟机来适应需求激增情况。

  动态编写应用程序架构的程序的能力使开发人员拥有了巨大权力,同时也承担相应大的责任。要最有效地使用云计算,开发人员还必须是架构设计师,而且该架构设计师需要能够创建自我监控和自我扩展的应用程序。该开发人员/架.构设计师需要清楚何时适合创建一个新的线程 (而不是何时创建一个新的虚拟机) ,并创建如何把它们相互连接起来的架构模式。

  一旦很好地理解并利用这种能力,结果将会是蔚为壮观的。一个已经具有传奇色彩的故事是 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.开发人员把自定义代码层叠在新的架构之中,从而使组件满足特定应用程序要

  4.开发人员选择一个呈现各层映像并部署这些映像的模式,以便于处理网络、安全和可扩展性问题。

          版权声明:

  本文由上海爱可生信息技术有限公司根据甲骨文公司官方文档翻译整理而成,版权归属甲骨文公司,转载请保留此版权声明。

 

0
相关文章