vert.x - 如何在重启之间保留 HA Verticle 的状态
问题描述
我正在试验 HA verticles,我想知道在重启之间保持 HA verticles 状态的最佳方法。例如,想象一个表示 Web 会话的 Verticle,其中包含可以由用户活动修改的各种字段。如果该 Verticle 运行在一个因某种原因崩溃的节点上,它将在另一个节点上重新启动,但字段将不会使用崩溃前的最后一个已知值恢复。
我查看了文档,但找不到任何“准备使用”的 API 来完成这项工作。也许我错过了什么。
我最终想到了将状态(即会话)实现为JsonObject
存储在 anAsyncMap
中的想法,其中键是事件总线上 Verticle 的地址(实际上是消息处理程序的地址)。该地址在重新启动之间保持不变,因为它是在 中提供的DeploymentOptions
,因此它在返回的对象中可用config()
,因此重新生成的 Verticle“知道”在哪里寻找会话(如果有)。
我不确定它是否是实现这一点的正确方法,以及是否没有任何我应该注意的陷阱。
感谢您的想法和反馈。
解决方案
您在这里有 2 个选项:
使用SharedData API将 Verticle之间的数据持久保存在集群范围的存储中。当集群的至少 1 个节点仍在运行时,数据将保持活动状态。
使用数据库在整个集群重启之间持久化数据。您可以选择任何可用的数据库。
推荐阅读
- sql-server - 在 ASP.NET Core MVC 中,如何将分页 WebAPI 中的所有记录提取到 SQL Server 数据库中?
- python - 多线程 python count week days 几个数据集
- javascript - 可点击行内的按钮正在激活行突出显示
- .net - Restsharp 在服务器上运行时引发 SSL 错误
- mips - MIPS 管道停顿:LW 之后的 SW
- java - 获取 AccessibilityNodeInfo 的文本颜色
- java - Spring boot - 动态加载war文件
- jquery - 将 chrome 更新到最新版本(83.0.4103.61)后,数据表中的不确定选择所有复选框无法正确呈现
- tensorflow - 我安装了 tensorflow 2.0 但 jupyter 没有看到它?
- javascript - Firefox 在编辑时错误地修剪尾随空格