It's just like pok    version4


Actor-Reactor

 | 

소프트웨어 개발 세계에서 아주 익숙한 용어들이지만, 본질과 우유를 잘 구분하지 못했었는데 후배 개발자에게 설명을 해주면서 좀더 차분히 정리해보았다.

Actor

actor는 일종의 모델로 보는것이 옳을듯. object와 비슷한데, 외부로부터 요청 받은 메시지를 queue에 쌓아놨다가 queue에서 꺼내서 작업을 처리. 액터가 object와 다른 가장 큰 차이는 요청에 대한 응답을 실시간으로 받는지 여부이다. 즉, 요청시점에서 실시간으로 결과를 응답받지 않으면 일단 actor model로 볼 수 있다. (바로바로 일을 처리하는 object보다 요청을 쌓아놓고 처리하는 액터 모델이 Client가 아닌 자신의 관점에서 좀더 자율적이고 active하다고 생각하면 됨)

Reactor

reactor는 일종의 actor 모델로 보면 되는데, 일 시작(dispatching)과 이벤트 핸들링 관리를 하는 주체로 보면 맞을듯. 이벤트를 등록(multiplexing)하는 것으로 initiation (혹은 객체로 만든다면 reactive initiator - register)하고 변경여부를 select로 확인하여(demultiplexing) 이벤트 헨들러를 통해 변경 여부를 알려준다. 이벤트 완료 관리를 reactor에서 한다.

reactor 기능을 수행하나 asynchronous한 부분이 명시적으로 노출되면, proactor라고 볼수 있다.

참고링크


프로그래밍 하드보일드