반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

간단한 개발관련 내용

카프카 트랜잭션 동작원리 본문

Message Queue/Kafka

카프카 트랜잭션 동작원리

vincenzo.dev.82 2024. 11. 22. 12:29
반응형

1. 카프카 트랜잭션의 목적

  • Exactly-once semantics (EoS): 메시지를 정확히 한 번만 처리.
  • 프로듀서-컨슈머 간 원자적 작업:
    • 데이터 생산(프로듀서) 및 소비(컨슈머)를 원자적으로 연결.
  • 데이터 무결성:
    • 장애 발생 시 중복 메시지 방지 및 데이터 일관성 유지.

 

2. 카프카 트랜잭션의 주요 구성 요소

  1. transactional.id:
    • 트랜잭션을 구분하는 고유 ID.
    • 프로듀서는 transactional.id를 기반으로 트랜잭션 작업을 수행.
  2. Producer ID (PID):
    • 프로듀서 인스턴스에 부여되는 고유 ID.
    • 브로커는 PID를 통해 트랜잭션 상태를 관리.
  3. Epoch:
    • 트랜잭션 버전 관리.
    • 장애 복구 시 동일한 transactional.id로 중복 작업 방지(팬싱).
  4. 트랜잭션 로그:
    • 브로커는 트랜잭션 상태(시작, 커밋, 중단 등)를 로그로 기록.
    • 복구 시 해당 로그를 참조해 트랜잭션 일관성을 보장.

 

3. 트랜잭션 작동 과정

  1. 트랜잭션 초기화:
    • 프로듀서가 initTransactions() 호출.
    • transactional.id를 브로커에 등록하고 PID와 Epoch를 받음.
  2. 트랜잭션 시작:
    • beginTransaction() 호출로 트랜잭션 범위 시작.
  3. 데이터 전송:
    • 프로듀서가 메시지를 브로커에 전송(send())하며, 메시지는 트랜잭션에 포함됨.
  4. 트랜잭션 커밋/중단:
    • 커밋:
      • commitTransaction() 호출.
      • 트랜잭션 로그에 커밋 상태 기록.
      • 메시지가 컨슈머에게 공개됨.
    • 중단:
      • abortTransaction() 호출.
      • 트랜잭션 로그에 중단 상태 기록.
      • 메시지는 삭제되거나 숨겨짐.
  5. 컨슈머 일관성:
    • 컨슈머는 read_committed 모드로 설정 시 커밋된 메시지만 읽음.
    • 중단된 트랜잭션의 메시지는 무시.

 

4. 카프카 트랜잭션의 특징

  • 원자성:
    • 여러 파티션 및 토픽에 걸친 작업도 원자적으로 처리.
  • 일관성:
    • 트랜잭션 로그를 통해 데이터 정합성 보장.
  • 격리성:
    • read_committed를 통해 중단된 메시지를 숨김.
  • 내구성:
    • 장애 복구 시 트랜잭션 상태를 복원.

 

Chandy-Lamport Snapshot Algorithm


1. Chandy-Lamport 알고리즘이란?

  • 분산 시스템에서 글로벌 상태를 캡처하기 위한 알고리즘.
  • 각 프로세스와 통신 채널의 상태를 기록하여 일관된 스냅샷 생성.

 

2. 알고리즘의 목적

  • 글로벌 상태 추적:
    • 분산 시스템에서 프로세스 간의 상태 및 메시지 전달 상태를 기록.
  • 무결성 보장:
    • 정확하고 일관된 스냅샷으로 분산 시스템의 복구 및 분석.

 

3. 작동 원리

  1. 스냅샷 시작:
    • 특정 프로세스가 스냅샷을 시작(마커 메시지 전송).
  2. 스냅샷 저장:
    • 프로세스는 자신의 현재 상태를 기록.
    • 처음 마커 메시지를 받은 후부터 해당 채널의 메시지를 기록(채널 상태).
  3. 마커 메시지 전달:
    • 각 프로세스는 연결된 모든 채널에 마커 메시지를 전송.
  4. 스냅샷 완료:
    • 모든 채널에서 마커 메시지를 수신하면 스냅샷 완료.

 

4. 주요 개념

  • 프로세스 상태:
    • 프로세스가 특정 시점에서 가지고 있는 데이터.
  • 채널 상태:
    • 마커 메시지를 받기 전 해당 채널에 도착한 모든 메시지.
  • 일관된 스냅샷:
    • 모든 프로세스와 채널의 상태를 포함하며, 메시지 손실 없이 정확히 반영.

 

5. Chandy-Lamport의 전제 조건

  • FIFO (First In, First Out) 채널:
    • 메시지가 전송된 순서대로 도착해야 함.
  • 통신 채널 신뢰성:
    • 메시지가 손실되지 않고 도착해야 함.

카프카 트랜잭션과 Chandy-Lamport의 연관성

  • 일관성 보장:
    • 카프카 트랜잭션은 트랜잭션 로그를 통해 메시지 일관성을 보장하며, Chandy-Lamport는 분산 시스템의 글로벌 상태를 캡처.
  • 분산 처리:
    • 카프카는 다중 브로커 환경에서 트랜잭션 관리, Chandy-Lamport는 다중 프로세스 상태 기록.
  • 복구 및 재처리:
    • 카프카의 트랜잭션 로그와 Chandy-Lamport의 스냅샷은 장애 복구에 활용.

요약

  • 카프카 트랜잭션은 메시지 처리의 원자성, 일관성, 내구성을 보장하기 위한 메커니즘으로, 팬싱과 트랜잭션 로그를 통해 데이터 무결성을 유지.
  • Chandy-Lamport 알고리즘은 분산 시스템의 글로벌 상태 캡처를 위한 기법으로, 일관된 상태 기록과 장애 복구를 가능하게 함.
반응형