728x90
Apache Kafka 주요 요소(Producer, Consumer, Consumer Group)

- Producer : 메시지를 생산(Produce)해서 Kafka의 Topic으로 메시지를 보내는 애플리케이션
- Consumer : Topic의 메시지를 가져와서 소비(Consume)하는 애플리케이션
- Consumer Group : Topic의 메시지를 사용하기 위해 협력하는 Consumer들의 집합
- 하나의 Consumer는 하나의 Consumer Group에 포함되며, Consumer Group내의 Consumer들은 협력하여 Topic의 메시지를 병렬 처리함
Producer와 Consumer의 기본 동작 방식

- Producer와 Consumer는 서로 알지 못하며, Producer와 Consumer는 각각 고유의 속도로 Commit Log에 Write 및 Read를 수행
- 다른ConsumerGroup에속한Consumer들은서로관련이없으며,CommitLog에있는 Event(Message)를 동시에 다른 위치에서 Read할 수 있음
Record(Message) 구조(Header, Key, Value)

- Key와 Value는 Avro, JSON 등 다양한 형태가 가능하다.
- Message == Record == Event == Data
Kafka는 Record(데이터)를 Byte Array로 저장


- kafka는 데이터를 Byte Array로 저장한다.
- key와 Value 용 Serializer를 각각 설정한다.
https://kafka.apache.org/10/documentation/streams/developer-guide/datatypes.html
Apache Kafka
Apache Kafka: A Distributed Streaming Platform.
kafka.apache.org
Producing to Kafka

- Producer Record에서 send()를 하면 앞서 설정한 Serializer를 통해 byte array로 변환이 된다.
- byte array 같은 경우 Partitioner를 통해 어느 Partition으로 갈지 결정이 된다.
- Compress를 통해 압축 옵션이 있다면, 압축이 되고 RecordAccumulator로 전달이 되어, 카프카로 전달을 한다.
- 카프카가 성공시 metaData 성공을 리턴하고, 실패 시 재시도 옵션이 있으면 재시도가 일어나고, 재시도할 수 없다면 throw exception을 발생시킨다.
Partitioner의 역할
메시지를 Topic의 어떤 Partition으로 보낼지 결정

- "Partition = Hash(Key) % Number of Partitions" 해당 알고리즘을 통해, key를 파티션 갯수로 나눈 값을 가지고 partition을 선택하도록 한다.
- 전제 조건은 key가 null이 아닐때이다.
Partitioner의 종류

- 전제 조건 : Key 가 null 일 때이다.
- Partitioner는 개발해서 교체 가능하다.
- kafka 2.4 이전의 DefaultPartitioner 같은 경우 Round Robin 정책으로 동작했다.
- kafka 2.4 이후의 DefaultPartitioner 같은 경우 Sticky 정책으로 동작 하나의 Batch가 가득 차 닫힐 때까지 하나의 Partition에게 record를 보내고 랜덤으로 Partition을 선택한다.
정리
- Message == Record == Event == Data
- Message는 Header 와 Key 그리고 Value 로 구성
- Kafka는 Record(데이터)를 Byte Array로 저장
- Producer는 Serializer, Consumer는 Deserializer를 사용
- Producer는 Message의 Key 존재 여부에 따라서 Partitioner를 통한 메시지 처리 방식이 다름
728x90
'Kafka 완전 정복 : 클러스터 구축부터 MSA 환경 활용까지 > 기본,심화 개념, 아키텍처와 생태계' 카테고리의 다른 글
| Ch01. Apache Kafka 기본 개념 및 이해 - Replication (0) | 2023.03.29 |
|---|---|
| Ch01. Apache Kafka 기본 개념 및 이해 - Consume (0) | 2023.03.28 |
| Ch01. Apache Kafka 기본 개념 및 이해 - Broker, Zookeeper (0) | 2023.03.20 |
| Ch01. Apache Kafka 기본 개념 및 이해 - Topic, Partition, Segment (0) | 2023.03.19 |
| Ch01. Apache Kafka 기본 개념 및 이해 - Apache Kafka (0) | 2023.03.19 |