Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  Akka는 기본적으로 탑레벨 아키텍쳐의 설계방식으로 Actor를 위치시키고 접근을 하며

트리구조이지만, FullName을 알고있을시 직접 접근이 가능합니다. 최하위 자식노드에게도 리모트 메시지전송이 가능하며 ( 접근의 유연성)생성 관점에서 자식객체는 오로지 부모만 생성이 가능합니다. 

룰정의를 통해 클러스터로의 확장이 유연합니다. ( 확장의 유연성)

장애 처리 관점에서 자식의 예외는 부모가 처리하는것을 1원칙으로, 부모의 예외를 자식노드에게 전가시키 지 않습니다.

이로써 상위 감독자에게 장애에대한 룰을 각각 적용할수가 있습니다. ( 장애를 허용하고 이를 유연하게 대처하는 장애 시스템 )이러한 설계적 원칙이 리모트/클러스터 등으로 확장이 가능하여 스케일 아웃에 있어서 구조적 설계를 유연하게 합니다.



Code Block
languagescala
title기본 액터생성
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]

...