반응자 패턴
이 문서의 내용은 출처가 분명하지 않습니다. (2018년 3월) |
반응자 패턴(Reactor pattern)은 동시에 들어오는 서비스 처리 요청을 관리하는 이벤트 처리 패턴이다.
구조
편집- Resources : 시스템에 입력을 제공하거나 시스템에서 나온 결과를 소비하는 모든 자원이다.
- Synchronous Event Demultiplexer : 모든 자원을 블록하기 위해 이벤트 루프를 사용한다. 자원에서 블록킹없이 동기화 연산을 시작할 수 있게 됐을 때, 디멀티플렉서(Demultiplexer)가 자원을 디스패처에 보낸다.
- Dispatcher : 요청 핸들러의 등록과 해제를 처리한다. 디멀티플레서에서 연결된 요청 핸들러에 자원을 할당한다.
- Request Handler : 요청 핸들러와 연결된 자원이 정의된 애플리케이션이다.
특징
편집모든 리엑터 시스템은 싱글 스레드이다.
장점
편집리엑터 패턴은 리엑터 구현에서 애플리케이션에 관련된 코드가 완벽하게 분리된다. 그러므로 애플리케이션 컴포넌트들이 모듈화되고 재사용 가능한 부분들로 분리될 수 있다. 시스템을 멀티스레드로 인한 복잡성에서 보호해 준다.
단점
편집디버깅하기 어렵다. 요청 핸들러를 동기적으로 호출하기 때문에 최대 동시성에 제한이 있다. 요청 핸들러 뿐만 아니라 디멀티플렉서에 의해서도 확장성이 제한된다.
적용사례
편집- Node.JS
- Ruby EventMachine
- Scala Akka’s IO 모듈