Google Cloud模块与名称空间与服务

时间:2017-02-20 23:46:35

标签: google-app-engine google-cloud-platform microservices

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

首先,从我所读到的“模块”只是“服务”的旧名称对吗?所以我读到的关于谷歌云“模块”的任何内容也适用于服务?

您是在一起使用名称空间和服务/模块还是通常是互斥的?

这是如何将这些东西结合在一起的一个很好的例子:

  • 将我的共享资源(存储,数据库等)放在“命名空间”中,这样​​多个模块/服务就可以访问它们。 “任何App Engine请求都可以访问任何名称空间”,因此名称空间资源受其项目容器的约束。
  • 创建访问命名空间资源的“服务”
  • 所有这些都在一个“项目”中,用作一个环境(所以我有一个“dev”和一个“prod”项目

1 个答案:

答案 0 :(得分:1)

对,服务和模块是一回事。请注意App Engine Services as microservices中此报价中的实际网址路径:

  

在App Engine项目中,您可以部署多个微服务   在App Engine中单独services,以前称为 modules

服务可以调用的just a few APIs支持命名空间:

  

App Engine目前支持以下API中的命名空间:

     

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

服务不提供数据隔离,通过在调用相应的API时适当地设置命名空间,它们可以共享数据而不管它是否在命名空间中。因此,它不会将数据放在使数据可以跨服务共享的命名空间中。

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

使用服务的主要目的是获得代码隔离。但它带来了价格 - 每个服务都有自己的实例。也有点困难:文档甚至工具往往有点落后,其中许多人假设单一服务GAE应用程序上下文。

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