난중일기/Back

kafka 알아보기 - 아키텍처, 특징, 장점, RabbitMQ와의 차이점

모집사 2024. 1. 25. 21:46
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