Kafka

배세훈·2022년 5월 26일
0

kafka

목록 보기
1/5

Topic이란?

업로드중..

  • 데이터를 구분하기 위한 저장소
  • Kafka는 데이터를 주고받을 때 지정된 토픽으로 주고 받는다.

업로드중..

  • 데이터가 들어갈 수 있는 용량을 나타내기도 함.
  • Topic은 데이터베이스 테이블이나 파일시스템의 폴더와 유사한 성질
  • 프로듀서는 토픽에 데이터를 넣고 컨슈머가 데이터를 가져간다.
  • 토픽은 목적에 따라 각각의 이름을 가질 수 있는데 무슨 데이터를 담는지에 따라 명확하게 명명 권장

업로드중..

  • 메세지의 분류단위로 하나의 토픽은 여러개의 파티션으로 구성
  • 파티션이 없다면 1차선 도로를 달리는 것과 같고 파티션을 늘릴수록 n차선 도로를 달리는 것과 같다.(scale out)
  • 첫번째 파티션 번호는 0번부터 시작하고, 각 파티션마다 고유한 오프셋(offset)을 가지고 있다.

업로드중..

파티션에 데이터가 들어가는 방법

업로드중..

  • 하나의 파티션은 큐처럼 내부에 데이터가 파티션 끝에서부터 차곡차곡 쌓임(Producer)
  • 큐처럼 데이터를 가장 오래된 순서대로 가져감 (Consumer)
  • 더 이상 가져갈 데이터가 없으면 컨슈머는 새로운 데이터가 들어올때까지 대기

업로드중..

  • 컨슈머가 데이터를 가져가더라도 데이터는 삭제되지 않는다.
  • 파티션에 그대로 남은 데이터는 새로운 컨슈머가 붙었을 때 다시 0번부터 가져가면서 사용할 수 있다.
  • 다만 새로 들어온 컨슈머와 컨슈머 그룹이 다르고 auto.offset.reset=earliset일 경우

Producer가 데이터를 보낼때 파티션 지정

  • 데이터를 넣을 '키'를 지정할 수 있다.
  • 키를 지정하지 않고 기본 파티셔너를 사용할 경우 라운드로빈으로 할당 (0번 -> 1번 -> 0번 -> 1번...)
  • 키가 있고 기본 파티셔너를 사용할 경우 키의 해시(hash)값을 구하고 특정 파티션에 할당

업로드중..

파티션 레코드 삭제

  • 레코드가 저장되는 최대시간과 크기에 따라 삭제되는 시점이 정해진다.
  • log.retentions.ms: 레코드 최대보존기간
  • log.retentions.byte: 레코드 최대 보존크기
profile
성장형 인간

0개의 댓글