카테고리 없음

메시지 큐

nayoon 2024. 6. 10. 00:16

 

메시지 큐는 시스템 간의 결합도를 낮출 수 있는데 시스템끼리 서로의 애플리케이션에 대한 정보가 없어도 비동기적으로 데이터를 교환할 수 있기 때문이다.

따라서 시스템을 분리하는데 유리하고 확장성, 신뢰성을 높일 수 있기 때문에 분산 시스템 환경에서 메시지 큐를 사용하는 일이 많다.

 

메시지 큐의 종류에는 RabbitMQ, Kafka, Redis Sub/Pub 이 있는데 분산 시스템 환경, 애플리케이션의 종류, 데이터에 따라 선택하는 것이 좋다.

 

RabbitMQ는 AMQP(Advanced Message Queue Protocol)로써 다양한 데이터 패턴, 여러 라우팅이 가능해야할 때 사용해야 한다.

Kafka는 LinkedIn에서 제공하며 대규모 데이터 처리 시에 유용하게 사용된다.

 

이벤트 처리, 대규모 데이터 처리, 로그 처리 시에 주로 사용되며 비동기적으로 데이터를 처리하기 때문에 메시지 큐 도입 시 시스템 안정성을 보장할 수 있다.

 

데이터 일관성 보장, 흐름 제어, 시스템 분리를 위해서 메시지 큐를 도입한다.

 

 

 

RabbitMQ나 ActiveMQ의 경우에는 메시지 드리븐 방식이 맞지만 Kafka의 경우 이벤트 드리븐 방식이다.

메시지 드리븐과 이벤트 드리븐의 차이는 한 쪽에서 다른 쪽으로 메시지가 어떻게 이동했는지에 따라 다르다.

 

메시지 드리븐의 경우 Producer가 메시지를 발행해서 queue에 push를 해서 Consumer가 큐에서 하나씩 메시지를 가져가며 처리한다.

이벤트 드리븐의 경우 Consumer가 먼저 메시지를 pull해서 메시지를 가져와 처리한다.

 

이벤트 드리븐 방식의 경우 자기가 처리가능한 양만큼의 메시지를 가져와 처리하기 때문에 대규모 데이터 처리에 유리하다.