Akka集群成员查询

问题描述:

对于akka集群,是否可以查询集群中当前有哪些成员?如果种子节点出现故障并最终恢复正常,是否可以找出其他成员将其用作种子节点的其他成员?Akka集群成员查询

您可以获得当前群集成员像这样的快照:

val system = ActorSystem(...) // whatever 
val members = Cluster(system).state.members 

但是,这可能是过时的。如果您需要跟踪群集成员资格,则应订阅群集事件。

val monitor = system.actorOf(Props[MyClusterMonitor]) 
Cluster(system).subscribe(monitor, classOf[ClusterEvent.ClusterDomainEvent]) 

该角色将随着群集成员的状态更改而接收更新。

种子节点除了被群集的其他成员列为种子以外没有特殊的特性。一旦成员使用种子加入,它们就不再有任何特殊关系,它们只是同一个群集的成员。一个节点只能找出它认为是种子的节点(尽管你可以编写你自己的代码来围绕群集传输数据,但我个人无法考虑这种情况)。

+0

那么我得到了订阅域名事件,但这里是问题所在。我正在用2个节点A和B进行测试,并将A设置为种子。当A第一次出现,然后B出现时,我在A上得到了一个MemberUp消息,但是当A随着B仍然上升而下降,并且最终A重新出现时,B没有拿起MemberUp消息。所以我认为A被标记为种子可能​​与此有关。我在这里不理解一些基本的东西吗? – samyem 2015-02-12 14:03:18