【问题标题】:How to deploy microservices on Heroku如何在 Heroku 上部署微服务
【发布时间】:2017-06-07 07:53:49
【问题描述】:

我阅读了很多有关微服务的内容,并希望使用这种方法构建我的应用程序。到目前为止,我所知道的是我需要一些服务,例如:

  • 负载均衡器 - 处理每个请求,并将其推送到其他服务
  • 授权服务 - 授权我的用户
  • 数据库 - 用于我的微服务。我想为每项服务使用一个具有不同架构的数据库实例。
  • 服务 A - 用于功能 A
  • 服务 B - 用于功能 B

  • 等。等等等等。

我发现 Heroku 是部署应用程序的有趣场所。我的问题是我完全不理解他们的意识形态。到目前为止,我所做的是创建/注册了几个“应用程序”:

  • my-app-auth
  • 我的应用负载平衡器
  • 等。等

我明白了,Heroku 为每个应用程序都提供了一些公共主机名,这就是我开始担心的地方。我应该使用公共主机名部署我的内部服务吗?我不这么认为。我的问题来了:

谁能给我一些指导,如何处理 Heroku 上的微服务?我应该如何部署它们?我应该如何定义我的负载均衡器,并将内部服务连接到它?什么是 JHipster?我需要吗?我该如何使用它?我应该使用 Heroku 工具(例如 CLI)还是可以继续使用我的 gitlab 存储库?我在互联网上找不到任何关于这个的掌握点。

【问题讨论】:

  • 您似乎把一些事情搞混了(Heroku 和 Gitlab 是不同类型的公司,一个托管您的 webapp,另一个托管您的代码/CI)。此外,如果您不确定 JHipster 是什么,我建议您在开始使用它生成微服务之前阅读文档。这是一篇介绍在 Heroku 上部署 JHipster 微服务的文章:blog.heroku.com/…

标签: heroku architecture jhipster microservices


【解决方案1】:

Heroku 是一家非常简单的平台即服务公司。 Heroku 的工作方式非常简单:

  • 您在 Git 存储库中有多个项目(服务)。
  • 您为每个项目(每个 Git 存储库)创建一个 Heroku 应用程序。
  • 然后,您将代码从每个 Git 存储库推送到各自的 Heroku 应用程序。
  • Heroku 为您拥有的每个应用程序分配一个公共 URL。
  • 如果您的每个服务现在都在 Heroku 上运行,它们可以通过公共 HTTP 相互发送 API 请求。

现在——关于您关于 Heroku 上面向服务的架构的问题。

如果您在 Heroku 上进行 SOA,则需要让每个服务通过 HTTPS 公开地相互通信。这是典型的“模式”。

因为 Heroku 为每个应用程序提供免费 SSL,并且每个应用程序都位于同一个 Amazon 区域 - 通过 HTTPs 在您的服务之间进行来回通信非常快速且安全。

每个 Heroku 应用都有自动负载平衡,因此无需担心负载平衡器。

这里的下一个选项(如果您不想遵循典型模式)是使用 RabbitMQ 或 Amazon SQS(一种排队服务)之类的东西,并在您的不同服务之间共享“消息”。

在这种模式下,您仍然会为每个服务使用一个 Heroku 应用程序,但您不会通过 HTTPs 相互通信,而是通过 Rabbit 或 SQS 等队列协议与其他服务通信。这有一些速度优势。

关于身份验证服务,您可以使用多个提供程序来提供此功能。我所知道的最受欢迎的是Stormpath。如果你浏览Heroku addon marketplace,你也可以找到其他人。

最后,对于数据库的东西:你可以使用任何你想要的数据库提供者。最受欢迎的可能是Heroku Postgres。它是 PostgreSQL 的托管版本,非常可靠/易于使用。

您可以在所有服务之间共享一个数据库,也可以为每个服务拥有一个数据库。两种策略都可以正常工作。

【讨论】:

  • 非常感谢您的回答。您能否扩展它并告诉我您对在heroku 上使用数据泊坞窗图像有何看法?如果它不常见(因为 Heroku 提供了很好的扩展机制),为什么互联网上有这么多关于它的信息和文章?此外,如果我能了解您对 Eureka 或 Zuul 等 Netflix 解决方案的看法,我会非常高兴。我想 Eureka 作为我的服务的入口点很常见,但据我了解负载均衡器是开销,对吗?
  • 嘿,我认为这些最适合其他 StackOverflow 问题。如果我把所有这些都放在这个帖子里,那会让读者感到困惑。
  • 你是对的。我添加了新问题 stackoverflow.com/q/41814001/2849613 。如果您愿意,请查看 ;)
  • @rdegges BTW 根据服务条款 4.4 heroku.com/policy/tos 似乎不允许微服务应用程序,因为它们基本上是 imulate or act as a single Application。还是我错了?
  • 这不再相关。 Heroku 不会为您拥有的每个应用程序提供 1 个免费的测功机。他们不久前改变了定价模式。您现在每月可以获得一定数量的免费测功机小时数,可在所有应用程序中使用。所以这不会有什么不同。
猜你喜欢
  • 1970-01-01
  • 2019-11-10
  • 1970-01-01
  • 2020-07-03
  • 2018-06-13
  • 2016-11-19
  • 1970-01-01
  • 2018-04-18
  • 2016-08-30
相关资源
最近更新 更多