Page History
...
Akka는 기본적으로 탑레벨 아키텍쳐의 설계방식으로 Actor를 위치시키고 접근을 하며
트리구조이지만, FullName을 알고있을시 직접 접근이 가능합니다. 최하위 자식노드에게도 리모트 메시지전송이 가능하며 ( 접근의 유연성)생성 관점에서 자식객체는 오로지 부모만 생성이 가능합니다.
룰정의를 통해 클러스터로의 확장이 유연합니다. ( 확장의 유연성)
장애 처리 관점에서 자식의 예외는 부모가 처리하는것을 1원칙으로, 부모의 예외를 자식노드에게 전가시키 지 않습니다.
이로써 상위 감독자에게 장애에대한 룰을 각각 적용할수가 있습니다. ( 장애를 허용하고 이를 유연하게 대처하는 장애 시스템 )이러한 설계적 원칙이 리모트/클러스터 등으로 확장이 가능하여 스케일 아웃에 있어서 구조적 설계를 유연하게 합니다.
Code Block | ||||
---|---|---|---|---|
| ||||
class PrintMyActorRefActor extends Actor { override def receive: Receive = { case "printit" => val secondRef = context.actorOf(Props.empty, "second-actor") //자식의 생성은 부모만 할수 있다. println(s"Second: $secondRef") } } val firstRef = system.actorOf(Props[PrintMyActorRefActor], "first-actor") println(s"First : $firstRef") firstRef ! "printit" //액터 생성 순서 first-actor <= second-actor 가 parent <= child 관계가 된다. First : Actor[akka://testSystem/user/first-actor#1053618476] Second: Actor[akka://testSystem/user/first-actor/second-actor#-1544706041] |
...