我有一个巨大的monolith应用程序,现在是时候将一些模块分离到微服务了! 我在Google文档中阅读了很多关于pub / sub和微服务的内容,但无法找到我的问题的答案:
我的app.yaml现在看起来像:
application: my-application
version: 1
runtime: python27
api_version: 1
threadsafe: true
使用一些凭据和库。
等待你的答案!
答案 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.yaml
,dispatch.yaml
,queue.yaml
。