Vert.x 节点集群上的 Verticle 公平分布

Fair distribution of verticles on a Vert.x cluster of nodes

我一直在试验 Vert.x 高可用性功能来测试水平可伸缩性和弹性。我有一个基于 Hazelcast 的多个节点集群。我正在通过 HTTP API 在任何节点上创建 Verticles。 Verticles 在创建时设置了 HA 标志。

测试可扩展性

如果我有 n 个节点 Nn 加载了 HA-verticles,并且如果我添加一个额外的节点,则没有从新节点上的 Nn 节点迁移的 Verticle这样负载就会平衡。有没有办法告诉 Vert.x 这样做,或者不这样做?相信没那么简单...

测试弹性

如果我有 n 个节点 Nn 加载了 HA-verticles 并且我杀死了其中一个节点,那么来自该节点的所有 Verticle 都会被迁移,但是会迁移到其中一个节点上剩余的节点并不总是负载最少的节点。该目标节点可能会过载,整个集群将面临冻结或崩溃的风险。和以前一样的问题:有没有办法 force Vert.x 来平衡所有节点上重新启动的 Verticle,或者至少在负载最少的节点上?

你的观察是正确的,没有办法:

  • 将故障节点的 Verticles 分布到其余节点
  • 防止在已加载的节点中启动 Verticles

改进 HA 功能不在 Vert.x 路线图上。

如果看起来您需要的不仅仅是基本的故障转移,我建议您使用专门的基础设施工具,这些工具可以利用来自监控系统的信息,并根据需要 start/stop 新节点。