RabbitMQ 확장은 consumer(병렬 처리), clustering(여러 노드) 확장과 queue·부하 관리를 포함합니다. RabbitMQ는 Kafka와 다르게 확장되며, 그 확장 접근법과 한계를 이해하는 것은 고부하 배포에 중요합니다.
consumer 확장 (주요 수단)
✓ consumer 추가 → queue의 여러 consumer가 메시지를 병렬로 처리 (competing
consumers) → 처리 처리량 확장 → 소비를 확장하는 주된 방법
✓ 공정하고 효율적인 분배를 위해 PREFETCH 튜닝
✓ 처리를 효율적으로 (빠른 consumer가 더 많이 처리)
→ 수평 consumer 확장이 더 많은 메시지 처리를 감당
broker 확장 (clustering)
✓ CLUSTER → 노드 추가 → connection, channel, queue를 노드 간에 분산 → 더 많은 용량
(connection, 처리량)
✓ queue를 노드 간에 분산 (queue는 기본적으로 한 노드에 존재 → queue를 펼쳐 부하를 펼침)
✓ QUORUM QUEUE → 복제됨 (HA) 하지만 복제 오버헤드 있음
⚠️ 단일 QUEUE는 처리량 한계가 있음 (자신의 노드에서 순서대로 처리됨) → 매우 높은 처리량에는
많은 queue / 샤딩
