0

使用akka集群,是否可以查询集群中当前有哪些成员?如果种子节点出现故障,最终又恢复了,它能否找出其他成员正在使用它作为种子节点吗?

4

1 回答 1

2

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

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

但这可能已经过时了。如果您需要跟踪集群成员,您应该订阅集群事件。

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

然后,该参与者将在集群成员的状态发生变化时收到有关其成员的更新。

种子节点除了被集群的其他成员列为种子之外没有特殊的品质。一旦成员使用种子加入,他们不再有任何特殊关系,他们只是同一个集群的成员。一个节点只能找出它认为哪些节点是种子(尽管您可以编写自己的代码来在集群中传输这些数据,但我个人想不出一个用例)。

于 2015-02-12T02:47:06.377 回答