移动应用后端服务

本文提供了使用 Google Cloud Platform (GCP) 构建、连接、测试和监控移动后端服务的指南。每种设计模式后面都提供了代码示例和示例应用的链接。

大多数移动应用和游戏都需要后端服务来处理无法单独在设备上完成的任务,例如共享和处理来自多个用户的数据或存储大型文件。要详细了解特定于游戏的后端服务,请参阅云游戏基础架构的概览

选择设计模式

构建用于移动应用的后端服务类似于构建基于网页的服务,但需要注意某些其他要求:

  • 限制设备上的数据存储。
  • 在多个设备之间同步数据。
  • 妥善处理离线情况。
  • 发送通知和消息。
  • 尽可能省电。

以下设计模式演示了使用 GCP 创建满足这些要求的后端服务的不同方法。如需了解详情,请选择一个模式以查看该模式的详细说明。

Firebase 设计模式 Firebase 搭配 App Engine 的设计模式 Firebase 搭配 App Engine 柔性环境的设计模式 App Engine 标准环境搭配 Endpoints 的设计模式 Compute Engine 设计模式

前三种模式使用 Firebase,这是一种双层架构,移动应用和 Firebase 都可以直接在当中操作数据。安全性和数据验证的处理方式由此产生重大差异。

在传统三层式模型中(如最后两种模式所示),移动应用和后端服务之间存在通信层。通常,您会在此层中编写身份验证和数据验证代码。

在 Firebase 中,您可在 Firebase 网页界面中将身份验证和验证指定为声明性规则,无需编写命令式代码。如需了解详情,请参阅 Firebase 文档中的 Firebase 身份验证

此外,这些设计模式从全托管式平台 Firebase 转换到完全非托管式平台 Compute Engine。在托管式平台中,Google 会为您处理升级和自动扩缩等任务,但对配置施加一些限制。在非托管式平台中,您可以完全控制服务器的配置,但必须自己处理管理任务。

下表详细说明了这些设计模式之间的差异。

功能 Firebase Firebase 和 App Engine 标准环境 Firebase 和 App Engine 柔性环境 App Engine 标准环境和 Cloud Endpoints Compute Engine 和 REST/gRPC
自动扩容 是 是 是 是 如果配置了自动扩缩程序
自动实时数据同步 是 是 是

自动服务器维护 是 是 是 是

后端逻辑

是 是 是 是
调用本机二进制文件、写入文件系统或进行其他系统调用。

是

是
数据存储 是 是 是 如果添加了其他 GCP 服务 如果添加了其他 GCP 服务
文件存储 是
是
是
是
使用 Cloud Storage
是
使用 Cloud Storage
简化用户身份验证 是 是 是 OAuth 2.0

移动后端服务的语言支持 不适用 请参阅 App Engine 文档 请参阅 Endpoints Frameworks 文档 不限
消息和通知(例如推送通知) 是
是
是
   
平台支持 iOS、Android、网页 iOS、Android、网页 iOS、Android、网页 iOS、Android、网页 iOS、Android、网页
要求在沙盒中运行代码。

不适用

是

是

要求使用 SSL

是

是

Firebase

Firebase 是一个全托管式平台,可用于构建 iOS、Android 和网页应用。它提供自动数据同步、身份验证服务、消息传递、文件存储、分析等功能。使用 Firebase 是构建移动后端服务或进行原型设计的高效方式。

Firebase

建议用于以下方面

  • 通过在 Firebase 实时数据库中存储 JSON 数据并在 Firebase 存储中存储文件来限制设备上的数据存储。
  • 使用 Firebase 云消息传递发送通知。
  • 在多个设备之间进行自动实时数据同步。
  • 妥善处理离线情况。
  • 通过各种身份提供商对用户进行身份验证。
  • 快速开发后端服务。

不建议用于以下方面

  • 需要后端服务来修改同步数据的应用。

Firebase 入门

如何开始使用 Firebase。

Firebase 代码示例

使用 Firebase 的示例应用。

Firebase 和 App Engine 标准环境

App Engine 标准环境是一个用于监控、更新和扩缩托管环境的应用平台;您只需编写移动后端服务代码。

如果您的应用需要处理用户数据或编排事件,通过使用 App Engine 标准环境扩展 Firebase,可以实现自动实时数据同步。

Firebase 和 App Engine

建议用于以下方面

  • 需要后端服务来修改同步数据的 Firebase 应用。
  • 定期运行以处理或分析 Firebase 数据的后端服务。

