PaaS 是一种云服务,能提供由提供者托管于硬件基础设施上的软件和产品开发工具。术语 PaaS 常常用于基于云的平台,您可以利用这些平台构建和运行定制应用程序。PaaS 应用程序提供了构建和部署 Web 应用程序所需的全部东西,此外还提供了可从 Internet 上的任何地方访问到的服务。终端用户无需下载、安装或维护此系统。
PaaS 提供了一套基本的服务,包括虚拟服务器、存储和数据库。您可以使用这些服务借助 PaaS 平台所提供的工具或 API 来在该平台之上构建一个应用程序。如下所示是一些最常用的 PaaS 平台。
参见 参考资料,获得这三个平台的链接。
PaaS 平台一般会通过一个对 Google App Engine 或 Microsoft Azureplat 这类基础设施的接口来提供可伸缩的抽象。可使用 PaaS 提供者提供的应用程序 SDK(Software Development Kit)来创建和调试应用程序。
Google App Engine
Google App Engine 是一个基于云的平台,能让您在 Google 自己的基础设施上运行您的应用程序。运行在 App Engine 上的应用程序可以是用 Python 或 Java 编程语言编写的。这种运行基于 Java Virtual Machine (JVM) 的应用程序的能力开启了无限的可能性。您可以用除 Java 之外的任何能在 JVM 内运行的其他语言来创建应用程序,比如:
您还可以在流量增长时,轻松地伸缩您的应用程序。对于 App Engine 开发人员而言,有两种不同的价位可以选择。
App Engine 为专有的 Google 实现提供了良好定义的 API 的可伸缩抽象。这些抽象可供基于 Python 或 Java 的程序通过 API/SDK 使用。
服务 | 提供者 |
---|---|
Datastore | Google 的 BigTable,一种高性能的专有数据库系统,可用来以半结构化的形式存储大量数据。 |
缓存 | Memcache,一种高性能的分布式内存对象缓存系统。 |
身份验证 | 用来进行身份认证和用户管理的 Google 帐户 |
邮件 | 用来发送电子邮件的 Google Mail (Gmail) |
App Engine 环境还对应用程序施加了额外的限制,如下所示:
这些限制可能会也可能不会约束到您的应用程序。App Engine 是构建可伸缩 Web 应用程序的一种很好的方式,并且 AppScale 还提供了一种框架来模拟 Google App Engine 环境。AppScale 让您可以在本地以及在基于云的基础设施上(比如 Amazon EC2 和 Eucalyptus)透明地执行和调试 App Engine 应用程序。
AppScale
AppScale(参见 参考资料)是 Google App Engine API 的一种开源实现,来自于位于圣塔巴巴拉的加州大学的 RACELab。它是一种云计算平台,可简化 Google App Engine 应用程序在 IaaS 云(比如 Amazon 的 Elastic Compute Cloud (EC2) 或 Eucalyptus,这已经在 面向虚拟基础设施的云服务,第 1 部分:Infrastructure-as-a-Service (IaaS) 和 Eucalyptus 讨论过)上的执行。更多信息,请参见 参考资料。
AppScale 带来了 App Engine 的强大功能,并能让您用自己的集群运行 App Engine 应用程序。它也可以在 IaaS 平台上透明运行。据 RACELab 团队介绍,
“我们为 AppScale 确定的目标是提供一个 Platform-As-A-Service (PaaS) 云基础设施以使用户不仅可以在其 GAE 应用程序部署到 Google 专有资源上之前先部署、测试、调试、考量和监视这些应用程序,还可以便利 PaaS 实现的调查和扩展:服务、运行时、与低层云构造的互操作等。”
图 3 显示了用 AppScale 进行的服务实现。
AppScale 的架构
AppScale 环境包含四个主要组件。AppScale 通过构建和扩展来自 Google App Engine 的 SDK 并实现由此 SDK 公开的开放 API 补充了 Google App Engine 所提供的功能。AppScale 内的多个组件可自动化系统的部署、管理、伸缩以及系统容错以便执行 App Engine 应用程序。
无需对应用程序进行更改,即可在 AppScale 内部署和运行 Google App Engine 应用程序。AppScale 并不意味着要代替或与 Google 的 App Engine 竞争。它只是用来进行云基础设施试验的一个框架,并不会向上伸展为 Google 自以为豪的基础设施。
图 4 中所示的这四个 AppScale 组件是:
这些组件可以使用 AppController 与其他组件通信,AppController 控制在部署环境内的所有 AppScale 实例的设置、初始化和拆除。AppController 还负责 App Engine 应用程序的部署和身份验证。
App Engine 应用程序的用户使用 SSL 与 AppServers 交互。对 AppScale 环境的第一个登录请求总是会先到达负载均衡器,在成功登录后负载均衡器将请求路由到适当的应用程序。
创建可由用户访问的应用程序的开发人员使用 AppScale Tools 工具集与 AppScale 进行交互。借助此工具集就可以设置一个 AppScale 实例并将 App Engine 应用程序部署到 AppScale。它在概念上类似于 Amazon EC2 工具。此工具集中的一些脚本总结如下。
脚本 | 动作 |
---|---|
appscale-run-instances | 部署 AppScale 实例与一个 App Engine 应用程序 |
appscale-upload-app | 将一个 App Engine 应用程序上传到一个运行中的 AppScale 实例 |
appscale-describe-instances | 从 AppController 和 AppServers 检索资源使用情况的统计数据,比如 CPU 和内存的使用情况。 |
appscale-reset-pwd | 为根用户/开发人员重置开发人员密码 |
appscale-terminate-instances | 清除并销毁所有的 AppScale 实例 |
AppScale 使用了节点的概念。一个节点 指的是 AppScale 图像实例的一个实例。一个 AppScale 部署至少包含一个节点,更多的时候是包含几个节点。一个节点则包含用来与其他节点通信的 AppController 以及一个或多个 AppScale 组件。实现 AppLoadBalancer 的节点被称为头节点。在一个 AppScale 部署中,只能有一个头节点实例。
头节点上的 AppController 是主要控制器并负有一些额外的责任:
图 6 给出了一个例子。
AppScale 图像实例又称 guest virtual machine (GVM)。它能在开源 IaaS 云 Eucalyptus(如在 面向虚拟基础设施的云服务,第 1 部分:Infrastructure-as-a-Service (IaaS) 和 Eucalyptus 中讨论的)之上执行,也可以在 Amazon Web Services EC2 环境中执行。通过最新的 Ubuntu 发布版,它还可被用在非虚拟的系统上。在 Eucalyptus 的情况下,可以使用 Xen、KVM 或 VMware 作为底层的虚拟层。图 7 显示了部署于 Eucalyptus 上的 AppScale。
如下所示,Amazon EC2 使用 Xen 作为其底层的虚拟框架。
AppScale 自带容错功能。它能承受 AppServer、Database Slave、AppLoadBalancer 和 AppController 组件内的故障。
AppScale 团队现在正在研究各种故障场景以及它们对系统的影响。他们亦在寻找如何为已部署的 AppScale 环境内的这些错误实现容错方式。
AppScale 为创建一个能推进实用计算模型的完整的端到端开源云堆栈提供了可能性。Tim O’Reilly 还为之取了一个名字 LEAP(意思是 Linux、 Eucalyptus、AppScale 和 Python)。此外,还有一些其他的项目也在试图提供类似的解决方案。其中最有希望的当属 TyphoonAE(参见 参考资料),它是一个开源项目,旨在执行基于 Python 的 Google App Engine 应用程序,后者具有可移植的数据存储、消息传递和缓存模块。在我写作本文之时,TyphoonAE 还只有测试版,不过此项目开发得相当迅速。
AppScale 的益处
AppScale 是本地测试和调试 Google App Engine 应用程序的一种极好的方式。AppScale 和 Eucalyptus 二者合起来提供了一个很好的用来探索和研究云计算的平台。
联系客服