使用akka群集,是否可以查询群集中当前的成员?如果种子节点出现故障并最终恢复,是否可以找出其他成员正在将其用作种子节点?
答案 0 :(得分:2)
您可以像这样获取当前集群成员的快照:
val system = ActorSystem(...) // whatever
val members = Cluster(system).state.members
但这可能已经过时了。如果需要跟踪集群成员资格,则应订阅集群事件。
val monitor = system.actorOf(Props[MyClusterMonitor])
Cluster(system).subscribe(monitor, classOf[ClusterEvent.ClusterDomainEvent])
随着状态发生变化,该演员将接收集群成员的更新。
除了被群集的其他成员列为种子之外,种子节点没有特殊的品质。一旦成员使用种子加入,它们就不再具有任何特殊关系,它们只是同一群集的成员。一个节点只能找出它认为是种子的节点(尽管你可以编写自己的代码来将数据传送到集群周围,但我个人认为没有用例)。