본문 바로가기

Data/Kafka

(3)
[Kafka] 메시지 신뢰성 보장 — At-most-once, At-least-once, Exactly-once Kafka는 메시지를 "어느 수준까지 보장할 것인가"를 선택할 수 있는 시스템이다.이 선택을 Delivery Semantics라 하고, 세 가지 수준이 있다.어떤 게 정답이 아니라 서비스 특성에 따라 선택하는 것이고, 수준마다 설정과 구현 전략이 달라진다. 1. 세 가지 전달 보장 수준 개요 세 가지는 트레이드오프 관계다. 유실과 중복을 동시에 없애는 Exactly-once가 가장 강력하지만, 복잡도와 성능 비용도 가장 크다. 2. At-most-once — 최대 한 번메시지를 최대 한 번만 전달한다. 재시도 없이 한 번 보내고 끝이므로 유실이 생길 수 있지만, 중복은 없다. 설정# Produceracks=0# Consumerenable.auto.commit=trueauto.commit.interval...
[Kafka] 카프카(Kafka)는 어떻게 메시지를 잃지 않는가 Kafka가 메시지를 잃지 않는 핵심은 ISR(In-Sync Replica) 이다.ISR이 무엇인지, 어떻게 동작하는지 이해하면 왜 특정 설정이 필요한지도 자연스럽게 납득된다.이번 편에서는 ISR 원리를 중심으로, 그것을 실제로 작동시키는 설정까지 함께 다룬다. 1. 배경 — Kafka가 데이터를 저장하는 방식본격적인 ISR 이야기 전에 Kafka의 저장 구조를 간단히 짚고 넘어간다.Kafka는 메시지를 Commit Log에 저장한다. 일반적인 메시지 큐가 Consumer가 소비하면 메시지를 삭제하는 것과 달리, Kafka는 소비 여부와 상관없이 디스크에 그대로 보존하고 새 메시지는 항상 뒤에만 추가(Append-Only)한다. 이 구조 덕분에 Consumer가 다운됐다 재시작해도, 마지막으로 읽은 오..
[Kafka] 카프카(Kafka) 기본 구조 이해하기 — 토픽, 파티션, 레플리카 이 글은 카프카 시리즈의 1편입니다.2편: 메시지 유실 방지 / 3편: 메시지 신뢰성 보장 카프카가 왜 필요한가요?서비스 규모가 커지면 서비스들 사이에 데이터를 직접 주고받는 구조는 한계에 부딪힙니다. 한쪽이 느려지면 다른 쪽도 멈추고, 연결이 늘어날수록 복잡도가 폭발적으로 증가합니다. 카프카(Apache Kafka)는 이 문제를 해결하기 위한 이벤트 스트리밍 플랫폼입니다. 데이터를 보내는 쪽(Producer)과 받는 쪽(Consumer) 사이에 위치해, 두 쪽을 느슨하게 연결합니다. Producer는 카프카에 메시지를 쌓아두고, Consumer는 자신의 속도에 맞게 꺼내 처리합니다. 이처럼 Consumer가 처리 속도를 스스로 조절할 수 있는 구조를 백프레셔(Backpressure) 라고 하며, 카프카..