티스토리 뷰
Apache Kafka는 고성능 데이터 파이프 라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 사용하는 오픈 소스 분산 이벤트 스트리밍 플랫폼으로 시스템과 시스템을 연결하는 역활을 합니다.
Apache Kafka 에 대한 자세한 내용은 Kafka | 개발/설계관련 | develop (gitbook.io) 에 연재 하고 있습니다.

- 카프카 개요 : 개요 | 개발/설계관련 | develop (gitbook.io)
- 프로듀서/컨슈머: 프로듀서/컨슈머 | 개발/설계관련 | develop (gitbook.io)
- 설치: 설치 | 개발/설계관련 | develop (gitbook.io)
- 프로듀서: Kafka-Producer | 개발/설계관련 | develop (gitbook.io)
- 컨슈머:
- 커넥터:
- 스크리밍:
1. 이벤트 스트리밍
이벤트 스트리밍은 이벤트 소스(데이터베이스, 센서, 모바일 장치, 클라우드 서비스 및 스트림 형태의 소프트웨어 응용 프로그램)에서 실시간으로 데이터를 갭처하는 방식으로 나중에 검색, 조작, 처리하기 위해 저장합니다. 또한 실시간 처리 또는 데이터에 대한 소급적용을 할 수 있는 것입니다. 따라서 이벤트 스트리밍은 적절한 시간에 올바른 정보가 올바른 위치에 있도록 데이터의 지속적인 흐름과 해석을 보장합니다.
스트리밍 데이터를 처리하는 방법에는 배치 처리, 실시간 스트리밍, 그리고 두 가지를 혼합해 사용하는 방법이 있습니다. 배치 처리는 머신러닝을 포함한 심층 분석을 수행할 수 있지만 지연이 높습니다. 반면, 스트림 처리는 지연이 낮지만 간단한 분석만 가능합니다.
스트리밍 데이터를 처리하기 위한 소프트웨어로는 Amazon Kinesis, Apache Flink, Apache Kafka 등이 있습니다. 이들은 실시간 스트리밍 데이터를 수집, 처리, 분석하는 데 사용됩니다,
2. Kafka 주요 기능
- 다른 시스탬으로 부터 데이터를 지속적으로 가져오기/내보내기를 위해 이벤트 스트림을 읽기(subscribe )/쓰기(publish) 합니다.
- 이벤트 스트림을 원하는 기간 동안 지속적이고 안정적으로 저장합니다.
- 이벤트 스트림이 발생할 때 또는 소급하여 처리합니다.

3. Kafka 특징
Kafka는 대량의 데이터를 높은 처리량과 실시간 처리를 위한 오픈 소스로 다음과 특징이 있이 있습니다.
- 확장성: 데이터 양에 따라서 시스템 확장이 가능합니다
- 연속성: 수신 데이터를 디스크에 저장 하기 때문에 언제라도 데이터를 읽을 수 있습니다.
- 유연성: 다른 제품이나 시스템을 연결 하는 허브 역할을 합니다.
- Connect API -> Kafka Connect 제공
- Streams API -> Kafka Streams 제공
- 신뢰성: 메시지 전달 보증으로 데이터 상실은 허용 하지 않습니다.
4. 메시지 전달 보증
4-1. At Most Once
At Most Once는메시지를 최대 한 번만 전송합니다. 보내는 쪽에서 메시지를 보낸 후 받는 사람이 받았는지 안 받았는지는 확인하지 않습니다.
4-2. At Least Once
메시지가 최소한 한 번은 성공적으로 전달되도록 보장하는 메세지 전달 방식으로 메시지가 중복되지 않고 한 번 이상 전달되도록 보장하는 것으로 중복없이 최소한 한 번은 전달됩니다.
카프카는 Ack와 Offset Commit라는 개념을 도입하여 프로듀서가 메세지를 브로커에 보내면 브로커가 메세지를 수신 후 Ack를 프로듀서에 수신 완료했다고 응답 하고 컨슈머는 브로커로부터 메세지를 받을 때 컨슈머가 메세지를 어디까지 받았는기 관리 하기 위해 Offset을 사용하며 전달 완료를 브로커에 알리기 위해 Offset Commit를 합니다. Ack와 Offset Commit은 재전송여부를 판단할 때 사용합니다.

Kafka At Least Once 방식은 다음과 같은 특징을 가집니다:
- 메시지 전달 보장: 메시지가 소비자에게 최소한 한 번은 전달됩니다.
- 중복 메시지 처리: 메시지가 중복되어 전달될 수 있으므로 소비자는 중복 메시지를 처리할 수 있어야 합니다.
- 성능 및 처리량: 메시지를 두 번 이상 전달해야 하므로 처리량이 높아질 수 있습니다. 그러나 이는 메시지 전달 보장을 위한 대가입니다.
4-3. Exactly Once
각 메시지가 생산자(producer)에 의해 정확히 한 번만 전달되도록 보장하는 방식으로 다음과 같은 방법을 사용합니다:
- Transactional Producers: 여러 메시지를 하나의 트랜잭션으로 묶어 전송하는 기능을 제공하고 이를 통해 메시지가 정확히 한 번만 전달되도록 보장할 수 있습니다.
- Idempotent Producers: 동일한 메시지를 중복해서 보내더라도 결과가 동일하게 처리되도록 하여 메시지 중복을 방지하고 정확한 전달을 보장합니다.
- 소비자의 확인 관리: 소비자는 메시지를 정확히 한 번만 처리하기 위해 확인(acknowledgement)을 적절히 관리합니다.

'프로그램이야기' 카테고리의 다른 글
메시지 브로커 - RabbitMQ (0) | 2024.06.05 |
---|---|
메세지 서비스 (0) | 2024.05.29 |
프로그램이야기 여덟번째 - 복사 (0) | 2023.02.19 |
프로그램이야기 일곱째 - 캡슐화 (0) | 2023.02.18 |
프로그램이야기 여섯번째 - 함수 (0) | 2023.01.22 |