基于 akka 集群的应用程序的自动缩放 out/in 设置

Automatic scaling out/in setup of akka-cluster based application

假设您有一个基于 akka-cluster 的 application/REST API.

此应用程序服务于CPU绑定请求和内存绑定请求。 假设您设计的应用程序是这样的,如果一个节点以 cpu 角色加入,那么 节点将用作 cpu 绑定请求的资源(通过某种集群感知路由器),如果节点以 memory 角色加入,则该节点将用作内存绑定请求(例如,通过具有持久性参与者的集群分片)。

实现此类应用的自动缩放需要什么?集群如何标记 "outside" 它需要更多(或更少)一种类型或另一种类型的节点?我找不到此类设置的任何示例。

akka-cluster 不会自动 "flag" 到外部,除非您为它创建一些代码。但是,在 public 云环境中,例如 AWS,自动缩放概念的工作方式略有不同。常规方法是设置一个警报(集群外部)来监控指标(CPU 或内存)。当警报触发时,您可以执行操作。一项操作可以是启动所需角色的新实例(CPU 或内存)。

当您需要缩减规模时,也会发生同样的情况,但是您需要注意即将关闭的节点中 运行 的运行中工作负载。

另一个重要方面是当一个新节点出现并想要加入集群时的服务发现,为此我建议使用模块akka-managementhttps://github.com/akka/akka-management

长话短说,akka-cluster 不提供自动缩放的工具,您需要编写一些代码或使用集群周围的一些工具来实现它。