2017-05-10 4 views
1

이것은 akka에 관한 몇 가지 기본적인 질문입니다. 나는 akka에서 완전히 녹색이므로 어떤 충고도 환영받습니다.기본 akka 찾기 배우와 상태

수백만 명이 아니라 수천 명의 사용자가있는 애플리케이션이라고 가정 해보십시오.

도메인 모델은 각 사용자가 한 국가 내의 한 지역에 위치하는 즉, 한 국가에는 여러 지역이 있고 하나의 지역에는 여러 사용자가있는 계층입니다.

나는 akka에서 정확한 동일한 계층 구조를 만들려고합니다. CountryActor -> * RegionActor -> * UserActor. CountryActor/RegionActor 것이다 따로 부모 인에서, 또한 등 아이를 감독, 통계 계산, 뉴스 피드를 수집하는 등의 기능 의무를 가지고

Q1 : 그것은 도메인 모델이 방법을 모방 의미가 있습니까?

Q2 : 액터에 각 엔티티의 속성을 저장해야합니까? 이렇게하면 데이터를 한 번만 저장하면 akka 시스템이 효과적으로 메모리 데이터베이스가됩니다.

(의사 코드)

CountryActor { 
    Name, 
    CountryCode, 
    (children = list of RegionActors handled by akka) 
} 

RegionActor { 
    Name, 
    RegionCode, 
    (children = list of UserActors handled by akka) 
} 

UserActor { 
    UserId, 
    Firstname, 
    Lastname, 
    Alias, 
    ReceiveRegionalNews, 
    ReceiveCountryNews, 
    ... 
} 

Q3 : 어떻게 효율적으로 userId를하여 사용자를 조회 할? UserActor의 하위 이름이 userId가 될 것으로 예상하지만 userId 만있는 경우 getContent(). findChild (userId)를 수행하기 위해 올바른 국가 및 지역을 찾아야합니다. 모든 사용자 ID의 전체지도를 유지하고 배우에 대한 참조를 유지해야합니까?

Q4 : 주에서 배우를 찾는 방법은 무엇입니까? 각 사용자가 RegionalNews 특성을 켤 수 있다고 상상해보십시오. 즉, RegionalActor에서 뉴스를 수신하려고합니다. RegionalActor가 모든 청취자에게 뉴스를 배포하고 싶을 때마다 어떻게 찾을 수 있습니까? 이 속성을 가진 사용자의 내부지도를 유지합니까 아니면 모든 자녀에게 브로드 캐스트를하고 모든 응답자에게 보냅니 까? 사전

답변

1

에서

덕분에 나는 Akka (닷넷) 특히이 물건을 모델링 경험의 엄청난 금액을 가지고 있지 않지만, 나는이 패러다임의 어느 것도 마법 없다는 것을 알 수있을만큼 늙었 및 배우 시스템이 계층 적이기 때문에 임피던스 불일치라고 불리는 것없이 모든 데이터를 그러한 구조에 맞출 수있는 것은 아닙니다. 당신의 라인을 따라 더 생각한다면

은 ...

  • UserManagerActor은 UserActors의 일부 아이 당 개체 관리를하고;
  • 과 함께, 적어도 Region이 일부 pub-sub 패턴을 구현하고 해당 구독자 목록을 유지하는 국가/지역 계층 구조.
  • 만들어지면 사용자가 해당 지역 (또는 보트를 떠 다니는 경우 하나 이상)에 가입 메시지를 보냅니다.

... 그러면 필요한 모든 작업이 훨씬 쉬워 보이겠습니까?

There's more on design patterns here - 너무 많이 들지는 마세요.