Google 云模块与命名空间与服务
Google Cloud modules vs namepaces vs services
我对 google 云中的这三种不同构造感到困惑,并试图了解它们是如何组合在一起的。
首先,根据我的阅读,"modules" 只是 "services" 的旧名称,对吗?所以我读到的关于 google 云 "modules" 的任何内容也适用于服务吗?
您是同时使用命名空间和 services/modules 还是它们通常是相互排斥的?
这是如何结合使用这些东西的好例子吗:
- 将我的共享资源(存储、数据库等)放在 "namespace" 中,这样多个 modules/services 就可以访问它们。 "Any App Engine request can access any namespace" 因此命名空间资源受其项目容器的约束。
- 创建 "services" 访问命名空间资源
- 所有这些都在一个用作环境的 "project" 中(所以我有一个 "dev" 和一个 "prod" 项目
对,服务和模块是一回事。请注意 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 中提供了使用服务创建环境的替代方案,但正如您提到的,我会坚持为此使用单独的项目(也有数据隔离)。
我对 google 云中的这三种不同构造感到困惑,并试图了解它们是如何组合在一起的。
首先,根据我的阅读,"modules" 只是 "services" 的旧名称,对吗?所以我读到的关于 google 云 "modules" 的任何内容也适用于服务吗?
您是同时使用命名空间和 services/modules 还是它们通常是相互排斥的?
这是如何结合使用这些东西的好例子吗:
- 将我的共享资源(存储、数据库等)放在 "namespace" 中,这样多个 modules/services 就可以访问它们。 "Any App Engine request can access any namespace" 因此命名空间资源受其项目容器的约束。
- 创建 "services" 访问命名空间资源
- 所有这些都在一个用作环境的 "project" 中(所以我有一个 "dev" 和一个 "prod" 项目
对,服务和模块是一回事。请注意 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 中提供了使用服务创建环境的替代方案,但正如您提到的,我会坚持为此使用单独的项目(也有数据隔离)。