Page History
...
Code Block | ||||
---|---|---|---|---|
| ||||
# 기본 스레드 풀 사용처리속도가 빨라 동시 처리량이 작게 필요한 경우 fast-dispatcher { type = Dispatcher throughput = 2 } # 기본 스레드 풀 사용처리속도가 느려 동시 처리량 확보가 필요한 경우(8번째 동시처리는 7번째 동시처리중 하나가 끝날때를 기다림) slow-dispatcher { type = Dispatcher throughput = 7 } |
스레드 풀까지 고려한 설정을 일반적으로 할 필요는 없지만, 더 깊이있는 최적화를 한다고하면
위와같이 액터의 메시지 처리에 사용되는 스레드를 분리할수 있고 최적화 할수 있다.
라우터가 보통 라우터 설정이 스케일 아웃을 위한 기능이라고 한다고하면, Dispatcher 를 통한 스레드 효율성 전략은
...
스레드가 무조건 많다고 많이 처리할수 있는것이 아니기때문에 , 최적화값을 찾아내는것은 찾아내는것은 어려운일중에 하나다
더 자세한 심화학습을 하고자 한다면 다음 문서 참고 : https://doc.akka.io/docs/akka/current/dispatchers.html
최종 설정이 적용된 코드
Code Block | ||||
---|---|---|---|---|
| ||||
services.AddAkkaActor<HigPassGateActorProvider>((provider, actorFactory) => { var actor = actorFactory.ActorOf(Props.Create<HigPassGateActor>() .WithDispatcher("fast-dispatcher") .WithRouter(FromConfig.Instance), "highpass-gate-pool"); return () => actor; }); services.AddAkkaActor<CashGateActorProvider>((provider, actorFactory) => { var actor = actorFactory.ActorOf(Props.Create<CashGateActor>() .WithDispatcher("slow-dispatcher") .WithRouter(FromConfig.Instance), "cashpass-gate-pool"); return () => actor; }); |
라우터 전략과 각 라우티에 사용된 액터에 스레드 사용전략을 복합적으로적용한 코드
지금 까지 설정한 내용이 항상 최적화된 상태로 작동됨을 보장할수는 없다.
메시지를 분산처리 해야하는 네트워크 환경에서 튜닝을 할수 있냐? 없냐? 의 차이는 아주 크다.
변경 소스 : https://github.com/psmon/AkkaForNetCore/commit/b24003bf16289e171111057174a970c9e45ef2ed
...