跳到主要内容

20.1 什么是 Google App Engine?

Google 应用引擎(Google App Engine,下简称 GAE)是 Google 用来云编程的方案:让你在 Google 的基础架构上运行 web 应用和存储数据,而不用担心服务器、网络、操作系统或者数据存储等等问题。这种资源的集合通常被称为云,其维护完全由谷歌本身负责。对于你这个开发者来说,只有你的应用程序和它能提供给用户的服务才是重要的。用户可以在任何可以连接到互联网的设备上使用和运行你的应用程序,你只需为你的软件真正需要的资源(CPU 处理时间、网络带宽、磁盘存储、内存等)付费。当有高峰期时,云平台会自动为你的应用程序增加资源,并在不再需要时减少资源:可扩展性是云计算的最大优势之一。协作型应用(一群人一起工作、分享数据、交流等)、提供服务的应用和进行大型计算的应用是云计算的优秀候选者。云计算应用的典型用户界面是一个浏览器环境。

GAE 在 2008 年推出,并支持 Python 应用程序,并在 2009 年增加了对于 Java 的支持;自 2011 年开始,也有了对 Go 的支持。其开始页面为:https://cloud.google.com/appengine/

谷歌的 App Engine 为构建和部署网络应用提供了一种可靠、可扩展和简单的方式。超过十万个应用程序被托管在 https://console.cloud.google.com/ 和使用 App Engine 基础设施的自定义域上。它是一个 "平台即服务 "的环境,比 Amazon EC2 这样的 "基础云设施 "的运行水平更高,其试图以更高的效率分享资源。

沙盒:

你的应用在一个叫做“沙盒 (sandbox)”的环境中运行,其提供到底层操作系统有限的访问权。这些限制能够允许 App Engine 在多个服务器上分配应用程序的网络请求,并启动和停止服务器以满足流量需求。沙盒将你的应用程序隔离在它自己的安全、可靠的环境中,它独立于 Web 服务器的硬件、操作系统和物理位置。上文中所说的限制有:

  • 应用程序不能写到服务器的文件系统;只有在应用程序内上传的文件可以被读取。应用必须使用 App Engine 数据存储、记忆库 (memcahe) 或其他服务来处理所有在请求之间持续存在的数据。
  • 代码仅在响应网络请求、排队或计划任务时运行,并且响应必须在 60 秒内;请求处理程序不能产生一个子进程或在响应发出后执行代码。
  • 它只能通过提供的 URL 获取和电子邮件服务访问互联网上的其他计算机。其他计算机只能通过在标准 HTTP 协议(或 HTTPS)下的请求来连接到应用程序。
服务概览:
  1. 数据 存储在基于谷歌 Bigtable 的 GAE *数据存储*中:这是一个分布式数据存储服务,具有查询引擎和交易功能;它随着你的数据自动增长。它不是一个传统的关系型数据库,所以不允许使用经典的 SQL 和连接;但它为你提供了一种类似 SQL 的查询语言,称为 *GQL*。数据对象,称为*实体*,有一个*类型*和一组属性。查询可以检索给定种类的实体,并根据属性值进行过滤和排序。属性值可以是任何支持的属性值类型。实体可以被分组——这就是交易 (transaction) 发生的地方:任何的交易都必须在一个组内。你的实体没有数据库模式:实体之间的任何结构必须由你的应用程序代码提供和强制执行。更新使用*乐观的并发控制 (optimistic concurrency control)*,意味着依照最后一次更新改变数据。

2) 应用程序认证 可以与谷歌账户集成 3) URL Fetch:通过这项服务,你的应用程序可以访问互联网上的资源,如网络服务或其他数据。 4) 邮件:也是一个内置的服务,可以在应用程序中使用。 5) Memcache:一个高性能的、内存内的键值对缓存;它对那些不需要数据存储的持久性和事务性功能的数据很有用,比如临时数据或从数据存储复制到缓存的高速访问数据。 6) 图像操作:(译者注:原文这里就没有东西) 7) 预定任务和任务队列 (cron jobs):一个除了响应网络请求外,还可以执行任务的应用程序;它可以按照你配置的时间表执行这些任务,比如在一个每天的或每小时的基数上运行。另外,应用程序也可以执行由应用程序本身分配到队列中的任务,例如在处理一个请求时创建的后台任务。