【发布时间】:2019-03-28 20:01:08
【问题描述】:
我正在使用 ConsistentHashingGroup,我希望在集群中具有该组的路由的 Akka 节点出现故障时收到通知。
有没有办法在不订阅集群事件的情况下做到这一点? 找到哪些路由放置在崩溃节点上的最佳方法是什么? 我想从持久存储中恢复这些路由的数据。
【问题讨论】:
我正在使用 ConsistentHashingGroup,我希望在集群中具有该组的路由的 Akka 节点出现故障时收到通知。
有没有办法在不订阅集群事件的情况下做到这一点? 找到哪些路由放置在崩溃节点上的最佳方法是什么? 我想从持久存储中恢复这些路由的数据。
【问题讨论】:
这需要监听集群事件。使用一致的散列,当节点拓扑发生变化(删除或添加节点)时,使用散列进行路由将意味着消息可能会开始发送到比之前路由到的另一个参与者。要了解特定参与者的哈希值,您可能必须从参与者那里报告每条消息。如果状态与特定的哈希相关联,那将是有问题的,因为您如何保证在消息被路由到参与者之前恢复正确的状态。
您可能想查看Akka Cluster Sharding,它基于标识符进行路由,并确保给定 id 只有一个参与者活动,在集群更改时重新平衡等。对于绑定到特定的持久状态非常有用收件人。
【讨论】: