관리 메뉴

HAMA 블로그

Actor 모델 과 ActiveObject 패턴의 차이 본문

디자인패턴

Actor 모델 과 ActiveObject 패턴의 차이

[하마] 이승현 (wowlsh93@gmail.com) 2015. 5. 17. 17:09


http://brad2014.tistory.com/215  이전 포스팅에서 언급된 Actor 모델 과 ActiveObject  패턴의 차이에
대한 논문이 있다. 
http://members.unine.ch/anita.sobe/res/RR-I-AS-2014.06.1.pdf


간단 요약 


역사


-  멀티코어 프로그래밍의 시대가 왔고 장점에 대한 소개 
-  멀티쓰레드 프로그래밍의 어려움 소개 ( 데드락, 레이스 컨디션, 일관성깨짐등) 
-  그런 환경에서 좀더 안전하고 빠르게 개발하기위하여 Actor 모델같은 동시성 패턴이 생겨나다.
-  1973년 에 Actor 모델이 소개되었고, 인공지능의 멀티 에이전트 디자인에 의해 발전되어졌다.
-  Actor 모델은 그후  Actove Object 패턴같은 다양한 패턴들에 영향을 주었다.


차이

-   구조적으로 두 패턴모두 스케쥴러와 큐를 가지고있다.
-   구조적으로 ActiveObject 는 프록시를 활용하며 , Future 객체를 사용한다.
-   구조적으로 Actor 패턴은  ActiveObject 에 비해서 자유성이 높다. 
-   메세징/통신측면에서 ActiveObject 패턴은  미리 정해진 함수호출을 통해서 잡을 전달한다.  
-   메세징/통신측면에서 Actor 패턴은 문자열을 보내며, 그 문자열 포맷은 매우 자유롭다.
    따라서 Actor 패턴에서 각각의 Actor 의 OnRecvier 구현은 매우 유연하다.  

-   Actor 모델은 더욱 확장하기 쉬운데 어떤 액터나 프록시가 될수있고 다른 액터와 분산해서
    작업부하를 가질수있다.

-  대부분의  AOM 구현들은 정해진 서번트와 함께 쓰레드풀에 의존적이다.  
-  양쪽 모델모두 가능한 이미 존재하는 Actor 나 ActiveObject 를 재사용한다는걸 알아둬라. 
-  보통 Actor 모델은 큐가 제한이 없으며, ActiveObject 는 큐의 크기에 제한이 있다. 



다양한 패턴들  


object :   객체로 호출하면 바로 반응한다. 

actor  :   능동적인 객체 ( 즉 자신의 쓰레드가 있고 큐를 가지고있다 )  호출하면 바로 응답하지 않는다. 

reactor : actor 에 추가적으로 해당 이벤트에 대한 핸들러가 매핑되어서 디스패치하는 구조. (selector 느낌)

proactor :  행위를 actor 에 넘겨서 그 행위에 대한 결과를 받은 구조.  ( IOCP 느낌)

activeobject : 행위할수 있는 actor 에게 자신의 요청 사항을 넘겨준후에 future 객체를 이용하여 결과 파악을 함. 



Comments