朱皮特的博客 自由的飞翔

云计算

2018-07-02
朱皮特
阅读量:

Google App Engine

App Engine 不提供类似 Django 的全栈框架,这是一个开发平台,最初专注于 Web 应用(其有自己的微型框架,即 webapp,或其替代品,即新的 webapp2),但 App Engine仍然可以构建通用的应用和服务。App Engine 属于云计算的范畴,专注于为开发者提供一个平台,用于构建并托管应用或服务的后端。

云计算

基于 Django、 Pyramid,或 TurboGears 的应用都由供应商或自己的电脑运行来提供服务,而 Google App Egine 应用由 Google 运行, 作为云计算范畴下许多服务的一部分。这些服务的主要前提是公司或个人将计算架构分离出去,如实际硬件、应用开发和执行或者软件托管。如果使用云计算,则将应用的计算、托管、服务等任务委托给其他公司,不再需 要自己完成。

这些服务只能通过因特网来完成, 用户可能并不清楚对方的实际物理地址。 服务包括以应用使用的原始硬件到应用的所有内容,以及其他所有可能的服务,如操作系统、数据库、文件和原始的磁盘存储、计算、通知、电子邮件、即时信息、虚拟机、缓存(多级,从Memcahed到CDN)等。这个行业中有许多佼佼者,同时厂商会继续提供新的服务。这类服务一般通过 订阅或使用次数来付费。

公司通常出于成本考虑才部署云计算服务。但各公司的需求有很大不同,所以要分别调研来判断部署云服务是否明智。一个创业公司能负担起所有硬件吗(不是租用数据中心或托管设施的设备)?没关系,可以租用亚马逊的计算设备,或使用 Google 的存储设备。过去,小型创业公司的合伙人必须自掏腰包购买这样的设备,而现在他们可以专注于应用的业务问题。

大公司或“财富 500 强”公司的情况有所不同,他们有足够的资源,但发现无法完全利用到所有潜能。这些公司无须像亚马逊那样创建云业务(下一节会介绍),只须在内部创建一个私有云服务,或者构建一个混合云,用私有设备处理敏感数据,通过如 Google 或亚马逊这些公共云外包其他部分(如计算、应用、存储等)。

云计算服务的层次

云计算有三个层次。

  • 最低层的是 IaaS(Infrastructure-as-a-Service),即提供计算机本身基本的计算能力(物理形式或虚拟形式)、存储(通常是磁盘)、计算。亚马逊 Web 服务(Amazon Web Services, AWS)提供了弹性计算云(Elastic Compute Cloud, EC2),以及简单存储系统(Simple Storage System, S3)服务,这两者就在 IaaS 层面。Google 也提供了 IaaS 存储服务,称为 Google Cloud Storage。
  • Google App Engine 作为云计算的中间一层,称为 Paas(Platform-as-a-Service)。这一层为用户的应用提供执行平台。最高一层是 Software-as-a-Service(SaaS)。在这一层,用户只须简单地访问应用,这些应用位于本地, 但只能通过因特网访问。
  • SaaS 的例子包括基于 Web的电子邮件服务,如 Gmail、 Yahoo! Mail 和 Hotmail。

在这三层当中, IaaS 和 SaaS 是最常见的,而 PaaS 则没有像前者那样引起注意。不过情况正在改变, PaaS 也许是这三者之间最强大的。通过 PaaS,可以免费获得 IaaS,但 PaaS 中含有许多非常服务,自行维护这些服务的开销非常大且很麻烦。这些功能位于 IaaS 层和上面的层次中,包括操作系统、数据库、软件授权、网络和负载平衡、服务器(Web 和其他)、软件补丁和升级、监控、警告、安全修复、系统管理等。使用云服务的主要好处是与自行维护相关设备相比,使用这一层的服务不会让设备空闲。因为购买计算机设备的数量是根据原先预计的网络流量计算的。如果花费大量资金购置的设备没有充分得到利用,在那里闲置就非常令人沮丧。

云计算的概念已经出现很久了, Sun Microsystems 的 John Gage 在 1984 年创立了最初令人记忆深刻的术语——网络即是计算机。但云计算在 21 世纪初才商业化。具体来说,是在2006 年年初,亚马逊推出了 AWS。亚马逊闲置的功能促使他们推出这个服务。亚马逊必须购置足够多的计算资源,来满足购物季在线购物的流量和业务需要。

根据亚马逊的白皮书,亚马逊声称:“在 2005 年,他们必须花费数百万美元来构建并管理大规模、可用且高效的IT设备, 来支撑世界最大的零售平台的运作。

但凭借所有的存储和计算能力,这些设备中的大部分在一年的其他时间里会做些什么呢?老实说,闲置在那里。所以为什么不将这些额外的 CPU 和存储能力租出去,提供一个服务呢?亚马逊的确这样做了。从那时开始,其他几家大型科技公司也加入了这种趋势: Google、Salesforce、 Microsoft、 RackSpace、 Joyent、 VMware,以及许多其他公司都加入到这个行列中。

App Engine

App Engine 是 Python 的核心部分,当App Engine于 2008 年最先上线时,唯一支持的语言运行时就是Python。 Java在一年后支持,但Python处于特殊的地位,因为Python是App Engine第一个支持的运行时。

同的 Web 框架之间有相同点和不同点,而 App Engine 与这些都有区别。因为 AppEngine 不仅仅是一个开发平台,还是一个带有应用的主机服务。后者是使用 App Engine 开发应用的主要原因。用户现在可以更方便地选择开发和部署一款应用,也可以像以前那样,自己搭建支持应用的硬件设备。在 App Engine 上部署应用,所有要做的额外工作只有设计、编码、测试应用。

使用 App Engine,开发者无须处理 ISP 或自行托管,只须将应用上传到 Google, Google会处理在线维护的逻辑。普通的 Web 开发者现在可以享用与 Google 相同的资源,在相同的数据中心运行,使用支撑这个互联网巨人相同的硬件。实际上,通过 App Engine 和其他云服务, Google 实际上为自己使用的设备提供了一个公共 API。 这包括 App Engine API 如,数据存储(Megastore、 Bigtable)、 Blobstore、 Image(Picasa)、 Email(GMail)、 Channel(GTalk)等。另外,现在开发者无须关心计算机、网络、操作系统、电源、冷却、负载平衡等问题。

App Engine 整个系统由 4 个主要部分组成:语言运行时、硬件基础设施、基于 Web 的管理控制台、软件开发包(SDK)。 SDK 为用户提供了相应的工具,即开发服务器及访问 AppEngine 的 API。

硬件基础设施对用户来说完全是一个黑盒。用户并不知道代码运行在什么硬件上。大致就是这个黑盒使用某种配置的 Linux,坐落在连接到全球网络的数据中心。读者可能听过Bigtable, 这是 App Engine 用于存储数据的非关系数据库系统。对于大多数人来说,这就是所要知道的内容。记住,有了云计算, 无须关心这些内容。 云计算中非常复杂的工作、设备维护的细节,以及设备的可用性,都隐藏到幕后。


上一篇 扩展Python

下一篇 Python数据库

Comments

Content