Akka-Cluster模块用于在应用程序中进行群集。
如果我们有一个设置,其中运行在节点上的实体参与者(我们可能有分布在节点上的数百个参与者)被调度为每1分钟接收一次消息(使用定时器/调度器),当托管参与者的节点正常和不正常关闭时会发生什么
我们如何确保在另一个节点上自动创建实体执行元?是仅在接收到第一条消息时创建实体执行元,还是在应用程序中没有任何逻辑的情况下自动创建执行元?此外,执行元的调度程序会发生什么情况。调度程序是否可以在执行元迁移到其他节点后自动运行..注意到目前为止,我还没有计划使用持久性?但它是否有助于为自动实体创建和消息调度提供持久性
1条答案
按热度按时间k10s72fa1#
如果实体参与者是使用集群分片来管理的,你可以使用记住实体来自动保持实体的活动状态,直到实体钝化自己。在kubernetes或类似的环境中,没有可靠的持久性存储连接到示例,这需要Akka Persistence的支持。
如果不使用集群分片,那么您可能必须使用持久性来实现类似的功能。
请注意,在重新平衡之后,实体参与者的状态不会恢复,除非实体参与者以某种方式是持久的(例如,通过使用Akka Persistence将其自身作为事件源)。该状态将包括计时器状态。实体参与者将被重新创建(最常见的是使用
Behaviors.setup
(我忘记Java API是否使用该名称)),因此这取决于参与者在响应该消息时应该做什么: