Skip to content

Latest commit

 

History

History
78 lines (50 loc) · 2.92 KB

Kafka 조금 아는 척하기 1.md

File metadata and controls

78 lines (50 loc) · 2.92 KB

Kafka 조금 아는 척하기 1

스크린샷 2022-10-05 오전 11 12 59

  • 토픽은 메세지를 구분하는 단위: 파일 시스템의 폴더와 유사
  • 한 개의 토픽은 한 개 이상의 파티션으로 구성
    • 파티션은 메세지를 저장하는 물리적인 파일

파티션과 오프셋, 메세지 순서

  • 파티션은 추가만 가능한(append-only) 파일
    • 각 메세지 저장 위치를 오프셋(offset) 이라고 함
    • 프로듀서가 넣은 메세지는 파티션의 맨 뒤에 추가
    • 컨슈머는 오프셋 기준으로 메세지를 순서대로 읽음
    • 메세지는 삭제되지 않음(설정에 따라 일정 시간이 지난 뒤 삭제)

스크린샷 2022-10-05 오전 11 22 42


여러 파티션과 프로듀서

  • 프로듀서는 라운드 로빈 또는 키로 파티션 선택
    • 같은 키를 갖는 메세지는 같은 파티션에 저장 -> 같은 키는 순서 유지

스크린샷 2022-10-05 오전 11 26 31


여러 파티션과 컨슈머

  • 컨슈머는 컨슈머그룹에 속함
  • 한 개 파티션은 컨슈머 그룹의 한 개 컨슈머만 연결 가능
    • 즉 컨슈머 그룹에 속한 컨슈머들은 한 파티션을 공유할 수 없음
    • 한 컨슈머그룹 기준으로 파티션의 메세지는 순서대로 처리

스크린샷 2022-10-05 오전 11 31 43


성능

  • 묶어서 보내기, 묶어서 받기 (batch)
    • 프로듀서: 일정 크기만큼 메세지를 모아서 전송 가능
    • 컨슈머: 최소 그기만큼 메세지를 모아서 조회 가능
  • 낱개 처리보다 처리량 증가

카프카와 성능

  • 처리량 확장이 쉬움
    • 1개 장비의 용량 한계 -> 브로커 추가, 파티션 추가
    • 컨슈머가 느림 -> 컨슈머 추가 (+파티션 추가)

리플리카 - 복제

  • 리플리카: 파티션의 복제본
    • 복제수(replication factor) 망큼 파티션의 복제본이 각 브로커에 생김
  • 리더와 팔로워로 구성
    • 프로듀서와 컨슈머는 리더를 통해서만 메세지 처리
    • 팔로워는 리더로부터 복제
  • 장애 대응
    • 리더가 속한 브로커 장애시 다른 팔로워가 리더가 됨

Reference