首页 > 解决方案 > 如何在重启之间保留 HA Verticle 的状态

问题描述

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

我查看了文档,但找不到任何“准备使用”的 API 来完成这项工作。也许我错过了什么。

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

我不确定它是否是实现这一点的正确方法,以及是否没有任何我应该注意的陷阱。

感谢您的想法和反馈。

标签: vert.x

解决方案


您在这里有 2 个选项:

  1. 使用SharedData API将 Verticle之间的数据持久保存在集群范围的存储中。当集群的至少 1 个节点仍在运行时,数据将保持活动状态。

  2. 使用数据库在整个集群重启之间持久化数据。您可以选择任何可用的数据库。


推荐阅读