不建议用于以下方面

  • 调用本机二进制文件、写入文件系统或进行其他系统调用的后端服务。
  • 与 Firebase 的持久性连接。App Engine 标准环境在 2 分钟后收回套接字连接。

Firebase 和 App Engine 柔性环境

与 App Engine 标准环境类似,App Engine 柔性环境也是一个用于监控、更新和扩缩托管环境的应用平台;您只需编写移动后端服务代码。

不同之处在于柔性环境在您可以配置的 Docker 容器中运行后端服务。这意味着您可以调用本机二进制文件、写入文件系统并进行其他系统调用。

如果您的应用需要处理用户数据或编排事件,通过使用 App Engine 柔性环境扩展 Firebase 可以实现自动实时数据同步,而无需在 App Engine 沙盒中运行代码。

Firebase 和 App Engine 柔性环境

建议用于以下方面

  • 需要后端服务来修改同步数据的 Firebase 应用,该后端服务需要自定义服务器配置或不受 App Engine 标准环境支持的第三方库。
  • 需要与 Firebase 持久连接以接收数据更改通知的后端服务。柔性环境可以使连接保持 24 小时。

使用 Firebase 和 App Engine 柔性环境构建移动应用

本教程介绍如何使用 Firebase 编写具有后端数据存储、实时同步和用户事件日志记录功能的移动应用。在 App Engine 柔性环境中运行的 Java servlet 会侦听存储在 Firebase 中的新用户日志并对其进行处理。

App Engine 和 Endpoints

适用于 App Engine 标准环境的 Endpoints Frameworks 可为 App Engine 应用生成 API、客户端库和发现文档。使用 Endpoints 意味着您不必编写封装容器来处理与 App Engine 的通信。借助 Endpoints 生成的客户端库,您可通过移动应用直接进行 API 调用。

将 Endpoints 与 App Engine 结合使用,您可以获得用于监控、更新和扩缩托管环境的应用平台。

App Engine 和 Endpoints

建议用于以下方面

  • 自动生成可供应用用于直接调用后端服务的客户端库。
  • 通过将文件移动到 Cloud Storage 来减少设备上的存储。

不建议用于以下方面

  • 需要在各个设备之间进行自动实时数据同步的应用。
  • 需要自定义服务器或第三方库的后端服务。
  • 不支持 SSL 的系统,因为 Endpoints 要求使用 SSL。

Hello Endpoints

以下是一系列入门教程,介绍了如何构建可发送简单消息的 Hello Endpoints 示例应用。后端服务是在 App Engine 上实现的,可通过 Endpoints 向移动应用公开。

井字棋游戏

以下是一个示例应用,演示了如何调用在 App Engine 上运行的后端服务来创建一个简单游戏。井字游戏后端服务是采用 Java 实现的。

Compute Engine 和 REST 或 gRPC

借助 Compute Engine,您可以在 Google 基础架构上创建并运行虚拟机。您拥有服务器的管理员权限,可以完全控制其配置。这也意味着您要负责更新和维护。

Compute Engine 和 REST

可用于连接到 Compute Engine 实例的主要协议有两种:REST 和 gRPC。REST 是较成熟的协议。而 gRPC 是较新的协议,可以更高效地进行传输,这样既能省电,又能提高安全性。要详细了解 REST 和 gRPC,请参阅将应用连接到自定义后端服务

建议用于以下方面

  • 移植在本地服务器或虚拟机上运行的现有后端服务。
  • 需要自定义服务器或第三方库的后端服务。

不建议用于以下方面

  • 需要在各个设备之间进行自动实时数据同步的应用。
  • 自动维护;您必须自己维护并升级服务器。
  • 自动扩缩;您必须手动配置和管理自动调节程序。

在移动应用中使用 Compute Engine 和 REST

以下是一个端到端示例,该示例使用 REST 将移动应用连接到 Compute Engine 上托管的后端服务。示例应用 Stickynotes 将文本发送到服务,该服务通过返回生成的映像来进行响应。

Stickynotes 示例提供了 REST 和 gRPC 版本,因此您可以对这两种协议进行比较。

iOS

在移动应用中使用 Compute Engine 和 gRPC

以下是一个端到端示例,该示例使用 gRPC 和协议缓冲区将移动应用连接到 Compute Engine 上托管的后端服务。示例应用 Stickynotes 将文本发送到服务,该服务通过返回生成的映像来进行响应。

