Akka Cluster Scheduler - 节点宕机时会发生什么

时间:2021-01-31 20:33:28

标签: akka akka-cluster akka-persistence

我想在我的集群中有一个调度程序,它会在一段时间后发送一些消息。从我看到的调度程序是每个actorsystem,从我的测试只针对本地actor系统。不是集群一。所以如果在一个节点上调度某事,如果它宕机了,那么所有调度的任务都会被丢弃。

如果我创建一个负责调度的集群单例,已经制定的调度能否在其他节点上继续存在?或者我应该将它保留为具有已经创建的时间表元数据结构的持久参与者,并在 preStart 阶段重新安排所有持久化的内容?

1 个答案:

答案 0 :(得分:2)

如果之前所在的节点宕机或离开集群,集群单例将在另一个节点上转世。

那个轮回将从一个干净的石板开始:它不会记得它的“前世”。

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

根据调度的任务数量以及如果您希望在完整的集群重启时丢弃调度,可能可以使用 Akka Distributed Data 将调度元数据分布在集群周围(具有可调整的一致性),然后让集群单例调度参与者读取该元数据。

相关问题