본문 바로가기
KAFKA

카프카에서 메시지를 보내면 일어나는 일

by 흰색남자 2022. 10. 3.

일단 카프카는 "레코드" 단위로 메시지를 보낸다.

또한 하나씩 계속 전달되게 되면, 과부하가 일어나기 때문에 Accumulator 에 의해 일정한 배치사이즈로 축적을 한다.

 

시작

1. 전송을 위한 레코드 객체를 만듬.

2. 해당 객체는 Serializer에 의해 바이트화 됨.

3. 바이트화 된 객체는 Partitioner에 의해 토픽의 어떤 파티션에 들어갈지 정함.

4. 메타데이터와 함께 Accumulator에 일정한 배치 사이즈로 축적됨.

5. 각종 Config 마다 다르게 전송이 되는데,  

- linger.ms - 배치로 만들어서 데이터를 보내기 위한 최소 시간. 배치사이즈가 전부 차지 않아도 이 시간이 경과하면 보냄.

- buffer.memory = accumulator의 최대 크기

- batch.size = 단일 배치의 사이즈

6. 위의 설정에 맞춰 전송 요건이 되면 Sender에 의해 전송됨.

- request.timeout.ms = 일정 시간동안 응답이 안오면 재전송

- retry.backoff.ms = 전송 재시도를 위한 대기시간

- deliver.timeout.ms = 메시지 전송에 허용된 최대 시간. 이 시간 경과하면 버림

 

 

- 동기와 비동기로 또 나뉨. // 성능 차이는 비동기가 100배 빠름

 

 

 

'KAFKA' 카테고리의 다른 글

RabbitMQ 정리  (0) 2023.03.03
kafka kraft - 어려워서 나중에 따로 정리..뭔가 좀 쿠버네티스랑 비슷한듯 싶은데,,  (0) 2022.10.18
카프카 코어 정리  (0) 2022.10.16
카프카 컨수머 구조  (0) 2022.10.08
카프카  (0) 2022.10.03