前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >主流 PaaS 平台架构:谷歌GAE、AEB、Cloud Foundry、Heroku

主流 PaaS 平台架构:谷歌GAE、AEB、Cloud Foundry、Heroku

作者头像
博文视点Broadview
发布2020-06-11 15:59:51
6.3K0
发布2020-06-11 15:59:51
举报

公有 PaaS 平台并没有达成共识,没有统一应用的 PaaS 服务 API,因此不便于应用在各平台之间移植。谷歌、亚马逊与微软三大巨头在 PaaS 领域分庭对立,在强大的技术实力与基础资源的支撑下,构建了与自身文化相对应的公有云 PaaS 平台。相对于三大巨头,于2007 年起家的 Heroku,正是由于看到了大平台厂商对应用代码的“侵入性”,以及对开发人员的“绑架”,因而独辟蹊径地开发了一套可移植的 PaaS 平台。

除了用户可直接使用的公有云资源,商用的私有 PaaS 软件与解决方案也受到了企业 IT用户的追捧,其最大的优势是按照企业客户的要求定制化。老牌企业级Linux 服务提供商RedHat 公司也加入了这场私有 PaaS 市场份额争夺战,其产品依赖开源软件构件而成,利用其原操作系统产品在企业 IT 中的广泛应用,其运维支持团队长期深入企业 IT 一线,非常熟悉企业用户的痛点。另外要提及的一个企业级 PaaS 平台是由 VMware 公司构件的 Cloud Foundry,它是业界第一个开源云平台。

谷歌 GAE

GAE(Google App Engine)可让你利用谷歌的基础设施构建和运行应用程序。基于GAE 构建的应用程序能够非常容易地应对访问量、存储空间的变化。GAE 支持的编程语言包括 Java、Python、PHP、Go。它包括以下特性:

具有查询、排序与事物控制的持久化存储;

自动扩展和负载平衡;

用了执行额外任务的异步消息队列;

按照指定时间与规则执行任务的事件触发器;

可与其他谷歌云服务和 API 集成。

开发人员利用 GAE 简化了 Web 应用程序的开发和部署。下图是 GAE 上的 Web 架构简图,在这个架构中应用程序可以使用自动伸缩计算的资源,同时可集成分布式缓存、任务队列、数据存储等服务。GAE有自己的云平台 SDK库,使应用程序能快速地部署和运行到云上。

在这个架构下应用流量可被路由到多个版本以支持 A/B 测试。App Engine 相当于计算资源,它分为 service(面向用户)和 batch(后台任务)两类。AppEngine Memcache 在架构中是一个内存共享实例,充当缓存使用,我们可以将身份验证、会话信息等存放在这里来提升 Web 服务器性能。Task queues 提供了一种机制,将需要后端计算资源的任务保存到队列中继续等待,释放了前端在这些任务上的阻塞 I/O、连接,从而持续地为新用户请求提供服务。其负载均衡器支持网络的 3~7 层。DNS 服务可以用来管理自己的整个 DNS zone。

AEB

AEB(AWS Elastic Beanstalk)提供了一套在亚马逊云上部署与管理应用的简单方法。用户可以简单地上传应用程序包,AEB 会对应用程序包自动进行容量评估、负载均衡、自动伸缩及健康检查。

AEB 的组件包括如下几种。

1)Application

Application 是组件的逻辑集合,它包括了后面提到的 Environment 、 Version 和Environment Configuration,可以将一个 Application 看作一个目录。

2)Version

在 AEB 中,Version 代表一个 Web 应用的特定代码版本,它指向了亚马逊简单的存储服务上的一个对象,一般包含了可部署代码,比如 Java 的 war 包。应用可以包含多个Version,这些可部署代码由用户上传并打上了版本标签。在亚马逊云上,你可以在多个Version 间切换,以测试、验证版本间的不同。Version 存放在分布式对象存储区中。

3)Environment

Environment 是部署在 AWS 平台上的一个可运行的 Version,每一个 Enviroment 在一个时间点上只能运行一个 Version,但是你可以同时启动多个包含不同 Version 的 Enviroment,以测试它们之间的差异。在创建 Enviroment的时候,AEB就自动将资源分配给了特定的 Version。

