【问题标题】:Akka Cluster member queryAkka 集群成员查询
【发布时间】:2015-04-12 11:15:36
【问题描述】:

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

【问题讨论】:

    标签: akka akka-cluster akka-remote-actor


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 好吧,我得到了域事件的订阅,但问题就在这里。我正在使用 2 个节点 A 和 B 进行测试,其中 A 设置为种子。当 A 第一次出现,然后 B 出现时,我在 A 上收到一条 MemberUp 消息,但是当 A 下降而 B 仍然运行时,最终 A 恢复,B 没有收到 MemberUp 消息。所以我认为 A 被标记为种子可能​​与此有关。我不了解这里的基本内容吗?
    猜你喜欢
    • 2015-09-08
    • 2019-04-13
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多