Day 개발 기록

[kafka-1] Kafka 용어 설명 본문

Database/Kafka

[kafka-1] Kafka 용어 설명

데이25 2023. 9. 23. 16:33

카프카 브로커

실행된 카프카 애플리케이션 중 서버 1대를 의미한다.

주키퍼

  • 주키퍼 : 메타데이터( 브로커 id , 컨트롤러 id ) 저장
  • n개 브로커중 1대는 컨트롤러 수행
  • 컨트롤러 : 브로커가 정상적으로 수행하는지 확인

Record

  • 보내는 데이터 의미
    ++ topic : 테이블 같은것
    (topic , key , message ) 형식으로 보낸다.
  • 프로듀서는 레코드를 생성하여 브로커에게 전송
  • 전송된 레코드들은 파티션에 신규 오프셋과 함께 기록된다.
  • 컨슈머는 브로커로 부터 레코드를 요청하여 가져간다. ( polling ) 형식
    -> 브로커가 컨슈머에게 데이터를 보내는 것이 아니다!!
  • 파일시스템 단위로 저장된다.
  • 메시지가 저장될때는 세그먼트파일이 열린다.
  • 세그먼트가 닫히고 일정시간(or 용량) 에 따라 삭제 또는 압축된다. 언젠간 사라진다.

컨슈머 - 파티션 수

  • 가능한 경우 : 파티션 개수 >= 컨슈머 개수
  • 불가능 : 파티션 개수 < 컨슈머 개수
  • 남은 컨슈머는 파티션을 할당받지 못하고 대기한다.
  • 컨슈머 중 하나가 장애난 경우 대비가 가능
  • 리밸런스발생 : 파티션 컨슈머 할당 재조정 한다.
  • 할당과정에서 중단이 일어난다.
  • 나머지 컨슈머가 파티션으로 부터 polling을 수행한다.
  • 목적에 따라 컨슈머 그룹을 분리할 수 있다.
  • 장애에 대응하기 위해 재입수(재처리) 목적으로 임시 신규 컨슈머 그룹을 생성하여 사용하기도 한다.

토픽

  • 프로듀서와 컨슈머가 이벤트 종류를 구별하는 문자열
  • 개별파티션으로 분산되도록 하여 동시처리 제공
  • offset 마지막 순서에 따라 포인터
  • 컨슈머 메세지 처리순서 : 여러개 > 키설정을 통해 동일한 partition 에 가도록한다.
  • 테이블 / 파일시스템 폴더와 유사
  • 토픽 내부에 파티션 여러개로 구성
  • 레코드 : 데이터
  • 컨슈머가 토픽내부 파티션에서 데이터 가져가도 데이터 삭제 안됨
  • consumer 그룹다름
  • auto.offset.reset = earliest 로 셋팅 되어있어야 됨
  • alter 명령어 통해서 토픽 갯수 증가 가능

파티션

  • 파티션 늘리기는 가능 / 파티션 줄이기는 불가
    -> 파티션을 늘려 컨슈머를 늘리기가 가능하다.
  • follower partition : leader partition 싱크를 통함

메세지 발행

  • acks: 프로듀서 -> 브로커 메세지 보낼 때 , 브로커의 수신 응답 메세지를 어떻게 처리할지
  • 0 : 매우빠름 / 메세지 유실가능성 큼
  • 1 : 대부분이거씀
  • all : 메세지 유실가능성 없음
  • retries : 몇번 재전송할지 쓰는 옵션
  • verifiable : string 발행테스트 필요할때 사용

consumer

  • from-beginning : current offset 이 없을 때 토픽이 갖고 있는 첫 레코드부터 읽어온다는 의미
  • group 에 따라서 메세지 읽음

Producer

  • 데이터를 카프카에 보내는 역할
  • 엄청난 양의 데이터 실시간으로 카프카에 적재할때 사용한다.
  • 토픽에 해당하는 메세지를 생성한다.
  • 특정 토픽으로 데이터를 publish 한다.
  • 카프카 브로커로 데이터 전송시 전송 성공여부를 알 수 있다.
  • 키 : 메세지 보내면 토픽의 파티션이 지정될 때 쓰인다.

'Database > Kafka' 카테고리의 다른 글

[kafka-2] Kafka 용어 설명  (0) 2023.09.23