Kafka - 신뢰성 있는 카프카 애플리케이션을 만드는 3가지 방법

2024. 6. 18. 16:53Middleware/Kafka&RabbitMQ

1. 멱등성 프로듀서

1.1. 중복 데이터 produce 문제 상황

만약 네트워크에 이슈가 생겨서, Acknowledge 전송이 실패되면 중복으로 데이터를 produce할 수 있다.

1.2. 멱등성 프로듀서 사용

PID(Producer unique ID)를 같이 보내서 브로커에 메시지가 저장되어있음을 같이 저장해서 중복 메시지가 발행되면 토픽에 개시하지 않음.

 

아래는 실제 3.0 이상의 카프카 프로듀서 팩토리 코드인데, 디폴트로 true로 설정된 코드.

 

 

2. 트랜잭션 컨슈머 + 프로듀서

컨슈머와 프로듀서를 하나의 트랜잭션으로 묶어서 처리하는 방식임. 특이하게 커밋을 Producer가 한다.

 

트랜잭션 컨슈머 + 프로듀서 구성으로 되어있고 그 프로듀서가 발행한 이벤트를 consume하는 컨슈머는 반드시isolation.level을 read_committed로 설정해주어야한다.(트랜잭션 commit이 성공한 레코드만 컨슘하는 메커니즘)

 

 

3. 컨슈머의 중복 적재 방지

유니크 키 값을 record key나 혹은 메시지가 발행된 타임스탬프 등으로 설정하면 실제로 중복 오퍼레이션 수행은 하지만, 저장은 못한다.

 

4. 3가지 방법을 정리한 구성 그림

 

참고: https://tech.kakao.com/posts/602

 

신뢰성 있는 카프카 애플리케이션을 만드는 3가지 방법 / 제3회 Kakao Tech Meet - tech.kakao.com

9월 14일에 진행한 제3회 Kakao Tech Meet의 발표 영상과 발표자 이...

tech.kakao.com