【问题标题】:Run Google App Engine application with microservice使用微服务运行 Google App Engine 应用程序
【发布时间】:2016-11-02 17:10:30
【问题描述】:

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

  1. 我的模块(微服务)的 app.yaml 文件是什么样的?
  2. app.yaml 在我的应用中看起来如何?(我的意思是,使用微服务)
  3. 我需要在哪里声明这个模块 - 在应用程序 app.yaml 中还是在两个 app.yaml 中?
  4. 如何在我的应用和模块中使用单个数据存储区?

我的 app.yaml 现在看起来像:

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

带有一些凭据和库。

等待您的回答!

【问题讨论】:

  • 我不确定您在问什么:App Engine module(现在称为 service)有一个 app.yaml 文件。您的项目可以有很多服务,每个都有自己的app.yaml。路由是通过dispatch.yaml 完成的,并且project 中的所有services 共享同一个Datastore。您当前的应用程序有多单一?
  • 例如:我的应用程序中有一个 APNS 服务,我需要将其作为微服务移出。使它像这样:事件发生 -> 事件创建 -> 消息发送到主题(发布/订阅) -> APNS 微服务监听主题 -> APNS 发送推送通知

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


【解决方案1】:

单体应用实际上是具有单个模块/服务(默认模块/服务)的应用。此类应用程序的 app.yaml 配置(就像您展示的那样)实际上是默认模块的配置文件 - 没有“每个应用程序”这样的配置。这些模块在各自的<module>.yaml 中通过这一行“绑定”到一个特定的应用程序中:

application: <app_identifier>

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

查看此问答(其中还包含一些示例):Can a default service/module in a Google App Engine app be a sibling of a non-default one in terms of folder structure?

可以/不应该设置默认模块名称。所有其他模块名称都在各自的&lt;module&gt;.yaml 文件中配置,如下所示:

module: <module_name>

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

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

【讨论】:

    猜你喜欢
    • 2016-12-28
    • 1970-01-01
    • 2013-12-20
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 2016-06-10
    相关资源
    最近更新 更多