원자로 패턴
Reactor pattern원자로 설계 패턴은 하나 이상의 입력에 의해 서비스 취급자에게 동시에 전달되는 서비스 요청을 처리하기 위한 이벤트 처리 패턴이다.그런 다음 서비스 처리기는 수신 요청을 격하하고 이를 관련 요청 처리기에 동시에 발송한다.[1]
구조
- 자원.
- 시스템에 입력을 제공하거나 시스템에서 출력을 소비할 수 있는 리소스.
- 동기 이벤트 디멀티플렉서
- 이벤트 루프를 사용하여 모든 리소스 차단demultiplexer는 차단하지 않고 자원에 대해 동기식 작업을 시작할 수 있을 때(예: 동기식 호출: 에 대한) 자원을 디스패처에게 보낸다.
read()읽을 데이터가 없으면 차단된다.demultiplexer는 다음을 사용한다.select()리소스를 읽을 수 있을 때까지 차단하는 리소스이 경우 동기식 호출로read()차단하지 않을 것이며, demultiplexer는 자원을 발송자에게 보낼 수 있다.) - 디스패처
- 요청 처리기의 등록 및 등록 취소 처리기demultiplexer에서 관련 요청 처리기로 리소스 디스패치
- 요청 처리기
- 응용 프로그램 정의 요청 처리기 및 관련 리소스.
특성.
모든 원자로 시스템은 정의상 단일 스레드이지만 다중 스레드 환경에서 존재할 수 있다.
혜택들
원자로 패턴은 적용특정 코드를 원자로 구현으로부터 완전히 분리하며, 이는 적용부품을 모듈식 재사용 부품으로 나눌 수 있다는 것을 의미한다.
제한 사항
원자로 패턴은 제어의 역류로 인해 절차적 패턴보다 디버깅이[2] 더 어려울 수 있다.또한 요청 핸들러를 동시에만 호출함으로써 원자로 패턴은 특히 대칭 다중 처리 하드웨어에 대한 최대 동시성을 제한한다.원자로 패턴의 확장성은 요청 핸들러를 동시에 호출하는 것뿐만 아니라 디멀티플렉서(demultiplexer)에 의해서도 제한된다.[3]
참고 항목
- 프로actor 패턴(이벤트를 디멀티플렉스 및 디스패치하지만 비동기적으로 전송되는 패턴)
- 응용 프로그램 서버
- C10k 문제
참조
- ^ 슈미트, 더글러스 외패턴 지향 소프트웨어 아키텍처 제2권: 동시 및 네트워크 개체를 위한 패턴 제2권.와일리, 2000년
- ^ Schmidt, Douglas C., An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events (PDF)
- ^ Kegel, Dan, The C10K problem, retrieved 2007-07-28
