Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- numpartitions
- 도커
- 동적 차트
- polars
- 카프카
- Materializations
- UI for kafka
- airflow
- CDC
- 모바일
- 파이썬
- Java
- KubernetesPodOperator
- DBT
- docker
- bar cahrt
- 크롤링
- Python
- k9s
- 쿠버네티스
- freshness
- mysql
- spark
- 윈도우
- proerty
- spring boot
- ksql
- dbt_project
- query history
- kafka
Archives
- Today
- Total
데이터 엔지니어 이것저것
카프카 메시지 순서를 보장 본문
728x90
카프카를 사용하다 보면 메시지 순서를 보장해서 처리해야할 때가 있다.
- 파티션당 하나의 컨슈머를 할당
가장 심플한 방법이다. 하나의 파티션에 하나의 컨슈머만 할당을 하면, 순서를 보장할 수 있다.
(토픽에 하나의 파티션만 존재, 특정 파티션에 하나의 컨슈머만 존재) - 키 기반의 파티셔닝 사용
카프카의 토픽은 여러개의 파티션으로 나눠져 있어, 키 기반 파티션을 사용하여 특정 파티션에 메시지의 순서를 보장. - 순서를 보장하는 프로듀서 사용
순서를 보장하는 프로듀서를 사용하여, 카프카에 순서대로 적재 - 메시지 수신 확인 기능 활용
컨슈머가 메시지를 수신한 후, 처리했음을 카프카에 알림.
이를 활용하여 순서를 보장
순서를 보장하는 프로듀서에는 idempotent producer 또는 transactional producer라고 불린다
Idempotent producer의 경우 메시지 전송 중 발생하는 중복 메시지를 방지하는 기능을 가지고 있으며,
이를 위해 메시지 전송 시 메시지에 고유한 ID를 부여, 카프카 파티션에 저장된 마지막 offset을 기록하여 중복 메시지를 제거.
Transcational producer는 메시지의 전송 과정을 트랜잭션 단위로 처리하여 순서를 보장
트랜잭션 단위로 메시지를 전송하고, 성공항 경우에만 메시지를 파티션에 저장.
만약 실패할 경우 롤백
728x90
'오픈소스 > kafka' 카테고리의 다른 글
Schema Registry (0) | 2023.04.30 |
---|---|
kafka-topic.sh 기본 명령어 (0) | 2023.04.13 |
Kafka Topic (0) | 2023.01.28 |
CCDAK 준비 (0) | 2022.11.14 |
카프카 커넥트 (0) | 2022.08.22 |