Объясняя мой Akka настройки кластера:Как создаются удаленные актеры при объединении новых узлов в akka?
- У меня есть удаленные актеры в мульти узле Akka кластера.
- Актеры находятся за маршрутизатором, который имеет тип Singleton.
- Singleton Router находится за прокси-сервером Cluster Singleton.
- Кроме того, на боковой ноте у меня есть N типов актеров, каждый из которых выполняет различную задачу и управляется другим маршрутизатором.
Фрагмент кода (Java)
Config config = ConfigFactory.parseString(
"akka.remote.netty.tcp.port=" + 2551).withFallback(
ConfigFactory.load());
ActorSystem system = ActorSystem.create("CalcSystem", config);
Address[] addresses = {
AddressFromURIString.parse("akka.tcp://[email protected]:2551"),
AddressFromURIString.parse("akka.tcp://[email protected]:2552"),
AddressFromURIString.parse("akka.tcp://[email protected]:2553")
};
ActorRef router = system.actorOf(
ClusterSingletonManager.props(new ClusterRouterPool(new RoundRobinPool(2),
new ClusterRouterPoolSettings(100, 3,
false, "")).props(
new RemoteRouterConfig(new RoundRobinPool(6), addresses).props(
Worker.createWorker())),PoisonPill.getInstance(),settings),"workerRouter");
ClusterSingletonProxySettings proxySettings = ClusterSingletonProxySettings.create(system);
ActorRef routerProxy = system.actorOf(ClusterSingletonProxy.props("/user/workerRouter", proxySettings), "routerProxy");
Мои сомнения относительно того, как сделать список Адрес динамический один? Текущий жесткий список адресов не будет работать.
Как только новые узлы объединяются в кластер, маршрутизаторы/ClusterSingletonManager должны уметь распознавать это и создавать удаленные участники на этом новом узле (это может быть новый узел, добавленный в уже существующий кластер, или это может быть случай загрузки всего кластера в первый раз или в случае развертывания нового кода)
Что касается моих семенных узлов, они упоминаются в файле akka.conf.
akka {
actor {
provider = "akka.cluster.ClusterActorRefProvider"
}
cluster {
seed-nodes = [
"akka.tcp://[email protected]:2551"]
}
}