打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Cloud Foundry:第一个开源Platform as a Servic

Cloud Foundry:第一个开源Platform as a Servic

文字大小: [大] [中] [小]  发表时间:2012-01-16 00:40  作者:admin
  摘要 本文介绍了VMware近期新推出的一个开源PaaS项目:Cloud Foundry。PaaS是Platform as a Service的缩写,意思是平台即服务。PaaS将软件部署,运行和维护整合成一种服务,以SaaS (Software as a Service 软件即服务) 的模式提交给开发人员。开发人员可以快速地在其上进行软件开发部署,运行和扩展,而不用去搭建和维护硬件设施,安装软件中间件。将开发人员从软件部署,运行和维护软件的工作中解脱出来。本文指出了现代软件系统的新特点及遇到的挑战,介绍了PaaS的概念、Cloud Foundry的架构,分析了Cloud Foundry与业界现有几款PaaS相比的优点。最后,对PaaS未来的发展方向做了展望。
  关键词 PaaS;Cloud Foundry;软件部署
  中图分类号TP31 文献标识码A 文章编号 1674-6708(2012)58-0154-03
  1 软件开发新特点及挑战
  最近几年来新的软件开发框架如雨后春笋般不断地涌现出来,例如Spring,Node.js,Ruby on Rails,Scala等。它们大大提高了软件开发效率,缩短了软件从开发到推向市场的时间。软件也不再仅仅运行在PC或者服务器上,而有可能运行在虚拟化环境中,在共有云或私有云里。数据呈现爆炸式增长,传统的数据解决方案在新的数据类型和海量数据面前无能为力,于是出现了众多NoSQL数据解决方案,如Hadoop,MongoDB等。
  软件系统变得越来越复杂,系统中有多种不同角色的节点,如应用程序服务器,消息服务器,数据库服务器,缓存服务器等。节点之间的通信连接十分复杂。
  部署和维护庞大的软件系统成为一项繁杂的工作。如何快速地部署系统,如何扩展升级系统,当有错误发生时,如何将系统回滚到健康状态,如何保证系统能24×7×365 地运行都是亟待解决的问题。
  2 PaaS为何物
  PaaS是Platform as a Service的缩写,意思是服务即平台,将软件部署,运行和维护整合成一种服务提供给开发人员。PaaS随着云时代的到来应运而生,颠覆了传统的软件开发,部署,运行和维护的理念。
  在传统的软件开发流程中,为了运行软件系统,开发团队需要向IT部门申请购买硬件服务器,安装操作系统,安装数据库和相应的软件中间件,配置网络,部署配置软件系统,对其进行扩展升级。这些工作通常要占到整个软件开发周期的30%,而且经常需要IT部门工作人员的配合才能完成。
  开发人员的主要职责是开发软件系统,而不是维护基础设施。他们想要的是一个简单易用的平台。当软件开发完成时,只需执行几行简单的命令就可以简单快速地部署,运行软件系统。
  PaaS可以将开发人员从这些繁琐的工作中解脱出来,让开发人员更专注于软件开发本身。PaaS是一个基础平台,向下对硬件资源进行了封装,根据实际需要调用硬件资源。向上对使用者提供例如运行环境,数据库,消息,虚拟操作系统等服务。可以把PaaS看作一个集成的软件堆栈,应用程序执行引擎,资源分配器。PaaS提供自助式的服务,开发者可以轻易地将软件部署在PaaS平台上,并对其进行管理。
  3 Cloud Foundry
  Cloud Foundry是VMware发布的业内第一个开源PaaS项目。Cloud Foundry目前支持Spring Java,Rails,Sinatra for Ruby,Node.js,也支持其他基于JVM的框架,如Groovy,Grails和Scala。提供消息服务,如RabbitMQ,数据服务,如MySQL,Mongo DB,Redis。还有一些其他服务,如GemFire等。Cloud Foundry的架构如图3。
  从图3可以看到,Cloud Foundry由以下几大模块组成:
  1)Router模块
  Router模块在Cloud Foundry中是对所有进来的请求进行路由。进入Router的请求主要有两类:第一类来自Cloud Foundry使用者,也就是开发人员发出的管理型指令。例如列出所有的应用,部署一个应用,或者删除一个应用。这类请求会被路由到App Life Management组件。第二类是用户对你所部署的应用的访问请求。这部份请求会被路由到DEAs的组件去。所有进入Cloud Foundry系统的请求都会经过Router组件。
  Router组件是对nginx的一个封装。nginx是一个轻量级,高性能的Web服务器和反向代理服务器。当一个外部HTTP请求进来时,由nginx接受,nginx通过sock与router.rb进行交互。router.rb根据传入的URL,用户名,密码等进行判断。到App Life Management组件或者DEA组件取数据。简单地说router.rb对nginx进行了逻辑封装。
  2)Cloud Controller模块
  Cloud Controller模块,是Cloud Foundry的管理模块。它与命令行工具VMC和STS(SpringSource Tool Suite)交互采用的是RESTfull接口。它的主要工作是应用程序的增删改读,启动,停止应用程序,把一个应用程序打包成Droplet,修改应用程序的运行环境等。
  3)DEA模块
  DEA(Droplet Execution Agency)模块是应用程序执行引擎。Droplet是一个由提交的源代码,Cloud Foundry里配置好的运行环境,再加上一些如Start/Stop等管理脚本,压缩在一起的tar包。制作这个包的过程叫做StagingApp。Cloud Foundry会保存这个Droplet在 NFS中。Cloud Controller模块发来start/stop等命令时,dea.rb接受这些请求,从NFS中找到相应的Droplet并拷贝一份,解压并执行里面的脚本。如果开发人员想运行十个例程,那么这个Droplet就会被复制十分,由十个DEA服务器来运行。
  4)NATS模块
  NATS是一个轻量级的,支持发布、订阅机制的消息系统。Cloud Foundry是基于多个模块的分布式系统,支持模块自我发现,错误检测,而且模块间耦合低,其核心原理就是基于消息发布订阅机制。每个模块会根据需要向NATS发布相应的消息,同时订阅自己需要的消息。例如,一个DEA被加入到Cloud Foundry集群中,它会向NATS发布一个主题为dea.start的消息:
  NATS.publish(“dea.start”, @dea_info)
  dea_info中包含了DEA的一些信息,例如UUID,IP地址,端口号等等。
  5)Health Manager模块
  Health Manager负责检测系统运行状态的检测,Health Manager从DEA里面获取应用程序的运行信息,进行统计分析。统计数据会与Cloud Controller设定指标进行比较,使系统可以自我管理,自我预警。
  6)Service模块
  该模块是一个独立的、可Plug-in的模块。开发人员可以把自己需要的服务整合入Cloud Foundry生态系统中来。目前Cloud Foundry支持数据服务,消息服务等。(责任编辑:王编)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
深入 Cloud Foundry(一)构架
VMware带着Cloud Foundry来到中国
SAP BTP 平台 CloudFoundry 环境入门级别的介绍
什么才是整个GE Predix的核心?关于Predix的五大误解
选Docker,还是PCF?这是一个问题
SaaS +PaaS更易成功
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服