Stickynotes 示例提供了 REST 和 gRPC 版本,因此您可以对这两种协议进行比较。

iOS

构建移动后端服务

Google 提供了各种工具和服务,您可以使用它们构建与 GCP 服务集成的后端服务。

Android Studio

Android Studio 是针对 Android 应用开发的官方 IDE。它基于 IntelliJ IDEA 并提供附加功能,如 lint 工具(基于 Gradle 的构建系统)和代码模板。

此外,Android Studio 还提供内置支持,可将 GCP 服务和 Firebase 集成到您的应用中。如需了解详情,请参阅用于 Android Studio 的 Cloud 工具

适用于 iOS 的 Google API

Google 使用 CocoaPods 分发一系列特定于 iOS 的 API 和 SDK。CocoaPods 是 Swift 和 Objective-C Cocoa 项目的开源依赖项管理器,您可以在使用 Xcode 时利用它来安装或更新新的 SDK。

Cloud SDK

你可以利用 Cloud SDK 中包含的工具和库在 GCP 上创建和管理资源。

Cloud Source Repositories

Cloud Source Repositories 是托管在 GCP 上的功能全面的 Git 代码库。

您在 Google Cloud Platform Console 中创建的每个项目都有一个关联的 Cloud Source Repositories。您可以使用此代码库来协作开发任何应用或服务,包括在 App Engine 和 Compute Engine 上运行的应用或服务。

如果您在使用 Stackdriver Debugger,则可以在 GCP Console 中使用 Cloud Source Repositories 和相关工具在应用运行时期间查看代码旁边的调试信息。

Stackdriver Debugger

您可以使用 Debugger 在任意代码位置检查 Java 应用的状态,而无需停止应用或减慢应用运行速度。您可以在应用的生产实例和暂存实例上使用 Debugger。

Debugger 适用于以下应用:

将您的应用连接到移动后端服务

构建后端服务后,您需要与移动应用的实例建立通信。

将您的应用连接到 Firebase

如果您的后端服务使用 Firebase,请按照以下流程将移动应用连接到 Firebase:

  • 创建 Firebase 帐号。
  • 从 Firebase 获取应用网址。
  • 将客户端库导入您的应用。这些客户端库适用于 iOS、Android、网页应用和 REST。
  • 引用应用网址,从您的应用调用库。

要获取执行此操作的分步指导,请参阅 Firebase 文档中的入门指南

将您的应用连接到自定义后端服务

您可以使用多种协议从移动应用中调用后端服务。GCP 最常用的协议是 REST、Endpoints 和 gRPC。

REST

REST 是一种用于联网应用的架构,它使用 HTTP 请求来发布、读取和删除数据。您可以在 Compute Engine、App Engine 标准环境和 App Engine 柔性环境实例上构建 REST API,您的应用可以调用这些 API 来访问您构建的后端服务。

在 GCP 中,通常使用以下工具构建 RESTful 服务:

如需获取演示如何在后端服务中使用 REST 的示例代码,请参阅 Compute Engine 和 REST 或 gRPC

您还可以使用 REST 与 Firebase 进行通信。如需了解详情,请参阅 Firebase 文档中的 Firebase Database REST API

Endpoints

Endpoints 为 App Engine 应用生成 API 和客户端库。使用 Endpoints 意味着您不必编写封装容器来处理与 App Engine 的通信。借助 Endpoints 生成的客户端库,您可通过移动应用直接进行 API 调用。

Endpoints 要求使用 SSL,且仅适用于 App Engine 上运行的应用。

如需获取演示如何在后端服务中使用 Endpoints 的示例代码,请参阅 App Engine 和 Endpoints

gRPC

gRPC 是一个框架,通过该框架,移动应用可以直接调用后端服务上的方法,就像它是本地对象一样。

gRPC 使用 HTTP/2 标准,引入了双向流式传输、流控制、头文件压缩以及单 TCP 连接上的多路请求功能。gRPC 可以帮助您提高移动应用的带宽效率,并缩短应用和 GCP 上运行的后端服务之间的延迟时间。

您可以使用任何 gRPC 支持的语言编写 gRPC 客户端和服务器。例如,您可以用 Java 创建 gRPC 服务器,用 Go、Python 或 Ruby 创建客户端。

如需获取演示如何在后端服务中使用 gRPC 的示例代码,请参阅 Compute Engine 和 REST 或 gRPC

向您的应用发送通知