AEB 的 Enviroment 有两种类型,一种是提供 HTTP 请求的 Web 服务,另一种是后台任务,这是依据分布式计算模型对 Enviroment 进行的划分,后面我们还会详细讲解这两种计算模型,以及不同的分布式处理方法。在 AEB 中,前者被命名为 Web Server Environment,后者被命名为 Worker Environment。

在 Web Server Environment Tier 架构中,Enviroment 是应用的核心。Web Server Enviroment 的架构示例如图所示。在创建一个 Enviroment 时,AWS Elastic Beanstalk 规定了运行应用所需的资源,下图的资源包括负载均衡器(Elastic Load Balancer)、一个自动伸缩功能组和多个 Amazon EC2 实例。

每个 Enviroment 的访问入口是一个 CNAME 域名,它被路由到负载均衡器的 IP 地址。图中的域名是 MyApp.elasticbeanstalk.com。在亚马逊云边界的最外端有一个功能强大的DNS 服务器,它会接收用户的域名查询工作,并将后端配置在负载均衡上的正常的服务 IP 返回给用户,在这里它提供了安全可靠的路由功能。负载均衡的后面是一组 Amazon EC2 实例,它们组成了一个自动伸缩功能组。自动伸缩功能将自动依据当前的负载情况启动冗余的 EC2 实例。随着负载的减少,自动伸缩功能会减少实例,但它会保持一个最小运行实例数目。

HM(Host Manager)是一个运行态的容器,在这个容器中包含了由用户定义的一组软件栈,例如我们定义了一个 Apache Tomcat 容器,这个容器使用 RedHat Linux 作为操作系统,安装了 Apache HTTPD 服务器和 Tomcat Java 应用服务器。每一个 Amazon EC2 相当于一个计算单元。

Security Group 为运行的 EC2 实例定义了防火墙策略,在默认情况下,AEB 只运行用户访问实例的 80(HTTP)端口,你可以依据业务类型定义更多的策略。

Cloud Foundry

Cloud Foundry 是由 VMware 贡献的一个开源 PaaS 项目,它是一个基于Ruby on Rails 的由多个相对独立的子系统通过消息机制组成的分布式系统,支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒内进行应用程序的部署和扩展。它是一个开源项目,没有专门的公有云环境可供使用,不像 GAE、AWS 的 PaaS 只需要关注应用代码, Cloud Foundry 需要企业的 IT 人员在自己的 IDC 或公有 IaaS 上构建一个私有 PaaS 平台。Cloud Foundry 的创新点在于使用了一种全新的部署代码的方式。针对部署工作,它定义了一套 REST API,底层基于 Ruby 命令行工具来与版本控制器交互,在这个平台上你可以使用 CVS、Subversion、Git 等各种版本的控制器,而不是仅限其一。

Heroku

Heroku 是一个支持多种编程语言的公有 PaaS 平台,其成立于 2007 年,3 年后被Salesforce.com 收购。Heroku 作为最初的云平台之一,支持 Ruby、Java、Node.js、Scala、Clojure、Python 等多种编程语言。基础操作系统是 Debian,最新的堆栈则是基于 Debian 的Ubuntu。

Heroku 的架构简图如图所示,Heroku 的容器单元被称为 dyno,dyno 越多,应用系统就拥有越多的实例来保证其服务的有效性。

Heroku 的路由模块被称为 Hermes,采用 Erlang 语言编写,其能够动态感知一个应用中包含多少个 dyno,基于一定的策略进行任务分发,另外我们还可以设置超时保护机制,在Hermes 上就拒绝掉外部请求。

Heroku 打破了日志输出的传统观点,我们一般认为日志是非常重要、不可缺失的,日志以文件的形式存放在本地磁盘中,并且有开头、结尾,重视日志文件中每一行内容在时间排序上的关联性。而 Heroku 将日志看作一条一条的流式信息,它将这些输出发送到远端,集中管理、预警。

一个 PaaS 平台会提供大量的后端服务组件,包括持久化数据库、邮件 SMTP 服务、消息队列、缓存等。Heroku 就为这些后端服务的访问定义了一套 add-ons API,从而实现了代码与某个固定服务的解耦。在 Heroku 上最流行的后端服务是 PostgreSQL 数据库。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档