使用微服务

时间:2016-06-30 14:20:04

标签: python google-app-engine publish-subscribe microservices

我有一个巨大的monolith应用程序,现在是时候将一些模块分离到微服务了! 我在Google文档中阅读了很多关于pub / sub和微服务的内容,但无法找到我的问题的答案:

  1. 我的模块(微服务)app.yaml文件的样子如何?
  2. 我的应用程序app.yaml的样子如何?(我的意思是,使用微服务)
  3. 我需要在应用程序app.yaml或app.yaml中声明此模块吗?
  4. 如何在我的应用和模块中使用单个数据存储?
  5. 我的app.yaml现在看起来像:

    application: my-application
    version: 1
    runtime: python27
    api_version: 1
    threadsafe: true
    

    使用一些凭据和库。

    等待你的答案!

1 个答案:

答案 0 :(得分:2)

单片应用程序实际上是一个具有单个模块/服务(默认应用程序)的应用程序。这样的应用程序的app.yaml配置(就像你展示的那个)实际上是默认模块的配置文件 - 没有&#34;每个应用程序&#34;这样的配置。这些模块被捆绑了#34;这一行在他们各自的<module>.yaml

中合并为一个特定的应用程序
application: <app_identifier>

在多模块应用程序中,每个模块都有自己的<module>.yaml配置文件(名称不必是app.yaml,如果模块代码共享,则实际上必须是不同的相同的目录 - 但我坚持推荐的目录结构 - 每个app子目录一个模块。)

请参阅此Q&amp; A(其中还包含一些示例):Can a default service/module in a Google App Engine app be a sibling of a non-default one in terms of folder structure?

可以/不应该设置默认模块名称。所有其他模块名称都在相应的<module>.yaml文件中配置,如下所示:

module: <module_name>

同一个应用中的所有模块共享相同的数据存储(因此相同的index.html文件)。

请注意,其他配置文件也是应用级配置,因此真正由所有模块共享(或者只是默认模块,例如执行cron服务的模块),我将它们按照建议放置在应用的顶级目录中:cron.yamldispatch.yamlqueue.yaml