我有一个大型整体式应用程序,现在是时候将一些模块分离为微服务了! 我在 Google 文档中阅读了很多关于发布/订阅和微服务的内容,但找不到我的问题的答案:
- 我的模块(微服务)的 app.yaml 文件是什么样的?
- 我的应用程序的 app.yaml 看起来如何?(我的意思是,使用微服务)
- 我需要在哪里声明此模块 - 在应用程序 app.yaml 中还是在两个 app.yaml 中?
- 如何将单个数据存储用于我的应用和模块?
我的 app.yaml 现在看起来像:
application: my-application
version: 1
runtime: python27
api_version: 1
threadsafe: true
使用一些凭据和库。
等待您的回答!
最佳答案
单体应用实际上是具有单个模块/服务(默认)的应用。 app.yaml
此类应用程序的配置(如您显示的那样)实际上是默认模块的配置文件 - 没有“每个应用程序”这样的配置。这些模块通过各自的 <module>.yaml
中的这一行“绑定(bind)”到一个特定的应用程序中:
application: <app_identifier>
在多模块应用程序中,每个模块都有自己的 <module>.yaml
配置文件(名称不必是 app.yaml
,如果模块代码共享相同的目录,它实际上必须不同 - 但我会坚持推荐的目录结构 - 每个应用程序子目录一个模块)。
请参阅此问答(其中还包含一些示例):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
.
关于python - 使用微服务运行 Google App Engine 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38125926/