Page History
...
draw.io Board Diagram | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
클러스터 내에서는 PubSub을 브로드캐스트 방식을 사용하지 않고도 , 정확하게 구독한 객체에게 전송이 가능하며
이것이 가능한 이유중에 하나는 클러스터내에서 P2P 전송을 지원하며 물리적 주소를 알 필요없이 Key와 같은
가장 작은단위의 메시지 전송방식은 보낼대상 지점을 통해 P2P 전송이 가능합니다.
실제 중간지점의 전송계층을 경유하지 않고 클러스터내 Node내 액터간 1:1 통신을 할수 있으며 물리적인 위치를 알필요없이 위치투명성을 이용합니다논리적으로 생성한 주소만으로 원격지의 객체에게 이벤트 전송을 할수있습니다.
클러스터 테스트 코드
Code Block | ||
---|---|---|
| ||
// A와 B는 다른 포트로 구성된 Node입니다. testKitA = ActorTestKit.create("ClusterSystem",cluster1) testKitB = ActorTestKit.create("ClusterSystem",cluster2) @Test fun testClusterRouter(){ //테스트를 위한 준비코드 val probeA = testKitB.createTestProbe<Receptionist.Listing>() val probeB = testKitB.createTestProbe<HelloActorAResponse>() var list = testKitB.system().receptionist() list.tell(Receptionist.find(ClusterHelloActorA.ClusterHelloActorAKey, probeA.ref)) val listing = probeA.receiveMessage() //실제 활용되는 코드 val router = listing.getServiceInstances(ClusterHelloActorA.ClusterHelloActorAKey) router.forEach { it.tell(HelloA("Hello", probeB.ref)) probeB.expectMessage(HelloAResponse("Kotlin")) } } |
- val router : 위치 투명성이 있는 객체로 클러스터를 접근하는 논리적인 키만 알고 있으면 시스템내에 생성이 가능하며 논리적인 키를 보유한 원격지 액터에게 전송이 가능합니다.
- ClusterHelloActorAKey 라는 논리적 키로
- ClusterHelloActorA.ClusterHelloActorAKey 라는 논리적 주소만으로, B 시스템에서 A 시스템에 구성된 액터에게 이벤트를 보내고 응답을 받는 샘플입니다.
...
이를 바탕으로 단위별 비교 표를 작성하겠습니다.
이벤트 수 | 상태없는 Pub/Sub 전송 수 | 상태있는 액터 클러스터 전송 수 | Akka 분산 Pub/Sub 전송 수 |
---|---|---|---|
1 | 10,010 | 1,010 | 51 |
10 | 100,100 | 10,100 | 510 |
100 | 1,001,000 | 101,000 | 5,100 |
1,000 | 10,010,000 | 1,010,000 | 51,000 |
10,000 | 100,100,000 | 10,100,000 | 510,000 |
100,000 | 1,001,000,000 | 101,000,000 | 5,100,000 |
분석 및 결론
- 상태없는 Pub/Sub는 여전히 모든 이벤트를 모든 사용자에게 브로드캐스트하기 때문에 네트워크 트래픽이 매우 높습니다. 중간 장치가 있더라도, 단순한 중계 역할만 하기 때문에 네트워크 전송 수에 큰 영향을 주지 않습니다.
- 상태있는 액터 클러스터는 상태 기반 필터링을 통해 전체 이벤트의 약 10%만 최종 사용자에게 전달되므로, 상태없는 Pub/Sub에 비해 네트워크 전송 수가 크게 줄어듭니다.
- Akka 분산 Pub/Sub는 필터링과 구독 그룹을 통해 추가적으로 10배의 네트워크 트래픽 절감 효과가 있으며, 중간 장치에서도 필터링이 적용되므로 네트워크 전송 수가 가장 낮습니다.
...