본문 바로가기

Infra/카프카

[Kafka] 카프카 기초

728x90

카프카의 정의

카프카의 구조

- 카프카는 어플레키에션에서 데이터 통신을 처리해주는 큐이다

- 대용량 처리에 유용하며 고가성용을 보장한다.

- 낮은 지연 높은 처리량

- https://www.youtube.com/watch?v=waw0XXNX-uQ&feature=youtu.be 

카프카 토픽

토픽은 여러개의 파티션을 가진다

- DB의 테이블과 유사 (데이터가 들어갈 수 있는 공간)

- 토픽은 이름을 가질 수 있으며, 큐에 들어가는 목록

- auto.offset.reset=earliest 셋업이 되어야 하고 다른 컨슈머 그룹이 온다면 파티션에서 다시 데이터를 들고갈 수 있음

- 프로드셔가 파티션을 추가할 때 키가 없으면, 라운드 로빈 키가 있으면 해시값으로 지정해서 파티션에 할당

- 파티션을 늘릴 수 있지만 줄일 수 없음

- 파티션의 데이터는 log.retention.ms와 log.retention.byte에 따라 보존 시간과 크기를 설정

- https://www.youtube.com/watch?v=7QfEpRTRdIQ&feature=emb_logo

카프카 파티셔너

파티셔너

- 파티셔너는 프로듀서가 브로커로 데이터를 전송시켜주는 역할

- 메시지 키가 있는 경우는 특정한 해쉬값 기준으로 파티션을 고름 (동일한 키, 동일한 파티션)

- 없을 경우는 라운드 로빈으로 동작

- 커스텀 파티셔너도 개발할 수 있음

- https://www.youtube.com/watch?time_continue=209&v=-vKiNUH5OT8&feature=emb_logo 

컨슈머 랙

렉 구조

- 렉은 토픽의 가장 최신 오프셋과 컨슈머 오프셋의 차이이다.

- 렉은 여러개가 존재할 수 있다. (파티션이 여러개니깐)
- https://www.youtube.com/watch?time_continue=184&v=D7C_CFjrzBk&feature=emb_logo

카프카 버로우

카프카 버로우 구조

- 컨슈머 렉 모니터링 애플리케이션

- 멀티 카프카 클러스터를 지원

- sliding window 기능을 활용하여 status 기반으로 모니터링

- golang으로 개발됨
- https://www.youtube.com/watch?v=b3i6D4eeBGw&t=309s

 

300x250