Kafka(카프카)의 기본 구조 이해하기 (클러스터, 브로커, 토픽, 파티션, 세그먼트)

2023. 12. 27. 00:57·Apache Kafka
반응형
 
 
 

이번 포스트는 Kafka의 기본 구조에 대한 내용이다.

📌 서론

지금부터 알아볼 Kafka의 구성 요소는 아래의 그림과 같다.

 

카프카는 클러스터 -> 브로커 -> 토픽 -> 파티션 -> 세그먼트로 구성되어 있다.

카프카 구조
카프카 구조

 

1. 클러스터(Cluster)

클러스터 이해하기

  • Kafka 클러스터는 여러 대의 서버(브로커)로 구성된 Kafka 시스템이다. 클러스터는 대량의 데이터를 처리하고, 여러 소비자(Consumer)와 생산자(Producer)에게 메시지 서비스를 제공한다.
  • 클러스터는 메시지의 저장, 처리 및 전달을 담당한다. 클러스터는 고가용성과 확장성을 제공하며, 데이터를 여러 브로커에 분산시켜 저장한다.

카프카 클러스터
카프카 클러스터

 

2. 브로커(Broker)

브로커 이해하기

  • Kafka 브로커는 Kafka 시스템을 구성하는 개별 서버다. 이 브로커들은 Kafka 클러스터를 형성하여, 전체 시스템의 일부로 작동한다.

카프카 브로커
카프카 브로커

 

데이터 저장 및 관리

  • 각 브로커는 Kafka 토픽의 하나 이상의 파티션을 저장하고 관리한다. 이 파티션들에는 메시지 또는 레코드가 순차적으로 저장된다.

 

클라이언트 요청 처리

  • 브로커는 Kafka 생산자(Producer)로부터 데이터를 받아 저장하고, 소비자(Consumer)의 요청에 따라 저장된 데이터를 제공한다.

 

고가용성 및 확장성

  • Kafka는 데이터의 안정성을 위해 파티션을 여러 브로커에 복제한다. 이를 통해, 하나의 브로커에 장애가 발생해도 시스템은 계속 작동할 수 있다. 그리고 필요시 클러스터에 새로운 브로커를 추가하여 시스템의 처리 능력과 저장 용량을 확장할 수 있다.

 

리더와 팔로워

  • 각 파티션에는 '리더'와 '팔로워' 브로커가 있다. 리더 브로커는 모든 읽기 및 쓰기 작업을 처리하고, 팔로워 브로커는 리더의 데이터를 복제한다. 이러한 구조는 데이터의 일관성을 유지하고, 부하를 분산시키는 데 도움이 된다.

 

통신 및 조정

  • 브로커들은 클러스터 내에서 서로 통신하여 데이터의 동기화와 상태 정보를 공유한다. 이를 통해 클러스터 전체가 일관된 상태를 유지하고, 효율적으로 작동할 수 있다.
  • Kafka 브로커는 Kafka 시스템의 중추적인 역할을 하며, 데이터의 저장, 처리 및 전송을 담당한다. 브로커들의 상호작용과 조정을 통해 Kafka는 대용량의 데이터를 효율적이고 안정적으로 관리할 수 있다.

 

3. 토픽(Topic)

토픽 이해하기

  • Kafka 토픽은 메시지들의 특정 카테고리 또는 피드를 나타낸다. 토픽은 생산자(Producer)가 데이터를 보내는 대상이며, 소비자(Consumer)가 데이터를 읽는 출처다.

카프카 토픽
카프카 토픽

 

토픽의 특징

  • 토픽은 데이터를 카테고리화하여 관리할 수 있게 해 준다. 예를 들어, 다양한 종류의 이벤트나 메시지들을 서로 다른 토픽으로 분류할 수 있다. 또한 하나의 토픽은 여러 소비자가 구독할 수 있으며, 이들은 토픽에서 발행된 모든 메시지를 읽을 수 있다.

 

4. 파티션(Partition)

파티션 이해하기

  • 파티션은 Kafka 토픽을 구성하는 하위 단위다. 하나의 토픽은 여러 개의 파티션으로 나누어질 수 있으며, 이는 Kafka의 확장성과 병렬 처리 능력을 향상시킨다.

카프카 파티션
카프카 파티션

 

파티션의 역할 및 중요성

  • 데이터 분산 및 병렬 처리: 각 파티션은 독립적으로 데이터를 저장하고, 여러 브로커에 걸쳐 분산될 수 있다. 이를 통해 Kafka는 데이터를 효율적으로 관리하고, 동시에 여러 소비자에게 서비스할 수 있다.
  • 순차적 데이터 관리: 각 파티션 내에서 메시지는 순차적으로 저장되며, 이 순서는 파티션 내에서 유지된다. 이는 데이터의 일관성과 정확한 순서 보장에 중요하다.
  • 스케일 아웃: 시스템의 부하가 증가할 때, 더 많은 파티션을 추가하여 처리 능력을 확장할 수 있다.

📌  토픽과 파티션의 상호작용

