ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kafka 기초 - Topic, Partition, Segment
    Framework & Library/Kafka 2023. 2. 17. 17:20

    Topic, Partition, Segment

    Kafka의 주요 요소

     

     - Kafka Cluster : Kafka의 Broker들의 모임, Kafka는 확장성과 고가용성을 위하여 Broker들이 Cluster로 구성된다.

     - Broker : 각각의 Kafka 서버, 동일 노드에 여러 개의 Broker들을 띄울 수 있다.

     - Topic : Kafka 안에서 메시지가 저장되는 장소의 논리적인 표현

     - Zookeeper : Kafka Cluster의 정보 및 분산 처리 관리 등 메타 데이터를 저장, Kafka를 띄우기 위해 반드시 실행되어야 한다.

     - Producer : 메시지를 생산해서 Kafka의 Topic으로 메시지를 보내는 애플리케이션

     - Consumer : Topic의 메시지를 가져와서 소비하는 애플리케이션

     - Consumer Group : Topic의 메시지를 사용하기 위해 협력하는 Consumer들의 집합

     

    ※ 하나의 Consumer는 하나의 Consumer Group에 포함되며, Consumer Group내의 Consumer들은 협력하여 Topic의 메시지를 분산 병렬 처리한다.

     

    Topic, Partition, Segment의 구조

    1. 논리적인 구조

     - Topic : Kafka 안에서 메시지가 저장되는 장소의 논리적인 표현

     - Partition : 하나의 Topic은 하나 이상의 Partition으로 구성, 병렬처리를 위해서 다수의 Partition을 사용한다.

     - Segment : 메시지(데이터)가 저장되는 실제 물리 File, Segment File이 지정된 크기보다 크거나 지정된 기간보다 오래되면 새 파일이 열리고 메시지는 새 파일에 추가된다.

     

    2. 물리적인 구조

     - Topic 생성 시 Partition의 개수를 지정하고, 각 Partition은 Broker들에 분산되며 Segment File들로 구성된다.

     - Rolling Strategy : log.segment.bytes(default : 1GB), log.roll.hours(default : 168 hours)

     

     

    또한, Partition 당 오직 하나의 Segment가 활성화되어 있다. 활성화된 Segment에 데이터가 계속해서 쓰이고 있다.

     

    Offset

     

     - Producer와 Consumer는 서로 알지 못하며, Producer와 Consumer는 각각 고유의 속도로 Partition에 Write 및 Read를 수행한다.

     - 다른 Consumer Group에 속한 Consumer들은 서로 관련이 없으며, Partition에 있는 Event(Message)를 동시에 다른 위치에서 Read 할 수 있다.

     

     

     - Partition : 추가만 가능하고 변경 불가능한 자료구조, 데이터는 항상 로그 끝에 추가되고 변경되지 않는다.

     - Offset : Partition에서 Event의 위치, 위 그림에서는 0부터 10까지의 Offset을 확인할 수 있다.

     

     

     - LOG-END-OFFSET : Producer가 Write 하는 지점

     - CURRENT-OFFSET : Consumer Group의 Consumer가 Read 하는 지점

     - Consumer Lag : LOG-END-OFFSET과 CURRENT-OFFSET의 차이

     

    최종 정리

     1. Topic 생성 시 Partition 개수를 지정할 수 있다. 개수 변경이 가능하지만 운영 시에는 권장하지 않는다.

     2. Partition 번호는 0부터 시작하고 오름차순으로 진행된다.

     3. Topic 내의 Partition 들은 서로 독립적이다.

     4. Partition에 저장된 데이터는 변경이 불가능하다.

     5. Parition에 Write 되는 데이터는 맨 끝에 추가되어 저장된다.

     6. Partition 내에는 Event(Message)의 위치를 나타내는 Offset이 존재한다.

     7. Offset은 하나의 Partition에서만 의미를 가진다.

     8. Offset은 계속 증가하며, 0으로 돌아가지 않는다.

     9. Event(Message)의 순서는 하나의 Partition 내에서만 보장된다.

     10. Partition은 Segment File들로 구성된다.


    출처

     https://fastcampus.co.kr/dev_online_kafka

     

    728x90

    'Framework & Library > Kafka' 카테고리의 다른 글

    Kafka - Replication  (0) 2023.02.20
    Kafka 기초 - Consumer  (0) 2023.02.18
    Kafka 기초 - Producer  (0) 2023.02.18
    Kafka 기초 - Broker, Zookeeper  (0) 2023.02.18
    Kafka 기초 - Kafka란?  (0) 2023.02.17

    댓글

Designed by Tistory.