메시지 큐 MQ
: 메시지 지향 미들웨어(MOM)를 구현한 시스템
- 비동기 - Queue라는 임시저장소가 있기 때문에 나중에 처리 가능
- 탄력성 - consumer 서비스가 다운되더라도 메시지는 MQ에 남아 있다.
- 보장성 - MQ에 들어가면 모든 메시지는 consumer 서비스에 전달된다는 보장이 있다.
- producer (publisher): 정보를 제공하는 자
- consumer (subscriber): 정보를 제공받아 사용하는 자
- Queue: producer의 데이터를 임시 저장 및 consumer에 제공하는 곳
Kafka
- 대용량 분산 로그 트래픽을 실시간으로 처리 가능하다.
- 안정적으로 운영이 가능하다.
- kafka에서 발생한 모든 로그를 ES에 메시지 저장이 가능하다.
- 메시지의 생성, 소비, 관리를 독립시킨 구조
- kafka cluster 내 broker에 대한 분산처리는 Zookeeper가 담당한다.
- consumer가 broker로부터 직접 메시지를 pull 로 가져간다.
- broker: kafka 서버
zookeeper
: 분산 메시지 큐의 정보를 관리하는 역할
- kafka cluster의 설정 정보를 최신으로 유지하며 cluster내에서 broker 서버가 추가되거나 삭제될 때 그 정보를 cluster에 속한 서버들끼리 공유할 수 있도록 한다.
- kafka cluster의 리더를 발탁하는 역할을 한다.
- 과반수 방식으로 운영하고 있기 때문에, 홀수개의 주키퍼 서버 운영 권장
RabbitMQ
- 메시지 라우팅 키를 통해 메시지 라우팅을 지원한다.
- Exchange와 Quere의 바인딩을 통해 메시지를 소비한다.
- 지정된 수신인에게 원하는 방식으로 메시징을 신뢰 있게 전달한다.
- exchange: publisher가 전달한 메시지를 queue에 전달하는 역할
- RammitMQ는 queue에 들어가기 전 exchange라는 단계를 더 거친다.
Kafka vs RabbitMQ
Kafka
- 시용 목적: 클러스터를 통해 병렬처리가 가능하므로, 대용량 분산 로그 트래픽 처리에 유리하다.
- publisher 중심 설계
- 메시지가 전달되더라도 event streamer에 저장되어있다.
RabbitMQ
- 사용 목적: 대용량 트래픽 처리에는 불리하며, 지정된 수신인에게 원하는 방식으로 메시징을 전달하는데 유리하다. 관리적인 측면, 다양한 기능 구현을 위한 서비스를 구축할 때 사용한다.
- broker 중심 설계
- 메시지가 전달되면 queue에서 삭제된다.
참조
728x90
반응형
'DATA > Kafka' 카테고리의 다른 글
Kafka KRaft (1) | 2024.10.27 |
---|---|
큐 vs 로그 기반 메시징 시스템 (0) | 2024.08.19 |
[공유] Kafka에서 파티션 증가 없이 동시 처리량을 늘리는 방법 - Parallel Consumer (0) | 2023.12.26 |
Redis Kafka 활용방법 (0) | 2023.08.04 |
아파치 카프카 Kafka 란? (0) | 2022.02.05 |
댓글