Google 云模块与命名空间与服务

Google Cloud modules vs namepaces vs services

我对 google 云中的这三种不同构造感到困惑,并试图了解它们是如何组合在一起的。

首先,根据我的阅读,"modules" 只是 "services" 的旧名称,对吗?所以我读到的关于 google 云 "modules" 的任何内容也适用于服务吗?

您是同时使用命名空间和 services/modules 还是它们通常是相互排斥的?

这是如何结合使用这些东西的好例子吗:

对,服务和模块是一回事。请注意 App Engine Services as microservices:

引述中的实际 url 路径

In an App Engine project, you can deploy multiple microservices as separate services, previously known as modules in App Engine.

名称空间受 just a few APIs 支持,服务可以调用:

App Engine currently supports namespaces in the following APIs:

它们实际上只是 separate/slice 共享)由这些 API 提供的数据的一种方式s 并且可以帮助防止跨命名空间边界的意外数据泄漏。参见示例 Implementing Multitenancy Using Namespaces。但请注意,保护仅与应用程序代码一样好(如果代码设置了错误的命名空间,数据将泄漏)。

服务不提供数据隔离,无论数据是否在命名空间中,它们都可以共享数据,方法是在调用相应 API 时适当设置命名空间。因此,它不会将数据放在 使得 数据可跨服务共享的名称空间中。

项目范围适用于命名空间和服务。但是可以配置 APIs 和项目以允许跨项目边界访问(或者甚至从外部 Google 网络 - 参见,例如 How do I use Google datastore for my web app which is NOT hosted in google app engine?

使用服务的主要目的是获得代码隔离。但它是有代价的——每项服务都有自己的实例。也有点困难:文档甚至工具通常有点落后,其中许多假设 single-service GAE 应用程序上下文。

尽管在 Naming Developer Environments 中提供了使用服务创建环境的替代方案,但正如您提到的,我会坚持为此使用单独的项目(也有数据隔离)。