Kafka

mangez_js·2024년 9월 24일

Study

목록 보기
8/47

Kafka

정의 : 분산 메시지 스트리밍 플랫폼으로, 주로 실시간 데이터 스트리밍을 처리 하는 데 사용됩니다. 대용량의 데이터를 빠르게 처리하고, 여러 시스템 간에 데이터를 전달할 수 있는 강력한 툴

장점 : 고가용성, 빠른 처리
단점 : 순서보장이 어렵다. 아주 작게 사용이 어렵다.

주요 개념

  • Producer(생산자)

    	 > 데이터를 Kafka로 보내는 클라이언트, 생산자는 데이터를 토픽(Topic)에 게시합니다.
  • Consumer(소비자)

    	>  토픽에서 데이터를 가져가 처리하는 클라이언트, 소비자는 특정 토픽을 구독하고, 데이터를 처리하여 다른 시스템으로 넘기거나 분석을 수행할 수 있습니다.
  • Topic(토픽)

    	> Kafka에서 데이터를 구분하는 논리적인 스트림 단위, 생산자가 보낸 데이터는 특정 토픽에 게시되며, 소비자는 이 토픽에서 데이터를 구독
  • Broker(브로커)

    	> Kafka의 서버, Kafka 클러스터는 여러 개의 브로커로 구성되며, 각 브로커는 데이터를 저장하고 클라이언트와 상호작용하며 메시지를 관리합니다.
    	> Kafka 클러스터 : 브로커들이 모여 하나의 클러스터를 이루고, 데이터를 분산 저장하고 처리
  • Partition(파티션)

    	> 하나의 토픽은 여러 파티션으로 나뉘며, 각 파티션은 독립적인 순서를 유지, 이로 인해 Kafka는 병렬 처리와 확장이 용이
    	> 각 파티션의 데이터는 오프셋(offset)이라는 번호가 붙으며, 소비자는 오프셋을 통해 데이터를 읽습니다.
  • Zookeeper

    	> Kafka는 Zookeeper를 통해 클러스터 상태를 관리하고, 브로커 간의 메타데이터를 동기화합니다. Zookeeper는 Kafka의 중요한 메타데이터를 관리하고, 브로커의 상태를 모니터링합니다.
  • Replication(복제)

    	> 데이터는 복제(replication) 되어 저장됩니다. 각 파티션은 리더와 팔로워 파티션으로 나뉘고, 리더가 주로 데이터를 처리하며 팔로워가 데이터를 복제합니다. 복제를 통해 데이터 손실을 방지하고 내결함성을 보장

데이터 흐름

  1. 데이터 게시(Producer)
    • 데이터를 특정 토픽에 게시합니다. 데이터는 파티션에 분산되어 저장됩니다.
    • 파티션은 라운드 로빈 방식이나 특정 키 기반으로 분배됩니다.
  2. 데이터 저장(Broker)
    • 데이터는 디스크에 저장되고, 복제를 통해 브로커 간에 분산됩니다.
    • Kafka는 데이터를 오랫동안 저장할 수 있으며, 소비자는 언제든지 오프셋을 기반으로 원하는 데이터를 읽을 수 있습니다.
  3. 데이터 소비(Consumer)
    • 특정 토픽에서 데이터를 읽습니다. 각 소비자는 자신만의 오프셋을 관리하여 어떤 데이터를 읽었는지 추적합니다.
    • 컨슈머 그룹(Consumer Group) 을 통해 여러 소비자가 협력하여 데이터를 처리할 수 있습니다. 각 소비자는 특정 파티션의 데이터를 읽고, 그룹 내에서 병렬 처리가 가능

특징

  1. 확장성
  2. 고성능
  3. 내결함성
  4. 유연한 데이터 처리
  5. 유연한 데이터 저장

0개의 댓글