Akka Cluster Scheduler-当节点出现故障时会发生什么



我希望在集群中有一个调度器,它可以在一段时间后发送一些消息。从我所看到的调度器是按actor系统的,从我的测试中只针对本地actor系统。不是集群一。因此,如果在一个节点上安排一些事情,如果它停止了,那么所有计划的任务都会被丢弃。

如果我创建一个负责调度的Cluster Singleton,那么已经制定的调度是否可以在其他节点上重新制定?或者,我应该把它作为一个持久的参与者,使用已经创建的时间表元数据的结构,并在预启动阶段重新安排所有持久化的内容吗?

如果以前所在的节点被关闭或离开集群,集群单例将在另一个节点上重新生成。

这种转世将从一个全新的开始:它不会记得自己的";过去的生活";。

然而,如果它是一个持久参与者(或者,等效地,它的行为是Akka Typed中的EventSourcedBehavior),它将在启动时从事件流(和/或快照)恢复其状态。对于持久性参与者来说,这通常不需要做任何事情preStart:持久性实现将负责重放事件。

根据计划的任务数量以及是否希望在完全重新启动集群时放弃计划,可以使用Akka Distributed Data在集群中分发计划元数据(具有可调谐的一致性),然后让集群单例计划参与者读取该元数据。

最新更新