You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 19 Next »

AKKA에서는 다양한 라우팅 전략을  디플로이 환경설정 전략으로 최소의 코드변경만으로 적용가능합니다.

또한 이러한 전략을 적용하기 위해 운영중 장비를 Down없이  다이나믹하게 스케일아웃할수있는 

클러스터로 개념으로 확장 가능합니다.

성능관련 스케일 아웃은 라우팅 전략과 관련이 있고

운영중 장비를 Down없이 스케일 늘리고 줄일수 있는 탄력적 전략은 클러스터링과 연관이 있다고 볼수 잇습니다.

기술적으로 AKKA내에서 클러스터는 병목 현상이 없는 탄력적인 분산형 피어 투 피어 네트워크라고 정의 내릴수 있습니다.


RoundRobin



Round Robin Router

단순하게 들어온 메시지 순서대로, 순차적으로 대상 노드를 바꿔가며 전송시 사용

ex>단순한 RestAPI의 성능향상및 특정 노드 장애 대응에대한 다중화구성 ( 기본적으로 Pool에 등록된 Node Crash발생시 어떠한 라우터라도 해당 노드와 통신시도를 하지 않음)



Broadcast



Broadcast Router


어떠한 정보의 변경을 모든 노드가 알아야할시, 주로 전체 동기화및 전체 푸시용도


ConsistentHashing



ConsistentHash Router

특정 처리에 대해 해시값기반 베이스로 노드의 변경의 가능성을 최소화할때

ex>

  • 웹소켓 (핸드쉐이크 성공이후, 노드변경시 웹소켓으로 작동안됨)기능 보장
  • 자체캐쉬 작동 보장(성능을 위해 노드 자체에 서버 캐시처리를 하였지만, 노드변경시 서버캐시 적용못받음)
  • 최초 설계에의한 제한적 분산(기능적으로 생성한 오브젝트가 예상되는 특정 노드에 있어야하는 경우등)
  • SSL등 로그인 세션유지 ( 노드변경시 재인증을 받아야하는 성능이슈)



ScatterGatherFirstCompleted



ScatterGatherFirstCompleted Router

성능을 위해 다중노드로 구성하였으며, 가장 빠르게 처리한 녀석의 결과를 사용할시

ex> 인덱스된 데이터가 불규적으로 분산되거나 중복이있을시 , 가장 빠른 결과물을 사용할시 ( 검색엔진)


SmallestMailbox



SmallestMailbox Router

덜바쁜 노드우선으로 메시지를 보내고자 할때


추가참고 자료

 같은팀원이 소개해줘서 알게되었는데, RabiitMQ가  중간에는 Queue 를 적용시키고 양 끝단에는 적절한 Route전략을 사용하여

대용량 전송 메시지가 분산처리되어 최대한 보장을 지원하는 메시지 플래폼입니다. 

여기서 중간 사용되는 Queues 방식이 AKKA에서 언급되는 라우터방식인 SmallestMailBox의 형태와 유사한듯보입니다.


Rabbit MQ를 살펴 보면서 알게되었는데, 양방향 실시간성 분산 메시지 처리에 있어서,

조금더 자유도가 있는 AKKA에서 추구하려는 아키텍쳐와 유사한듯 보입니다.

이 문서의 목적은 AKKA 툴킷사용으로 한정짓는게 아닌, 학습과정중 알지못했던 분산처리 기초지식을 배우는데 의의가 있습니다.


실습 예정:

  • Actor를 분산 배치
  • Actor를 클러스터화
  • 특정 Node를 Up/Down하면서 클러스터 복구력및 확장력 테스트 ( 장비변경및 업데이트 시나리오)





  • No labels