部署Scala/Akka微服务的规范方法是什么?

Rus*_*lan 11 deployment jvm scala akka devops

我们最终会得到数十个微服务(大多数是基于Akka的),我不确定如何最好地管理他们的部署.具体而言,它们被构建为彼此独立并且尽可能专门和分布.

我的问题源于这样一个事实:它们都对于自己的JVM来说太小了; 即使我们将它们托管在AWS nano实例上,如果您考虑冗余,我们仍然会使用大约40台机器,并且根本不需要如此高的数量.三个中型实例可以(并且确实)轻松处理整个工作负载.

目前,我只是随机地将它们分组到"容器"应用程序中,然后在较大的JVM上运行这些容器应用程序.

但是,必须有一个更好的方法.我不知道Akka的任何应用程序服务器,你可以"部署演员",所以我想了解其他人如何在生产中运行Akka微服务(特别是如何管理部署).

这可能不仅限于Scala和Akka,但大多数其他平台都有专门的应用服务器来部署这些东西.

lut*_*tzh 3

恕我直言,规范的方法是使用服务编排工具,这确实会在单独的进程中运行它们,每个进程都有自己的 JVM。这是通过微服务获得所需的解耦、隔离和弹性的唯一方法,只有这样您才能单独部署、更新、停止、启动它们。

你是说:

我的问题源于这样一个事实:对于它们自己的 JVM 来说,它们都太小了;即使我们将它们托管在 AWS nano 实例上

您似乎将 JVM 和 Amazon VM 视为等效,但事实并非如此。您可以在单个虚拟机上拥有多个 JVM 进程。

我建议您查看服务编排工具,例如 Lightbend Production Suite / Service OrchestrationKubernetes

这些只是例子,还有其他例子。请注意,此工具类别将为您提供许多迟早需要的功能,例如轻松扩展、日志整合、服务查找、运行状况检查/服务故障处理等。