我们最终会得到数十种这样的微服务(大多数都是基于Akka的),而且我不确定如何最好地管理他们的部署。具体而言,它们的构建是相互独立的,并且尽可能专业化和分布式。
我的问题源于这样一个事实:它们都对于自己的JVM来说太小了;即使我们将它们托管在AWS nano实例上,如果您考虑冗余,我们仍然会使用大约40台机器,并且根本不需要如此高的数量。三个中型实例可以(并且确实)轻松处理整个工作负载。
目前,我只是将它们分组到"容器"应用程序,有点随机,然后在较大的JVM上运行这些容器应用程序。
但是,必须有更好的方法。我不知道Akka的任何应用程序服务器,你可以只是部署演员",所以我想了解其他人如何在生产中运行Akka微服务(特别是如何管理部署)。
这可能不仅限于Scala和Akka,但大多数其他平台都有专门的应用服务器来部署这些东西。
答案 0 :(得分:2)
恕我直言,规范的方法是使用服务编排工具,这确实会在各个进程中运行它们,每个进程都有自己的JVM。 这是您通过微服务获得所需的解耦,隔离和弹性的唯一方法,只有这样您才能够单独部署,更新,停止和启动它们。
你在说:
我的问题源于这样一个事实,即所有这些都太小了 他们自己的JVM;即使我们要在AWS nano上托管它们 实例
您似乎将JVM和Amazon VM视为等效,但事实并非如此。您可以在单个虚拟机上拥有多个JVM进程。
我建议您查看服务编排工具,例如 Lightbend Production Suite / Service Orchestration 或Kubernetes
这些仅是示例,还有其他示例。请注意,此工具类别将为您提供许多您迟早需要的功能,例如轻松扩展,日志整合,服务查找,运行状况检查/服务故障处理等。