본문 바로가기
Backend

Kafka와 RabbitMQ

by 당리 2024. 7. 21.

 

1.메시지큐 란

 메시지를 통해 여러 분산되어 있는 시스템간의 Connector 역할을 통해 결합성을 낮추고, 실시간으로 비동기식 데이터를 교환할 수 있도록 하는 소프트웨어를 말한다.

 

2. 메시지 큐를 사용하는 이유

1) 서버 데이터를 주고 받은 작업을 때는 항상 시스템  장애를 고려해야한다. 서버가 죽거나 없는 장애로 인해 데이터를 받을 없는 상황이 발생할 있다. 이를 위해 요청하는 서버에서는 Failover처리를 하는 방법도 있지만 MQ 사용하면 간단하게 처리할 있다.

 

2) 부하 분산 처리

MQ를 이용하면 부하 분산도 가능하다. 아래 이미지와 같이 P에서 MQ로 데이터를 전달한다. 수신측 서버를 한개가 아닌 여러개를 구성함으로써 각 서버 처리량에  맞게 태스크를 가져와 처리함으로써 분산 처리도 가능하게 된다.

 

*  메시지 큐를 사용하면서 서로 다른 시스템이나 애플리케이션 간의 결합도를 낮추면서도

신뢰할 수 있는 통신 방법을 제공됨

 

 

 

 

 

3. kafka vs rabbitMQ

  kafka rabbitMQ
접근 방식 풀 방식 : Consumer는 메시지 처리를 위해 kafka cluster로 요청 푸시 방식 : Brok
방식 ·분산 스트리밍 플랫폼
· pub/sub방식
· 생산자 중심적인 설계로 구성
· 생성자가 원하는 각 메시지를 게시할 수 있도록 메시지 배포 패턴
· *메시지 브로커 방식
· 브로커 중심적인 설계로 구성
· 지정된 수신인에게 메시지를 확인, 라이팅,저장 및 배달하는 역할 수행
· 보장되는 메시지 전달에 초점
메시지 삭제 여부 ·  Consumer가 메시지를 가져가더라도 계속 유지 ·  Consumer가 Queue에서 메시지를 가져가면 삭제
용도 ·  스트리밍 데이터를 저장, 읽기,분석 등에 적합
· 높은 처리량과 안정적인 백그라운드 작업에 적합
· 애플리케이션 내부 및 애플리케이션 간의 통신에 적합

 

 

 

 

*Message Broker는 무엇인가?

Message Broker(메시지 브로커)는 Publisher(송신자)로부터 전달받은 메시지를 Subscriber(수신자)로 전달해주는 중간 역할이며 응용 소프트웨어 간에 메시지를 교환할 수 있게 한다. 

 

 

 

 

RabitMq

 

 

Kafka

 

 

*RabbitMq와 Kakfa 모두 메세지 큐를 이용해 시스템의 부하를 줄이고 성능을 높이기 위한 용도로 사용

 

 

 

*RabbitMQ

 

1. 유연한 라우팅 규칙 적용 가능

2. 메시지 전송 타이밍 제어(메시지 만료 또는 메시지 지연 제어)

3. 소비자가 메시지 처리에 실패할 가능성이 더 높은 경우 고급 오류 처리 기능

4. 단순하게 소비자 기능 구현 가능

 

*Kafka

1. 엄격한 메세지 순서관리

2. 과거 메시지 재생 가능성을 포함하여 장기간 메시지 보존

3. 기존 솔루션으로는 충분하지 않는 대규모 구조

 

Kafka의 메시지 보존은 메시지 로거 또는 거대하고 빠른 데이터 스트리밍 서버에 적합합니다. 실패 후 메시지를 다시 시도해야 하는 책임은 소비자에게 있으므로 Kafka는 메시지가 성공적으로 전달되었는지 여부를 신경 쓰지 않습니다. 이것은 추가 구현을 덜어주고 데이터 재생 및 쿼리에 중점을 둡니다.

RabbitMQ는 메시지 보존이 부족하고 소비자의 확인 메시지가 보장되므로 강력한 메시지 브로커인 응용 프로그램 중재자에 더 적합합니다.

 

 

 

참고 : https://escapefromcoding.tistory.com/705

'Backend' 카테고리의 다른 글

equals 사용 시 NullPointerException 방지 방법  (0) 2024.07.28
Challenge Response Protocol  (0) 2024.07.25
JNDI  (2) 2024.07.21
@JsonFormat 과 @DateTimeFormat  (0) 2024.07.14
[Spring] DispatcherServlet  (0) 2024.07.07