본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/4hTSJNB
I. 학습 인증샷 4장 이상 포함
1. 공부시작: 날짜, 시각 다 나오도록
2. 공부 종료: 날짜 시각 다 나오도록
3. 1개 클립 수강 (강의장 목록 캡쳐, 수강화면이 보이지 않도록) 1장
4. 학습 인증샷 1장(필기 촬영이나 작업물 촬영)
II. 학습 후기 700자 이상 (공백 제외)
카프카의 Exactly Once Semantics(EOS) 2번째 강의로 아키텍처와 설정 방법을 단계별로 설명한다.
요약
트랜잭션 핵심 개념
- 트랜잭션 코디네이터
- 프로듀서에게 할당되어 PID 관리 및 트랜잭션 상태 추적
- 컨슈머 그룹 코디네이터와 비슷하게 할당되는 듯
- 브로커 내의 트랜젹선 코디네이터 스레드
- 트랜잭션 로그
- 새롭게 도입된 internal kafkaesque topic
- consumer offset topic과 유사함
- 모든 트랜잭션의 영구적이고 복제된 record를 저장하는 트랜잭션 코디네이터의 상태저장소
- Transactional ID
- 프로듀서를 고유하게 식별하기 위해 사용
- 동일한 ID를 가진 프로듀서의 다른 인스턴스들은
이전 인스턴스에 의해 만들어진 모든 트랜잭션에 대해서
재개 또는 중단할 수 있음 - 기본값 : 7일
트랜잭션 처리 5단계
- `initTransactions()`로 코디네이터 탐색
- PID 획득 및 Epoch 증가(Zombie 프로듀서 방지)
- Topic Partition 등록(`AddPartitionsToTxnRequest`)
- 메시지 전송과 오프셋 커밋 동기화(`sendOffsetsToTransaction`)
- 최종 커밋/중단 표시(`WriteTxnMarkerRequest`)
혼란의 멀티버스...
- 카프카 트랜잭션 개념을 어제 1번째 시간에 봤을때는 메시징 전송에 롤백이 된다고! 하고 신기해했다.
- 오늘 설명을 보면서.. 어렵다... 또
- `transactional.id` 의 예시가 없어서 이해가 어렵다.
- 테이블에서는 default가 없다고 나오지만 해당 부분이 비어있으면 프로듀서는 Idempotent Delivery만으로 제한된다
- 그러면 해당 값이 세팅이 되어야 하는데.. 실제 운영환경이나 예시가 전혀 없다..
- 컨슈머 부분에서도 또 충격인데
- `isolation.level=read_committed`로 설정하면 커밋된 메시지만 읽는다는 부분은 어제 인지 했다.
- 컨슈머가 중복해서 데이터 처리하는 것에 보장하지 않는다!~!!
- 따라서 컨슈머 중복 처리는 따로 로직을 작성해야 한다(Idempotent Consumer)
- 즉 중복처리 방지를 위한 별도의 멱등성 로직을 작성해야 한다는 것
- 카프카가 자동으로 해주지 않나? 라고 생각했는데.. 컨슈머 오프셋을 수동으로 관리를 해야 한다는 내용이
공유자료 pdf에 나와있다. - ...실제 프로젝트에서는 어떻게 구현해야 하지..
- 트랜잭션 데이터 플로우를 보면 숨이 턱 막힌다.
- 다만 강의 슬라이드는 위의 그 복잡한 처리 프로세스를 하나 하나씩 설명해서
그나마 보면서 간신히 흐름은 알 수 있었다.
'패캠챌린지 > Kafka EcoSystem - 진행중' 카테고리의 다른 글
패스트캠퍼스 환급챌린지 23일차 : 한번에 끝내는 KafkaEcosystem 강의 후기 (0) | 2025.03.27 |
---|---|
패스트캠퍼스 환급챌린지 22일차 : 한번에 끝내는 KafkaEcosystem 강의 후기 (0) | 2025.03.26 |
패스트캠퍼스 환급챌린지 20일차 : 한번에 끝내는 KafkaEcosystem 강의 후기 (0) | 2025.03.24 |
패스트캠퍼스 환급챌린지 19일차 : 한번에 끝내는 KafkaEcosystem 강의 후기 (0) | 2025.03.23 |
패스트캠퍼스 환급챌린지 18일차 : 한번에 끝내는 KafkaEcosystem 강의 후기 (0) | 2025.03.22 |