gpt4 book ai didi

java - 将不同语言的服务部署到同一个应用程序 [Google App Engine]

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:26 28 4
gpt4 key购买 nike

我有两个应用程序,一个是 Python 的,另一个是 Java 的。

在 Python 中,我的应用程序位于 app.yaml 中设置的服务下,也是 cron.yaml调用服务。

在我的 (Maven) Java 应用程序中,它不在服务下,因此它是默认服务(如果需要我会更改)。该应用程序也被称为 . ./WEB-INF/cron.xml ../WEB-INF/appengine-web.xml 中有关应用程序的文件和信息

目前它们彼此没有任何联系,我将这两个应用程序部署到不同的项目。

我想融合它们并将它们放在同一个项目中:

python-app.project.appspot.com

java-app.project.appspot.com

代替当前

python-app.project1.appspot.com

project2.appspot.com

我没有尝试使用 app.yaml 和 appengine-web.xml 文件,因为我不知道是否要修改这些文件。

如何使用不同的语言(Python 和 Java)制作不同的服务(模块)

最佳答案

由于 url 路由规则,appspot.com 上生成的应用程序的命名将与您提到的略有不同。来自 Routing via URL :

Sends a request to an available instance of the default version of the named service:

https://service-dot-app-id.appspot.com
http://service.my-custom-domain.com

因此,假设您的服务名为 pythonjava 并且您的应用程序名为 app 那么您的 appspot.com URL 将是:

python-dot-app.appspot.com
java-dot-app.appspot.com

但您可以根据需要使用自定义域映射它们。

关于构建此类应用:

  • 请记住,我需要的一项服务名为default(或保持未命名)

  • 为每个服务创建应用程序子目录(按照以前推荐的多服务应用程序结构图片不再在文档中找到,但在 Can a default service/module in a Google App Engine app be a sibling of a non-default one in terms of folder structure? 中捕获)

  • 将每个服务代码的全部内容复制到各自的子目录中

  • 识别应用级配置文件(cron.yamldispatch.yamlqueue.yaml index.yaml 或它们的 java 等价物)并将它们向上移动一个级别,在应用程序级别目录(如果两个服务中都存在此类配置文件,您可能需要合并它们)。您可能需要为这些文件选择一种语言,我会选择 python。 Cron 作业需要配置目标(参见 Cron job definitions 中的 target 行)。

    请记住,部署一个/所有模块可能不一定像您习惯的那样更新这些文件,相反,它们可能需要显式部署 - 检查相应的服务配置文档。在部署服务时,您应该注意是否有可能覆盖这些配置,您可能需要想出特定的部署顺序。

  • 添加一个dispatch.yaml文件并重新访问/调整服务的请求路径命名空间可能是一个好主意(可能是强制性的),以确保每个请求都是正确的指向相应的服务。特别注意 cron 作业,来自 Cron job definitions 中的 target 行:

If you use a dispatch file, your job might be re-routed. For example, given the following cron.yaml and dispatch.yaml files, the job will run in module2, even though its target is module1:

# cron.yaml
cron:
- description: "test dispatch vs target"
url: /tasks/hello_module2
schedule: every 1 mins
target: module1

# dispatch.yaml:
dispatch:
- url: '*/tasks/hello_module2'
module: module2

https://cloud.google.com/appengine/docs/python/config/cronref#cron_job_definitions

关于java - 将不同语言的服务部署到同一个应用程序 [Google App Engine],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41681288/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com