생산자는 메시지를 토픽의 파티션에 보낸다. 이때, 특정 파티션에 메시지가 지정되거나 라운드-로빈 방식으로 분산될 수 있다. 소비자는 하나 이상의 파티션에서 데이터를 읽는다. 소비자 그룹을 사용하면, 각 소비자는 다른 파티션에서 메시지를 읽어 처리 부하를 분산시킬 수 있다.

 

5. 세그먼트(Segment)

세그먼트 이해하기

  • Kafka의 세그먼트는 파티션의 데이터를 실제로 저장하는 물리적인 파일이다. Kafka는 데이터를 파티션에 순차적으로 기록하지만, 이 데이터는 여러 세그먼트 파일로 나누어 저장된다.

카프카 세그먼트
카프카 세그먼트

 

세그먼트의 역할 및 특징

  • 데이터 저장 단위: 세그먼트는 Kafka 파티션 내의 데이터를 저장하는 기본 단위다. 각 세그먼트 파일은 일정 크기에 도달하거나 특정 시간이 경과하면 새로운 세그먼트 파일로 전환된다.
  • 효율적인 데이터 관리: 세그먼트 기반의 데이터 관리는 Kafka가 불필요한 데이터를 효율적으로 정리하고, 디스크 공간을 최적화하는 데 도움을 준다.
  • 로그 컴팩션 및 삭제: Kafka는 설정에 따라 오래된 세그먼트 파일을 삭제하거나 로그를 컴팩션(중복 제거)하는 방식으로 데이터를 관리한다. 이는 저장 공간을 절약하고 시스템의 성능을 유지하는 데 중요하다.

 

세그먼트의 작동 방식

  • 생산자가 파티션에 데이터를 기록할 때, Kafka는 이 데이터를 현재 활성 세그먼트 파일에 추가한다.
  • 세그먼트 파일이 설정된 최대 크기에 도달하면, 새로운 세그먼트 파일이 생성되고, 이후의 데이터는 새 파일에 기록된다. 소비자는 이러한 세그먼트 파일들로부터 데이터를 읽어 처리한다.

 

세그먼트의 중요성

  • 세그먼트는 Kafka의 데이터 저장 및 관리 방식의 핵심이다. 세그먼트를 통해 Kafka는 대용량 데이터를 효과적으로 처리하며, 시스템의 안정성과 성능을 유지할 수 있다.
  • 세그먼트를 사용함으로써 Kafka는 디스크 I/O 작업을 최적화하고, 데이터의 순차적인 읽기 및 쓰기를 보장한다.

 

 

클러스터와 브로커의 동작을 이해해 보자👇🏻👇🏻

 

Kafka(카프카) 클러스터와 브로커의 동작 이해하기

이번 포스트에서는 Kafka의 클러스터부터 토픽까지의 작동 원리를 알아보자 📌 서론 이번 포스트에서는 Kafka의 주요 구성 요소인 클러스터, 브로커, 토픽, 파티션, 세그먼트에 대해 자세히 살펴

curiousjinan.tistory.com

 

반응형

'Apache Kafka' 카테고리의 다른 글

Kafka(카프카) 파티션(partition) 쉽게 이해하기  (4) 2023.12.27
Kafka(카프카) 클러스터와 브로커의 동작 이해하기  (1) 2023.12.27
Kafka(카프카)란 무엇인가  (2) 2023.12.27
SpringBoot와 Kafka(1) - 기본설명  (0) 2023.10.19
Apache Kafka 복제(Replication)와 장애 허용(Fault Tolerance) 메커니즘 (9편)  (1) 2023.10.19
'Apache Kafka' 카테고리의 다른 글
  • Kafka(카프카) 파티션(partition) 쉽게 이해하기
  • Kafka(카프카) 클러스터와 브로커의 동작 이해하기
  • Kafka(카프카)란 무엇인가
  • SpringBoot와 Kafka(1) - 기본설명
Stark97
Stark97
문의사항 또는 커피챗 요청은 링크드인 메신저를 보내주세요! : https://www.linkedin.com/in/writedev/
  • Stark97
    오늘도 개발중입니다
    Stark97
  • 전체
    오늘
    어제
    • 분류 전체보기 (245) N
      • 개발지식 (20)
        • 스레드(Thread) (8)
        • WEB, DB, GIT (3)
        • 디자인패턴 (8)
      • JAVA (21)
      • Spring (88)
        • Spring 기초 지식 (35)
        • Spring 설정 (6)
        • JPA (7)
        • Spring Security (17)
        • Spring에서 Java 활용하기 (8)
        • 테스트 코드 (15)
      • 아키텍처 (6)
      • MSA (14)
      • DDD (11) N
      • gRPC (9)
      • Apache Kafka (18)
      • DevOps (23)
        • nGrinder (4)
        • Docker (1)
        • k8s (1)
        • 테라폼(Terraform) (12)
      • AWS (32)
        • ECS, ECR (14)
        • EC2 (2)
        • CodePipeline, CICD (8)
        • SNS, SQS (5)
        • RDS (2)
      • notion&obsidian (3)
      • 동아리 (0)
  • 링크

    • notion기록
    • 깃허브
    • 링크드인
  • hELLO· Designed By정상우.v4.10.0
Stark97
Kafka(카프카)의 기본 구조 이해하기 (클러스터, 브로커, 토픽, 파티션, 세그먼트)
상단으로

티스토리툴바