Apache Kafka

2024. 12. 30. 13:45TIL

✔오늘 배운 중요한 🔑 point

  • Kafka는  데이터(Data)를 생성자(Producer)에서 소비자(Consumer)로 전달하는 역할
  • Data는 Topic에 적재되고 소비자들은 필요할때 Topic에서 Data를 가져간다.

🎯 오늘 배운 내용

 

Apache Kafka란?

분산 스트리밍 플랫폼으로 대규모 데이터 스트리밍과 실시간 데이터 처리를 위한 핵심 기술

 

Kafka의 요소

 

Topic

  • 데이터를 저장하는 논리적 단위
  • Producer가 데이터를 Topic으로 보냄
  • Consumer가 해당 Topic을 Subscribe하여 데이터를 읽음
  • Topic은 Partition으로 나뉘며 데이터 병렬 처리를 지원함

 

Partition

  • 데이터를 물리적으로 분산 저장하는 단위
  • 각 Partition은 메세지의 순서를 보장
  • Partition을 통해 Kafka의 확장성과 처리량 증가

 

Producer

  • 데이터를 Topic으로 보냄
  • 데이터를 보낼때  각 메세지에 키를 지정해 특정 Partition으로 분배 가능

 

Consumer

  • Topic을 구독하고 데이터를 읽음
  • Consumer group을 통해 병렬 처리 가능 

 

Broker

  • Kafka의 서버 인스턴스
  • Topic 데이터를 저장하고 클러스터 내에서 데이터를 분산 관리

 

ZooKeeper   (2.8이상 버전부터는 KRaft를 사용해 ZooKeeper 불필요)

  •  Kafka의 메타데이터를 관리하고 Broker간의 상태를 조율함

 

 

🤔 어떻게 활용할까?

 

WebSocket을 이용한 실시간 채팅 기능은 실시간 채팅에는 적합하나 서버가 재시작하거나 클라이언트가 끊어지면 메세지가 손실될수 있다. Kafka를 이용하여 메세지 브로커 역할을 수행하도록 하면 주고받는 메세지가 Topic에 저장되어 클라이언트가 메세지를 받지 못했을 경우에도 Topic에서 메세지를 불러올수 있고 많은 사용자와 대량의 메세지를 처리할 수 있다. 

 

📓 오늘의 한줄

"Failure is simply the opportunity to begin again, this time more intelligently."

- Henry Ford -