Apache Kafka 주요 요소1(Producer, Consumer, Topic, Partition, Segment)

홍기대·2022년 3월 2일
0

Kafka

목록 보기
1/5

1. Topic, Producer, Comsumer

  • Producer: 메시지를 생산해서 Kaffa의 Topic으로 메시지를 보내는 애플리케이션
  • Consumer: Topic의 메시지를 가져와서 소비하는 애플리케이션
  • Consumer group: Topic의 메시지를 사용하기 위해 협력하는 Consumer들의 집합
  • 하나의 Consumer는 하나의 Consumer Group에 포함되며, Consumer Group내의 Consumer들은 협력하여 Topic의 메시지를 분산 병렬 처리

2. Producer와 Consumer의 기본 동작 방식

  • Commit Log: 추가만 가능하고 변경 불가능한 데이터 스트럭처, Event(데이터)는 항상 로그 끝에 추가되고 변경되지 않음
  • Offset: Commit Log에서 Event의 위치, 아래 그림에서는 0부터 10까지 Offset을 볼 수 있음

  • Producer와 Consumer는 서로 알지 못하며, Producer와 Consumer는 각각 고유의 속도로 Commit Log에 Write 및 Read를 수행
  • 다른 Consumer Group에 속한 Consumer들은 서로 관련이 없으며, Commit Log에 있는 Event를 동시에 다른 위치에서 Read할 수 있음

3. Commit Log에서 Event의 위치

  • Producer가 Write하는 LOG-END-OFFSET과 Consumer Group의 Consumer가 Read하고 처리한 후에 Commit한 CURRENT-OFFSET과의 차이(Consumer Lag)가 발생할 수 있음

4. Logical View(Topic, Partition, Segment)

  • Topic: Kafka 안에서 메시지가 저장되는 장소, 논리적인 표현
  • Partition: Commit Log, 하나의 Topic은 하나 이상의 Partition으로 구성, 병렬처리(Throughput 향상)를 위해서 다수의 Partition을 사용
  • Segment: 메시지(데이터)가 저장되는 실제 물리 File, Segment File이 지정된 크기보다 크거나 지정된 기간보다 오래되면 새 파일이 열리고 메시지는 새 파일에 추가됨

5. Physical View(Topic, Partition, Segment)

  • Topic 생성시 Partition 개수를 지정하고, 각 Partition은 Broker들에 분산되며 Segment File들로 구성됨
  • Rolling Strategy: Log.segment.bytes(default 1 GB), log.roll.hour(default 168 hours)

6. Partition당 하나의 Active Segment

  • Partition당 오직 하나의 Segment가 Active 되어 있음 -> 데이터가 계속 쓰여지고 있는 중

7. Summary(Topic, Partition, Segment)

  • Topic 생성시 Partition 갯수를 지정, 갯수 변경 가능하나 운영시에는 변경을 권장하지 않는다고 함
  • Partition 번호는 0부터 시작하고 오름차순
  • Topic내의 Partition들은 서로 독립적임
  • Event의 위치를 나타내는 offset이 존재
  • Offset은 하나의 Partition에서만 의미를 가짐, Partition 0의 offset 1 ≠ Partition 1 의 offset 1
  • Offset값은 계속 증가하고 0으로 돌아가지 않음
  • Event의 순서는 하나의 Partition내에서만 보장
  • Partition에 저장된 데이터는 변경이 불가능
  • Partition에 Write되는 데이터는 맨 끝에 추가되어 저장됨
  • Partition은 Segment File들로 구성됨
    (Rolling 정책: log.segment.bytes(default 1GB), log.roll.hours(default 168 hours))
profile
열심히 살자

1개의 댓글

comment-user-thumbnail
2024년 3월 18일

안녕하세요 잘봤습니다. 혹시 이미지는 출처가 어떻게 되는지 공유받을 수 있을까요?

답글 달기