借助 Google App Engine 中的 Namespaces API,您可以轻松地划分 Google App Engine 数据。此 API 通过名为命名空间管理器的新软件包实现,并已整合到某些支持命名空间的 API 中。
当您在命名空间管理器中设置命名空间时,这些 API 将获取当前命名空间,并在全局范围内使用该命名空间。您可以在本地显式声明命名空间,但在显式声明命名空间时要特别小心,因为您可能无意中造成数据泄露和其他错误。任何 App Engine 请求都可以访问任何命名空间,从而让应用可对命名空间强制实施访问控制政策。
您可以使用 Namespace API 构建各种不同的应用。此 API 的最突出用途之一是构建多租户应用,如下所述。
多租户简介
多租户指的是一种软件架构;在此架构中,远程服务器上运行的一个应用实例为多个客户组织(也称为租户)提供服务。
使用多租户架构可以简化租户管理和预配。您可以提供更精简的自定义用户体验,还可在单个数据库架构中聚合不同的数据孤岛。因此,您的应用将更具可调节性,并且在调节时成本效益更高。由于所有租户都使用相同的数据库架构,因此可以更方便地跨租户拆分和分析数据。不同的用户组将看到在更高效应用中包装的自定义内容。
使用 Namespace API 构建多租户应用
使用 Namespaces API,您只需为每个租户指定唯一的命名空间字符串,即可轻松在租户之间对数据进行分区。您只需使用命名空间管理器为每个租户全局设置命名空间(而不是针对特定请求明确设置命名空间)。默认情况下,支持命名空间的 API 始终使用此当前命名空间。
Namespaces API 与 Google Workspace 集成,这样您就可以将 Google Workspace 网域用作当前命名空间。由于 Google Workspace 可让您将应用部署到您拥有的任何网域,因此您可以轻松为与 Google Workspace 账号关联的所有网域设置独一无二的命名空间。
在设计多租户应用时,您需要防止命名空间中发生数据泄露。如需了解详情,请参阅避免数据泄露。
使用命名空间的 App Engine API
App Engine 目前在以下 API 中支持命名空间:
使用命名空间的示例项目
系统提供了两个使用命名空间的示例留言板应用:
- Python App Engine:appengine-multitenancy - 支持命名空间的示例留言板应用。
- Java App Engine:appengine-gwtguestbook-namespaces-java - 使用 GWT 并支持命名空间的示例留言板应用。
Namespace API 的其他用途
除了在 App Engine 中启用多租户以外,Namespace API 还具有多种其他用途,包括:
- 划分用户信息
- 将管理数据与应用数据分离
- 为测试和生产创建单独的数据存储区实例
- 在单个 App Engine 实例中运行多个应用