본문 바로가기
IT/개발

2) Topic, Partition, Segment

by 한다_ 2023. 8. 28.

Topic

  • 전송되는 메시지가 저장되는 부분
  • 논리적인 구분

Producer

  • 메시지를 만들어서 Topic으로 전송

Consumer

  • Topic에서 메시지를 가져와서 소비

Consumer Group

  • Topic에서 메시지를 사용하기 위해 협력하는 Consumer 집단
  • 하나의 Consumer는 Consumer group에 포함되어 Consumer끼리 협력하여 메시지를 분산 병렬 처리

Producer와 Consumer는 서로 알지 못한다

Producer와 Consumer는 각각의 속도로 Commit log에서 write (pro) / read (con)를 수행

Consumer group이 다른 각각의 Consumer들은 서로 연관이 없으며, Commit Log의 다른 부분의 메시지를 읽을 수도 있음

Commit Log

  • 추가만 가능하고 변경이 불가능한 구조

Offset

  • Commit Log에서의 이벤트의 위치
  • Log End Offset → Producer가 생성하는 맨 끝 Offset
  • Current Offset → Consumer가 메시지를 가져가고 Commit한 부분
  • Offset 값은 계속 증가하며 0으로 돌아가지 않음

Partition

  • 하나의 Topic은 하나 이상의 Partition으로 구성
  • 병렬처리를 위해 다수의 Partition 사용
  • Partition의 개수는 변경이 가능하나 운영시에는 권장하지 않음
  • Partition 번호는 0부터 오름차순
  • Topic내 Partition들은 서로 독립적
  • 저장된 데이터는 변경불가

Segment

  • 데이터가 실제로 저장되는 물리 파일
  • 지정된 크기보다 커지거나 지정된 기간보다 오래되면 새 파일이 생성되고 메시지는 새 파일에 저장됨

Topic은 생성시 Partition의 개수를 지정해야한다

생성된 Partition은 Broker들로 분산되고 Segment 파일로 구성됨

분산되는 방식은 Kafka에서 최적화하여 분산한다

Segment를 분리하는 방식은 Rolling Strategy

  • log.segment.bytes 용량으로 Segment 분산
  • log.roll.hours 기간으로 Segment 분산

Partition당 단 하나의 Segment가 활성화됨

 

 

출처 - 패스트캠퍼스 Kafka 완전 정복

'IT > 개발' 카테고리의 다른 글

4) Producer  (0) 2023.09.05
3) Broker, Zookeeper  (0) 2023.08.28
1) Apache kafka 란?  (0) 2023.08.28
스프링 MVC 프레임워크 흐름  (0) 2022.08.21
서블릿(java Servlet)이란?  (0) 2022.08.21