通知是大多数移动应用的一项重要功能。无论用户是否在设备上打开您的应用,您都可以使用通知功能与用户通信。

Firebase 云消息传递

Firebase 云消息传递 (FCM) 是一种跨平台消息传递解决方案,您可以使用该解决方案向运行您应用的客户端设备可靠地传递消息和通知。

使用 FCM,您可以执行以下操作:

  • 使用以下三种方式中的任意一种将消息分发到客户端应用:分发至单一设备、分发至设备组或分发至订阅了主题的设备。
  • 发送通知(最大 2KB)、数据负载(最大 4KB),以及发送包含通知和数据负载的消息。
  • 通过 FCM 可靠且省电的连接渠道,将确认消息、聊天信息及其他消息从设备发回至您的服务器。

要开始使用 FCM 发送通知,请参阅以下内容:

Firebase 通知

基于 Firebase 云消息传递和 FCM SDK,Firebase 通知提供一个图形化控制台,您可以使用该控制台向运行您应用的客户端设备发送消息。

测试您的移动后端服务

创建移动应用时的一大难题是如何针对所有可能的设备配置进行测试。GCP 提供了用于在真机设备和虚拟设备上测试移动应用的工具,还提供了用于测试后端服务的安全性和性能的工具。

您也可以将移动应用配置为使用测试性的后端服务,以将其与生产环境隔离,以免生产环境遭受测试带来的任何负面影响。如需了解详情,请参阅 Firebase 文档中的支持不同环境

Cloud Test Lab

Cloud Test Lab 提供云端基础架构,可用于测试 Android 应用。只需执行一项操作,即可针对各种设备和配置启动应用测试。测试结果(包括日志、视频和屏幕截图)在 GCP Console 的您的项目中提供。即使您没有为自己的应用编写过任何测试代码,Cloud Test Lab 也可以自动分析您的应用,查找崩溃问题。

Cloud Test Lab 支持两种类型的设备。每种类型都有自己的特点,适合的应用开发阶段也有所不同。每种设备类型都可以使用各种模型。

  • 虚拟设备以高保真的虚拟方式模拟特定的 Android 设备。这些设备的调度可用性最高,最适合用于日常开发或持续测试。

  • 真机设备是 Google 数据中心内安装和运行的真实的 Android 设备。在真机设备上进行测试最适合于预发布测试,因为这可以帮助您检测到使用虚拟设备测试应用时未出现的问题。

Cloud Security Scanner

Cloud Security Scanner 可识别 App Engine 网页应用中的安全漏洞。它会抓取您的应用,追踪从起始网址可达的所有链接,并尝试执行尽可能多的用户输入和事件处理程序。

Cloud Security Scanner 目前仅支持 App Engine 标准环境实例。尚不支持 App Engine 柔性环境、Compute Engine 或其他 GCP 资源。

Stackdriver Trace

Trace 从 App Engine 应用收集延迟数据,并在 GCP Console 中以近乎实时的方式显示这些数据。

借助 Trace,您可以了解应用处理来自用户或其他应用的传入请求所需的时间,以及完成处理请求时执行的操作(特别是 RPC 调用)所需的时间。

目前,Trace 收集对 App Engine URI 的请求的端到端延迟数据,以及对 App Engine 服务(如 Cloud Datastore、URL Fetch 和 Memcache)的往返 RPC 调用的其他数据。

监控您的移动后端服务

启动后端服务仅仅是个开始,您需要监控服务以确保它按预期运行。

App Engine 会对标准环境和柔性环境自动执行运行状况监控,必要时这两种环境都会启动新实例。您还可以为 Compute Engine 配置自动扩缩,以替换无响应的实例。

GCP 还提供用于收集和分析日志的工具以及监控信息中心。您可以将监控信息中心配置为在应用执行超出指定限制时发送提醒。

Stackdriver Logging

Logging 从 GCP 上的应用和服务中收集并存储日志。日志列表显示您可以访问的日志。收集日志后,您可以执行以下操作:

Stackdriver Monitoring

Monitoring 可为您的 GCP 应用提供信息中心和提醒。

您可以使用 Monitoring 控制台来配置 Monitoring。使用 Stackdriver Monitoring API 来检索监控数据并创建自定义指标。

利用 Monitoring,您可以查看 GCP 服务、虚拟机和常见开源服务器(如 MongoDB、Apache、Nginx、Elasticsearch)的性能指标。

后续步骤

  • 试用其他 Google Cloud Platform 功能。查阅我们的教程
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Solutions