반응자 패턴

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기

반응자 패턴(Reactor pattern)은 동시에 들어오는 서비스 처리 요청을 관리하는 이벤트 처리 패턴이다.

구조[편집]

  • Resources : 시스템에 입력을 제공하거나 시스템에서 나온 결과를 소비하는 모든 자원이다.
  • Synchronous Event Demultiplexer : 모든 자원을 블록하기위해 이벤트 루프를 사용한다. 자원에서 블록킹없이 동기화 연산을 시작할수 있게 됐을 때, 디멀티플렉서(Demultiplexer)가 자원을 디스패처에 보낸다.
  • Dispatcher : 요청 핸들러의 등록과 해제를 처리한다. 디멀티플레서에서 연결된 요청 핸들러에 자원을 할당한다.
  • Request Handler : 요청 핸들러와 연결된 자원이 정의된 애플리케이션이다.

특징[편집]

모든 리엑터 시스템은 싱글 스레드이다.

장점[편집]

리엑터 패턴은 리엑터 구현에서 애플리케이션에 관련된 코드가 완벽하게 분리된다. 그러므로 애플리케이션 컴포넌트들이 모듈화되고 재사용 가능한 부분들로 분리될 수 있다. 시스템을 멀티스레드로 인한 복잡성에서 보호해 준다.

단점[편집]

디버깅하기 어렵다. 요청 핸들러를 동기적으로 호출하기 때문에 최대 동시성에 제한이 있다. 요청 핸들러 뿐만 아니라 디멀티플렉서에 의해서도 확장성이 제한된다.

적용사례[편집]

  • Node.JS
  • Ruby EventMachine
  • Scala Akka’s IO 모듈