Cluster Aware Router
- Cluster Node에 분배되어 있는 Actor에 대해 Route를 할수 있다
- 직접 Actor를 Deploy(배포)를 할수도 있고, Actor를 직접 찾을수도 있다 (Look up)
- Router의 종류에는 2가지가 있다, Group / Pool
- application.conf를 이용하여 정의를 할수도 있고, 직접 자바 코드를 작성해서 사용할수 있다.
Group Router
- Actor Path를 통해 Cluster Node에 있는 Actor에 대해 메시지를 보낼수 있는 Router
- Cluster Node에 해당되는 Path에 해당하는 Actor가 존재하지 않으면 그 Node로는 데이터가 가지 않는다.
application.conf
akka.actor.deployment {
/statsService/workerRouter {
router = consistent-hashing-group
routees.paths = ["/user/statsWorker"]
cluster {
enabled = on
allow-local-routees = on
use-role = compute
}
}
}
java code configuration
int totalInstances = 100;
Iterable<String> routeesPaths = Collections
.singletonList("/user/statsWorker");
boolean allowLocalRoutees = true;
String useRole = "compute";
ActorRef workerRouter = getContext().actorOf(
new ClusterRouterGroup(new ConsistentHashingGroup(routeesPaths),
new ClusterRouterGroupSettings(totalInstances, routeesPaths,
allowLocalRoutees, useRole)).props(), "workerRouter2");
Pool Router
- Actor를 직접 Cluster Node에 배포를 하여 메시지를 보낼수 있는 Router
- Cluster Node에 직접 Actor를 배포를 하기 때문에, Group가 달리 생성이 되지 않아도 사용할수 있다.
application.conf
akka.actor.deployment {
/statsService/singleton/workerRouter {
router = consistent-hashing-pool
cluster {
enabled = on
max-nr-of-instances-per-node = 3
allow-local-routees = on
use-role = compute
}
}
}
java code configuration
int totalInstances = 100;
int maxInstancesPerNode = 3;
boolean allowLocalRoutees = false;
String useRole = "compute";
ActorRef workerRouter = getContext().actorOf(
new ClusterRouterPool(new ConsistentHashingPool(0),
new ClusterRouterPoolSettings(totalInstances, maxInstancesPerNode,
allowLocalRoutees, useRole)).props(Props
.create(StatsWorker.class)), "workerRouter3");
'Programing > Akka' 카테고리의 다른 글
Akka Scheduler (0) | 2018.08.21 |
---|---|
Akka Stream Asynchronous operators (0) | 2018.08.17 |
Akka Actor / Stream / Cluster 을 이용한 확장 가능한 Task 단위의 시스템 (0) | 2018.08.15 |
Akka Distributed Publish Subscribe in Cluster #1.Subscribe/Publish (0) | 2018.08.09 |
Akka Dispatcher를 이용한 성능 튜닝 (0) | 2018.08.05 |