📌 kafka 및 Confluent 를 공부하며 정리하는 글
카프카에서 데이터를 얻는 방법을 알아보자.
Producer
- topic에 data를 write한다.
- 어떤 broker의 어떤 파티션에 write해야 할지 자동으로 인식한다.
- Broker에 장애가 난 경우, Producer는 자동으로 복구한다.
- 기본적으로(key가 없는 경우) Producer는 라운드 로빈 방식으로 파티션에 데이터를 write한다. 파티션의 개수에 따라 라운드 로빈된다.
1) acks strategy
Producer는 data writes에 대한 확인 메세지를 받는데, 아래와 같이 3가지의 방법이 있다.
- acks=0 : 확인 메세지를 기다리지 않고 진행 (데이터 손실 가능)
- acks=1 : leader의 확인 메세지만 대기 (제한된 데이터 손실 가능)
- acks=all : leader + replicas 모두의 확인 메세지 대기 (데이터 손실 없음)
2) Message Keys : Key 기반 ordering
- 프로듀서는 message와 함께 key를 보낼 수 있다.(key의 형태는 string, number...)
- Key가 null이라면, 데이터는 라운드 로빈 방식으로 전달
- Key가 함께 제공되는 경우, 동일한 키를 가진 모든 메세지는 항상 동일한 파티션으로 보내진다.
- 따라서, 특정 속성에 대해 메시지 순서를 맞추고자 한다면 key를 기본적으로 보내야 한다.
- Key to partition 알고리즘: Key Hashing (Partition number 기반)
- 키 자체만으로 어떤 파티션에 write되도록 지정할 수 는 없지만 키가 항상 동일한 파티션으로 write된다.
'자기발전소 > # Kafka_Confluent' 카테고리의 다른 글
[Kafka] Producer 관련 주요 옵션 (0) | 2021.05.29 |
---|---|
[Kafka] Broker & Zookeeper (0) | 2021.05.19 |
[Kafka] Consumer (0) | 2021.05.19 |
[Kafka] Topic (0) | 2021.05.19 |
[Kafka] Apache Kafka란 (0) | 2021.05.19 |