Data/Kafka

[Kafka] Kafka란?

dev_ss 2023. 4. 28. 21:50

1. Kafka :

아파치 카프카(Apache Kafka)는 LinkedIn에서 개발되었으며,

Java 및 Scala 기반의 고용량 실시간 데이터 스트림에 특화된 분산 스트리밍 플랫폼이다.

 

카프카는 이벤트 브로커라고도 하며, Topic이라는 이벤트 스트리머를 통한 메시지 처리를 한다.

 

발생한 이벤트에 따라서 토픽에 메시지를 발행하고, 토픽을 구독하고 있는 소비자가 메시지를

소비함으로써 이벤트를 처리하여 해당 오프셋을 표시하고 파티션을 통한 분산저장을 통하여 안정성을 보장한다.

 


2. Kafka의 구성 요소 :

Kafka의 구성은 크게 아래의 4가지로 볼 수 있다.

 

1. Zookeeper : 카프카 클러스터를 관리하고, 메타 데이터를 관리하는 역할을 수행한다.

2. Kafka Broker : 카프카 브로커로써, Producer에서 발행한 메시지를 로깅하고, Consumer가 Pull하게 중계한다.

3. Producer : 발생한 이벤트에 따라 메시지를 발행하고 카프카 브로커로 전달하는 역할을 수행한다.

3. Consumer : 카프카 브로커에서 메시지를 가져가서 이벤트를 처리하는 역할을 수행한다.

 

<Kafka 구조>

 

  • 카프카는 현재 Zookeeper를 이용하는 모드와 이를 제거한 Kraft 모드 두 가지의 모드가 있다.

 


3. Pros-Cons :

 - Pros :

  • 분산 시스템 : 최초 구성된 클러스터에서 브로커를 추가하여 쉬운 확장이 가능
  • 페이지 캐시 : 메모리에 어플리케이션 이용 부분을 제외한 부분을 캐싱하여 I/O 성능 향상
  • 배치 전송 : 네트워크 오버헤드를 낮추고 효율적으로 처리
  • 압축 처리 : 메세지 처리 시 압축 전송으로 성능을 향상

 

 - Cons :

  • 브로커를 추가함에 따라서 서버 비용이 증가
  • Producer/Consumer의 메시지 압축 및 처리 과정에서 성능 저하 발생
반응형