대규모 스트림 처리 구성 요소 (2)

배지원·2025년 1월 23일

MSA

목록 보기
11/12

1. RabbitMQ란?

  • RabbitMQ는 메시지 브로커입니다. 메시지 브로커는 데이터(메시지)를 송신자(프로듀서)로부터 수신자(컨슈머)에게 전달하는 중간 매개체 역할을 합니다.
  • RabbitMQ는 이러한 메시지를 큐(queue)에 저장하고, 필요할 때 적절한 수신자에게 전달합니다.

(1) RabbitMQ의 역할

  • 비동기 처리: 데이터를 비동기적으로 처리하여 시스템의 응답성을 높입니다.
  • 부하 분산: 여러 소비자에게 메시지를 분산시켜 시스템의 부하를 균형 있게 분산합니다.
  • 내결함성: 메시지를 안전하게 저장하여 시스템 장애 시 데이터 손실을 방지합니다.

2. RabbitMQ의 기본 구성 요소

(1) 메시지

  • 메시지는 RabbitMQ를 통해 전달되는 데이터 단위입니다. 예를 들어, 사용자 등록 정보나 주문 내역이 메시지가 될 수 있습니다.

(2) 프로듀서

  • 메시지를 생성하고 RabbitMQ에 보내는 역할을 합니다. 예를 들어, 웹 애플리케이션이 사용자 등록 정보를 RabbitMQ에 보내는 경우 프로듀서가 됩니다.

(3) 큐

  • 메시지를 저장하는 장소입니다. 메시지는 큐에 저장되었다가 소비자에게 전달됩니다. 큐는 FIFO(First In, First Out) 방식으로 메시지를 처리합니다.

(4) 컨슈머

  • 큐에서 메시지를 가져와 처리하는 역할을 합니다. 예를 들어, 이메일 발송 서비스가 큐에서 사용자 등록 정보를 가져와 환영 이메일을 보내는 경우 컨슈머가 됩니다.

(5) 익스체인지

  • 메시지를 적절한 큐로 라우팅하는 역할을 합니다. 프로듀서는 메시지를 직접 큐에 보내지 않고, 익스체인지에 보내며, 익스체인지는 메시지를 적절한 큐로 전달합니다.

3. RabbitMQ와 AMQP

  • RabbitMQ는 AMQP(Advanced Message Queuing Protocol)를 사용합니다.
  • AMQP는 메시지 브로커를 위한 프로토콜로, 메시지의 생성, 전송, 큐잉, 라우팅 등을 표준화하여 메시지 브로커가 상호 운용될 수 있게 합니다.

(1) AMQP의 주요 개념

  • 메시지(Message): 전송되는 데이터 단위입니다.
  • 큐(Queue): 메시지를 저장하고 전달하는 구조입니다.
  • 익스체인지(Exchange): 메시지를 큐로 라우팅하는 역할을 합니다.
  • 바인딩(Binding): 익스체인지와 큐를 연결하는 설정입니다. 바인딩을 통해 메시지가 어느 큐로 전달될지 정의합니다.

(2) 익스체인지 유형

  • 메시지 브로커가 메시지를 교환기에서 큐로 라우팅하는 방식입니다.
  • 익스체인지는 다양한 방식으로 메시지를 라우팅할 수 있으며, 주로 메시지의 라우팅 키와 바인딩 키 또는 패턴을 기반으로 작동합니다.
  1. Direct Exchange
    • 라우팅 키가 정확히 일치하는 큐로 메시지를 전달합니다.
    • 예를 들어, 라우팅 키가 error인 메시지는 error라는 바인딩 키를 가진 큐로 전달됩니다.
profile
Web Developer

0개의 댓글