0
解釋我的阿卡集羣設置:如何在加入akka中的新節點時創建遠程參與者?
- 我有一個多節點集羣阿卡遠程演員。
- 參與者位於Singleton類型的路由器之後。
- Singleton路由器位於集羣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"]
}
}