본문 바로가기
DATA/Kafka

[공유] 신뢰성 있는 카프카 애플리케이션을 만드는 3가지 방법 (최원영 Cory)

by bzerome240 2024. 11. 2.

[2023.09.14. 제3회 Kakao Tech Meet 발표]
이벤트 드리븐 아키텍처와 스트림 데이터 파이프라인을 만들때 고민해야 하는 부분을 다룹니다. 프로듀서/컨슈머와 같은 카프카 애플리케이션의 전달 신뢰도를 높이기 위해서 적용할 수 있는 기술들에 대해 설명하고 내부적으로 적용했던 경험을 공유합니다.

 

메시지 전달 신뢰성

-> 정확히 한번, 적어도 한번, 최대 한번



프로듀서는 브로커에 레코더를 보내고 컨슈머가 브로커를 통해 레코드를 가져간다.



신뢰성 있는 카프카를 만드는 3가지 방법

 

방법1) 멱등성 프로듀서 Idempotence producer

프로듀서가 보내는 데이터 중복 적재를 막기 위해 enable.idempotencs 옵션을 제공한다. 3.0부터는 기본값이 true로 설정된다.

기본 프로듀서와 달리 레코드를 브로커에 전송할 때 PID(Producer Unique ID)와 시퀀스 넘버를 함께 전달한다.

브로커는 PID와 Seq를 가지고 있다가 중복 적재 요청이 오면 이후에 요청된 중복 레코드는 적재하지 않는다.



방법2) 토픽 to 토픽의 메시지 전달

광고클릭로그가 수집되면 -> A topic에 저장하고 -> application에서 처리하고 -> B topic에 저장 

트랜잭션 컨슈머+프로듀서 사용하기



방법3) 컨슈머의 중복 적재 방지

3-1) 유니크 키를 활용한 멱등성 컨슈머

컨슈머가 저장소에 저장할 때 유니크키를 저장하여 중복 저장하지 않도록 할 수 있다.

3-2) upsert를 활용한 멱등성 컨슈머

컨슈머가 저장소에 저장할 때 유니크키가 있다면 update하고 없다면 insert한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

댓글