如何在重启之间保留 HA verticle 的状态

How to reserve the state of an HA verticle between restarts

我正在试验 HA Verticle,我想知道在重启之间保留 HA Verticle 状态的最佳方法。例如,假设一个 Verticle 表示一个 Web 会话,其中包含可以由用户 activity 修改的各种字段。如果该 Verticle 在一个节点上运行,但由于某种原因崩溃,它将在另一个节点上重新启动,但这些字段将不会恢复为崩溃前的最后一个已知值。

我查看了文档,但找不到任何 "ready to use" API 来完成这项工作。也许我错过了什么。

我最终想到将状态(即会话)实现为 JsonObjects 存储在 AsyncMap 中,键是事件总线上 Verticle 的地址(实际上是地址消息处理程序)。地址在重新启动之间保持不变,因为它在 DeploymentOptions 中提供,因此它在 config() 返回的对象中可用,因此重新生成的 Verticle "knows" 在哪里寻找会话,如果有的话。

我不确定这是否是正确的实现方式,如果没有任何我应该注意的陷阱。

感谢您的想法和反馈。

这里有 2 个选项:

  1. 使用 SharedData API 将 Verticles 之间的数据保存在集群范围的存储中。当集群中至少有 1 个节点仍然 运行.

  2. 时,数据保持活动状态
  3. 使用数据库在整个集群重启之间持久化数据。您可以选择任何可用的数据库。