DevBoi

[Kafka] 프로듀서 본문

Develop/[Kafka]

[Kafka] 프로듀서

HiSmith 2023. 8. 31. 18:26
반응형

 

카프카 토픽을 사용할때 가장많이 사용하는 도구이다.

프로듀서 애플리케이션을 개발해서, 토픽에 메시지를 발행하고 일반적인 환경에서는 Producer 애플리케이션을 개발해서

토픽에 메시지를 넣는다.

 

카프카의 데이터는 시작점이 프로듀서이다.

프로듀서 애플리케이션은 카프카에 필요한 데이터를 선언하고 브로커의 특정 토픽의 파티션에 전송한다.

프로듀서는 리더 파티션이 있는 브로커와 통신하게 된다.

 

즉 프로듀서는 토픽의 리더파티션을 가지고있는 브로커와 통신하고 다른 팔로워 파티션은 이를 복제한다.

 

또한 이런 애플리케이션이  자바가 아닌 라이브러리를 사용하면, 공식적으로 지원하는 라이브러리가 아니기떄문에 문제가 발생할 수 있다.

따라서 자바로 개발하는게 좋다.

 

파티셔너,배치생성 단계를 거치고 데이터를 브로커로 전송하게 된다.

 

 

<프로듀서 내부 구조>

offset은 카프카 클러스터에 데이터가 들어가고 지정되는것이고

나머지는 레코드에 들어가 있다. (토픽,파티션,타임스탬프,메시지키,메시지 값)

 

ProducerRecord : 프로듀서에 생성하는 레코드, 오프셋은 미포함

send() : 레코드를 전송요청하는 메소드

Partitioner : 어느파티션으로 전송할지 지정하는 파티셔너, 기본값으로 디폴트로 설정된다.

Accumulator : 배치로 묶어 데이터를 모으는 버퍼

 

따라서, send를 하면 바로 가는게 아니라 -> send ->Partitioner -> Accumulator 과정을 거쳐서 클러스터로 데이터가 전달 된다.

배치로 데이터를 묶고, TCP통신으로 데이터를 전달 한다.

한번에 최대한 많은 데이터로 묶어서 데이터로 보내기 때문에, 해당 Accumulator 를 활용하면 높은 데이터 처리량을 보장할 수 있다는 장점이 있다.

 

 

반응형

'Develop > [Kafka]' 카테고리의 다른 글

[Kafka] 파티셔너  (0) 2023.08.31
[Kafka] dead letter queue  (0) 2023.08.23
[Kafka] 토픽을 생성하는 방법들  (0) 2023.08.13
[Kafka] 카프카 기타 쉘들  (0) 2023.08.13
[Kafka] consumer-groups  (0) 2023.08.13