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] |
...