【问题标题】:Heroku multiple web dynos (docker) on same appHeroku 多个 web dynos (docker) 在同一个应用程序上
【发布时间】:2020-08-12 06:50:14
【问题描述】:

我想知道是否可以在 heroku 的同一个应用中部署多个“web dynos”微服务(spring boot 应用)。

我有一个由多个微服务组成的应用程序,它们还相互“交谈”。我能够在 heroku 中部署一个 docker 容器,将其命名为“web”,有一个帖子可以解决它:

Heroku docker spring boot image error 503 H14

现在的问题是,如果我只能在应用程序中部署一个 Web dyno,我必须创建多个应用程序来部署每个微服务中的一个。 微服务之一是 api 网关,它是唯一必须暴露给互联网的网关(我读过一些关于可以在同一个应用程序中运行但不暴露的工作人员的内容或类似的东西,我不明白这种行为)

如果不可能,另一个问题是我的微服务使用 heroku 在每个应用程序中创建的环境属性连接到数据库,因此我必须在每个微服务中手动写入另一个应用程序数据库的 URL,而不是自动连接我有代码而且它完全适用于在应用程序中部署的带有数据库的微服务。

如果不可能的话,另一个问题是,我可以像 kubernetes 那样使用名称或类似名称向另一个服务发送请求吗?

提前谢谢你,对不起我的英语(我是西班牙人)。

【问题讨论】:

    标签: spring-boot docker web heroku


    【解决方案1】:

    很多问题:-),会尽力帮助

    是的,每个 Web 进程一个 HTTP 端口,因此每个服务都是一个 Heroku 应用程序,这里没有解决方法

    工作者是不需要外部连接的后台作业(即从队列中获取,执行工作,在某处写入结果),因此在您的情况下它不起作用,因为服务需要相互通信(即使只是在内部)

    关于数据库:如果这是一个 Heroku 管理的数据库(或 Redis),我相信该 URL 会由 Heroku 自动注入为 Config Val,在这种情况下,所有服务都可以使用同一个。

    关于服务连接:一旦你部署了一个服务,Heroku 会分配一个专用 URL(即 https://.herokuapp.com/)。它不会更改它,因此您可以将其用作 REST 调用的主机。

    希望我能理解您的疑问并给予一些帮助。

    【讨论】:

    • 嗨,beppe,我会尽快给你答复,我会画出我需要的东西,看看是否可以在 heroku 上部署它,但基本上它是典型的微服务架构。
    • 是否可以创建一个 api 网关,该网关将是唯一一个开放端口而其余微服务作为工作人员的网关?这样,api网关是唯一接收请求并将内部重定向到其他微服务
    • 如果你使用 Heroku,我认为这是不可能的,worker 没有连接(仅在后台运行)并且 Heroku 不区分内部网络和外部网络。如果你想应用网关模式,你可能想使用 Digital Ocean(它不是免费的——但是很便宜——而且你可以控制公开哪些服务)
    猜你喜欢
    • 2017-09-01
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多