사용자의 입력을 메시지로 전달하는 시스템에서 어떤 프로세스에 대한 메지시를 저장하기 위해 할당된 큐
생산자에 의한 요청(메세지)를 Queue에 넣어 순차적 처리하는 방식으로 데이터 통신에서 발생하는 병목현상
을 줄일 수 있다.
인스턴스가 데이터를 서로 교환할 때 사용하는 방법으로 메세지 지향 미드웨어를 위한 개방형 표준 응용계층 프로토콜이다.
즉, 이기종간 메세지 교환의 문제점을 해결하기 위해 등장한 프로토콜이다.
Client어플리케이션과 middleware broker와의 메시지를 주고받기 위한 프로토콜
메세지의 라우팅 키를 큐에 1:1으로 매칭 시키는 방법 라운드 로빈 방으로 여러 Consumer간 task 분리
Topic Exchange
Fanout Exchange
Headers Exchange
현재 가장 유명한 두가지 Apache Kafka
과 Rabbit MQ
을 이야기 한다.
“open source distributed message broker”
비동기식 메세지 관리로 사용자로부터 수집한 데이터를 Queue
에 넣고 필요시 꺼내 쓰는 방식
Rabbit MQ
서버를 논리적으로 클러스터링 가능)“distributed event streaming platform”
아파치 재단이 스칼라로 개발한 오픈 소스 메세지 브로커
이며 실시간 데이터 피드를 관리하기 위해 통일된, 높은 처리량,
낮은 지연시간을 지닌 플랫폼을 제공하는 것이 목표이다.
대용량 실시간 로그 처리 특성화
AMQP 프로토콜이나 JSM API를 사용하지 않고 단순한 메세지 헤더를 지닌 TCP 기반 프로토콜을 사용하므로서 오버헤드가 비교적 작다.
Kafka는 복잡한 라우팅에 의존하지 않고 최대 처리량으로 스트리밍하는 데 가장 적합하며 또한 이벤트 소싱, 스트림 처리 및 일련의 이벤트로 시스템에 대한 모델링 변경을 수행하는 데 이상적이다.
즉, 스트리밍 데이터를 저장, 읽기, 다시 읽기 및 분석하는 프레임워크가 필요한 경우 Kafka가 적합하다.
또한 모니터링이 가능하기 때문에 정기적으로 감사하는 시스템이나 메시지를 영구적으로 저장하는 데 이상적이다.
복잡한 라우팅 서비스를 구축할 경우 RabbitMQ를 사용한다. RabbitMQ는 신속한 요청-응답이 필요한 웹 서버에 적합하며 또한 부하가 높은 작업자 간에 부하를 공유합니다. 즉, 장시간 실행되는 작업, 안정적인 백그라운드 작업 실행, 애플리케이션 간 내부 통신 및 통합이 필요할때 적합하다.