728x90
반응형
카프카(Kafka)란?
Apache Kafka는 실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 분산형 데이터 스트리밍 플랫폼이다.
Kafka 아키텍처
- Kafka 클러스터 : 브로커, 토픽, 파티션으로 구성된 시스템. 데이터는 클러스터 내의 토픽에 기록된다.
- Producer : 토픽에 데이터/메시지를 보낸다.
- Consumer : 토픽에서 메시지를 읽거나 소비한다.
- Broker : Producer와 Consumer 사이의 중간 역할을 한다. Producer에게서 메시지를 받아 토픽에 저장하고, Consumer에게 전달하는 역할을 한다.
- Topic : 데이터들이 저장되는 단위. 토픽은 이름을 가지고 있다. 토픽에 추가된 데이터는 수정될 수 없다.
- Partition : 하나의 토픽은 여러개의 파티션을 가질 수 있다. 파티션은 증가시킬 수 있지만, 감소시키는 것은 불가능하다.
- Record : 토픽에 저장되는 데이터 하나의 단위.
- Offset : 토픽에 저장되는 데이터는 각각의 ID를 가지는데, 이것을 Offset이라고 한다. 동일 토픽의 파티션에서 동일 오프셋을 가지더라도 해당 데이터의 내용은 다르며 별개의 레코드이다.
Kafka의 특징 및 장점
- 대용량 데이터의 분산 처리 : 대용량 데이터를 처리하기 위한 아키텍처를 가지고 있다.
- 이벤트 스트리밍 : 이벤트가 생성되는 대로 이벤트의 스트림을 지속적으로 처리하는 프로세스로 구성되어 있다.
- 데이터 재처리가 가능 : 데이터를 소비하고 삭제하는 것이 아니라 레코드를 저장함으로서 재처리가 가능하다. offset을 특정 시점으로 돌려 재처리도 가능하다
RabbitMQ와의 차이점
Kafka와 RabbitMQ모두 실시간 스트림 처리에 사용할 수 있는 메시지 큐 시스템이지만, 각각 차이점이 있다.
Kafka | RabbitMQ | |
데이터 저장 여부 | O | X |
데이터 재처리 가능 여부 | O | X |
메시지 라우팅 가능 여부 | X | O |
같은 레코드를 다른 애플리케이션에서 각각 처리할 수 있는지 여부 | O (각각의 group에서 개별적으로 offset을 관리하여 처리하기 때문에 가능) |
X |
Kafka와 RabbitMQ 각각 비슷하면서도 달라서, 개발하고자 하는 서비스별로 어떤것이 더 적합한지를 알아야 할 것 같아서 조사해보았다. RabbitMQ는 관리페이지도 제공하고 있어서 UI로 큐 상태를 파악할 수 있다는 장점이 있고, Kafka는 설치 후 다양한 스크립트를 제공하고 있다는 장점도 있다.
728x90
반응형
'난중일기 > Back' 카테고리의 다른 글
[Real MySQL 8.0] 10장 - 실행 계획 (0) | 2024.03.06 |
---|---|
[Real MySQL 8.0] 8장 - 인덱스 (0) | 2024.02.16 |
[Real MySQL 8.0] 4장 - 아키텍처 (0) | 2024.02.07 |
[Real MySQL 8.0] 5장 - 트랜잭션과 잠금 (1) | 2024.02.07 |
[Real MySQL 8.0] 1~3장 (0) | 2024.01.25 |