Можно ли с кластером akka запросить, какие члены в данный момент находятся в кластере? Если начальный узел выходит из строя и в конечном итоге снова поднимается, может ли он узнать, какие другие члены используют его в качестве начального узла?
Запрос члена кластера Akka
Ответы (1)
Вы можете получить моментальный снимок текущих членов кластера следующим образом:
val system = ActorSystem(...) // whatever
val members = Cluster(system).state.members
Но это может быть устаревшим. Если вам нужно отслеживать членство в кластере, вы должны подписаться на события кластера.
val monitor = system.actorOf(Props[MyClusterMonitor])
Cluster(system).subscribe(monitor, classOf[ClusterEvent.ClusterDomainEvent])
Затем этот субъект будет получать обновления о членах кластера по мере изменения их состояния.
Начальные узлы не имеют никаких особых качеств, кроме того, что они указаны в качестве семян другими членами кластера. Как только участник использовал начальное число для присоединения, у него больше нет никаких особых отношений, он просто является членом одного и того же кластера. Узел может только узнать, какие узлы он считает семенами (хотя вы можете написать свой собственный код для перемещения этих данных по кластеру, лично я не могу придумать вариант использования для этого).