分享

平台层的基本功能和设计介绍

 文摘宝藏 2015-09-08

摘要:平台层是运行于基础设施展之上的一个以软件为核心,为应用服务提供开发、运行和管控环境即中间件功能的层次。基础设施展所要解决的是IT资源的虚拟化和自动化管理问题,而平台层需要解决的是如何基于基础设施层的资源管理能力提供一个高可用的、可伸缩的且易于管理的云中间件平台。从云架构而言,平台层位于基础设施层与应用层之间,它利用基础设施层的能力,面向上层应用提供通用的服务和能力。本节介绍平台层的基本功能和设计。

  1。平台层概述

  平台层面向云环境中的应用提供应用在开发、测试和运行过程中所需的基础服务,包括Web和应用服务器、消息服务器以及管理支撑服务如应用部署、应用性能管理、使用计量和计费等。平台层所提供的服务是在云计算环境中开发、测试、运行和管理应用服务所需的基本功能。

  平台层以平台软件和服务为核心,用户通过相应的编程模型和ApI来建立应用和发布。由于平台软件和服务的多样性,以及用户对平台的需求和使用方式上的不同,平台层在理念、客户定位和实现方式上也会存在差异。

  关于所支持的编程模型,平台层可以基于标准编程模型,也可以基于自定义编程标准。基于标准编程模型可以降低用户的使用门槛,并且可以使得原有的系统更容易地迁移到云平台上,比如在Google App Engine中,可以直接使用J2EE模型进行Web编程。某些云平台为了更好地强调某类云计算中的特殊问题而采用了自定义的编程模型,比如force.com为了更好地支持多租户技术而自已定义了Apex编程模型。特别要指出的是,随着云计算技术的发展,平台层中会出现越来越多的其他有别于传统中间件的服务,比如半结构化的大规模存储服务,非SQL的数据库服务等,这些都会进一步丰富云应用的开发工具和手段。

  在传统的应用开发中,用户需要花费大量时间和工作来进行软件堆栈(即中间件)的选型、定制和部署,在云平台上,这部分的工作将由云平台根据应用的需求和特点自动完成。我们可以看到,在Google App Engine和force.com这样的云平台上,用户不再需要手动地选择自己所需要的Web容器和数据库产品以及对管理功能的选择和扩展。用户更多地是针对应用的特点,对诸如运行时QoS需求,伸缩策略或者部署方式等应用的参数进行指定和配置,平台层可以根据应用的相关配置自动提供支撑应用的中间件资源以及在运行时进行自动的负载平衡、伸缩控制和SLA优化等。

  通常的企业客户维护着大量现存的应用。企业客户在选择云平台运行其应用时,需要考虑两个方面:1)平台层技术如何能够帮助企业已有的软件平台进行转型,并使企业在管理的有效性和成本方面从该转型中受益;2)企业在选择应用软件产品时有其特定的需求,而这些特定的需要对平台层的能力提出了要求,云平台应该能够满足这样的要求。云平台技术的发展将会更加贴近客户的多样化需求。

  2 平台层的核仰功能

  开发、部署和维护是软件生命周期的几个关键环节。虽然目前已经有相应的辅助工具来提高软件开发速度、自动化测试流程、加速版本迭代,但是整个软件周期相对于动态变化的业务需求而言仍显得格外漫长。云计算的出现有望加速产品、服务和解决方案的交付速度。云架构中的平台层负责为用户的应用或更高层次的平台提供开发、运行和相关的环境,如图4.6所示,另外,平台层也需要按照应用的性能、流量和其他运行状态的变化,按需地提供底层资源。

  2.1 ·开发环境

  平台层对于在其上运行的应用来说,首先扮演的是一个开发平台的角色。一个开发平台需要清晰地定义应用模型,具备一套应用编程接口(API)代码库,提供必要的开发测试环境。一个完备的应用模型包括开发应用的编程语言、应用的元数据模型,以及应用的打包发布格式。基于平台层的僻决方案开发可以有两种模式:离线模式和在线模式,这两种开发模式体现了不同的平台层理念稠功能设置。

  在离线模式下,用户在本地的开发工具中进行解决方案的开发和测试,开发完成后远程部署到云平台上。目前支持离线模式的平台层一般是基于传统应用平台而构建的,因此应用可以使用流行的编程语言进行开发,如Google App Engine目前支持Python和Java这两种编程语言。即使平台层具有特殊的实现架构,开发语言也应该在语法上与现有编程语言尽量相似,从而缩短开发人员的学习时间。例如Force.com使用的是自有编程语言Apex,该语言在语法和符号表示上与Java类似。元数据在应用与平台层之间起着重要的接口作用,比如平台层在部署应用的时候需要根据应用的元数据对其进行配置,在应用运行时也会根据元数据中的描述为应用绑定平台层服务。应用的打包格式需要指定应用的源代码、可执行文件和其他不同格式的资源文件应该以何种方式进行组织,以及这些组织好的文件如何整合成一个文件包,从而以统一的方式发布到平台层。平台层所提供的软件开发库(SDK)和其API对于应用的开发至关重要。SDK库是平台层为在其上开发应用而提供的统一服务,如界面绘制、消息机制等。定义清晰、功能丰富的SDK库能够有效地减少重复工作,缩短开发周期。

  另一种开发模式是在线模式,用户可以根据云平台的标准在线开发和部署自己的应用。在线开发的一个好处是用户不需要在本地安装,配置和维护开发环境,能够有效地降低企业在开发环境方面的成本。某些在线的开发环境允许用户将自己的产品打包成插件并上传到云中,然后将这些插件组装成不同的解决方案并根据需要进行客户化定制,在开发完成后能够将整个解决方案自动化部署到运行环境中。   

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多