이 글은 Udemy의 '초보자를 위한 아파치 카프카 강의 v3'를 듣고 정리한 내용이다.
프로듀서
- 프로듀서는 topic에 데이터를 쓴다
- 프로듀서는 어떤 파티션에 데이터를 쓸지 알고 있다
- 카프카 브로커가 해당 정보를 가지고 있음
- 카프카 서버에서 특정 파티션이 failure되면, 프로듀서는 recover할 수 있음
- 로드밸런싱을 함
메세지 키
- 프로듀서는 메세지에 키를 추가하여 보낼 수 있음 (선택사항, 키는 string, number, binary, ...의 형식을 가짐)
- key=null이면 round-robin 형식으로 전송
- key!=null이면 특정한 키에만 데이터가 써짐 (hashing strategy)
- 특정 field의 메세지 순서가 중요하다면 key를 제공해줘야함
- Kafka message key hashing
- kafka partitioner가 record를 받고 kafka partitioner에 존재하는 로직을 통해 어떤 파티션으로 보낼지 결정
- key hashing은 어떤 파티션에 키를 매핑할지 정하는 프로세스
- default partitioner로는 murmur2 algorithm을 씀
targetPartition = Math.abs(Utils.murmur2(keyBytes)) % (numPartitions -1)
카프카 메세지
카프카 메세지 Serializer
- 카프카는 프로듀서로 부터 input으로 bytes로만 받고, 컨슈머로 bytes로만 output을 준다.
- 따라서 메시지 직렬화를 해야함
- Serializer는 key, value에만 쓰임
- common serializers
- string (json 포함)
- int, float
- avro
- protobuf
- ...
'Data Engineering > Kafka' 카테고리의 다른 글
[Kafka] Apache Kafka 초보 3 : 컨슈머 & 역직렬화 (0) | 2024.07.02 |
---|---|
[Kafka] Apache Kafka 초보 1 : 토픽, 파티션, 오프셋 (0) | 2024.07.02 |