2013-06-19 5 views
1

많은 컴퓨터에 배포 할 akka 응용 프로그램이 있습니다. 분산 된 게시/구독 이벤트 버스 기능을 사용하여 이러한 각 응용 프로그램이 서로 통신하기를 원합니다.Akka 클러스터링 - 특정 컴퓨터에 액터가 남아있게합니다.

그러나 클러스터링을 위해 시스템을 설정하면 하나의 응용 프로그램에 대한 액터가 시작한 노드와 다른 노드에서 생성 될 수 있습니다.

배우가 속한 응용 프로그램이 시작된 컴퓨터에서만 액터를 만드는 것이 매우 중요합니다.

기본적으로 저는 배우의 탄력성 또는 클러스터링을 원하지 않습니다. 분산 된 펍/서브를 원합니다. 싱글 톤이나 롤 같은 옵션을 볼 수 있는데 여기에 언급 된 http://letitcrash.com/tagged/spotlight22이 있지만 권장되는 방법은 무엇인지 궁금합니다.

답변

0

현재 액터를 이동시킬 Akka에는 특정 컴퓨터에 프로그래밍 방식으로 배포하거나 배포를 구성 파일에 배치하는 기능이 없습니다. 그렇지 않으면 원하는대로 로컬로 생성됩니다.

(Akka 수도 일일 자동 배우 트리 분할을 얻을 수 있지만,이 아직 지정되지 않았습니다.)

+0

흠.하지만 싱글 톤 관리자는 다른 노드에서 액터를 시작합니다. 출시 예정인 파티셔닝이 비슷한 방식으로 작동하지 않습니다. 그것은 문서에서 보이는 것처럼 보입니다. 내가 틀렸을지라도 나는 그것을 다시 읽어야 할 것이다. 그렇지 않으면, 클러스터링의 요점은 무엇입니까? – Nick

+0

@Nick 특정 액터가 하나의 컴퓨터에서만 생성되도록하는 방법을 보여주는 다음 예제를 참조하십시오. http://stackoverflow.com/questions/24213196/akka-actors-scaling-across-jvms-and-servers-and-example- at-akka-io/26450349 # 26450349 – simbo1905

0

나는이 탄성 클러스터링을 사용하는 가장 좋은 방법은 아니다라고 생각합니다. 그러나 우리는 또한 같은 문제를 고려해 보았고, 액터를 엔터티 ID의 해쉬 (데이터베이스 샤드와 같은)로 노드에 퍼뜨리는 것이 유용 할 수 있다는 것을 알았습니다. 예를 들어 각 노드에서 NodeRouterActor을 하나 생성하여 메시지를 여러 개의 WorkerActor에 프록시합니다. NodeRouterActor에게 메시지를 보내면 해쉬 테이블에서 키 id % nodeCount으로 끝점 노드를 찾은 다음 엔티티를 제어하는 ​​특정 WorkerActor에 대한 끝점 NodeRouterActor 프록시 메시지를 선택합니다.

관련 문제