Day 개발 기록
[kafka-1] Kafka 용어 설명 본문
카프카 브로커
실행된 카프카 애플리케이션 중 서버 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 |
---|