토픽, 파티션

김득회·2022년 9월 19일
0

Kafka

목록 보기
11/13

토픽은 카프카에서 데이터를 구분하기 위해 사용하는 단위이다.
토픽 내부에는 기본적으로 1개의 파티션이 있고, 프로듀서가 보낸 데이터(레코드)들이 저장되어있다.

파티션은 카프카의 병렬처리의 핵심이다. 컨슈머의 처리량이 한정된 상황에서 레코드를 병렬로 처리하는데 가장 좋은 방법은
컨슈머를 늘려주며 파티션 개수를 늘려주는 방법이 가장 좋은 방법이다.

파티션은 큐와 비슷한 구조인데, 여기서 일반 큐와의 차이점은 일반 큐는 데이터를 읽으면 Pop이 일어나면서 삭제가 되지만,
파티션의 데이터는 삭제가 되지 않는다.

파티션의 레코드는 컨슈머가 가져가는 것과 별개로 관리되기 때문에 토픽의 레코드는 다양한 목적을 가진 컨슈머들이 여러번 가져갈 수 있는 특징이 있다.

토픽이름 제약 조건

  • 빈 문자열 토픽 이름은 지원하지 않는다.
  • 토픽 이름은 마침표 한개(.), 마침표 두개(..)로 생성 될 수 없다.
  • 토픽 이름의 길이는 249자 미만으로 생성
  • 토픽 이름은 영어 대소문자와 숫자 0 ~ 9, 마침표(.), 언더바(_), 하이픈(-) 조합으로 생성할 수 있다.
  • 카프카 내부로직 관리 목적으로 생성되는 (consumer_offsets, transaction_state)와 동일한 이름으로 생성 불가능
  • 카프카 내부적으로 사용하는 로직으로 인해 마침표(.), 언더바(-)가 동시에 들어가면 안된다.
  • 이미 생성된 토픽의 마침표(.)를 언더바()로 바꾸거나, 언더바()를 마침표(.)로 바꾼경우 신규 토픽 이름과 동일하다면 생성할 수 없다. ex) to.pic이 있다면 to_pic 생성 불가능

좋은 토픽 작명

  1. <환경>.<팀-명>.<애플리케이션-명>.<메시지타입> = prd.marketing-team.sms-platform.json
  2. <프로젝트-명>.<서비스-명>.<환경>.<이벤트-명> = commerce.payment.prd.notification
  3. <환경>.<서비스-명>.<JIRA-번호>.<메시지-타입> = dev.email-sender.jira-1234.email-vo-custom
  4. <카프카-클러스터-명>.<환경>.<서비스-명>.<메시지-타입> = aws-kafka.live.marketing-platform.json

토픽이름을 생성할 때는 카멜케이스를 사용하는 것 보다는, 케밥케이스, 스네이크 표기법을 권장한다.

profile
감성 프로그래머 HoduDeuk

0개의 댓글