얼렁뚱땅 스며드는 Data Science

Data Engineering/Kafka

[Kafka] Apache Kafka 초보 2 : 프로듀서 & 메시지 키

Jesip14 2024. 7. 2. 09:29

 

이 글은 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
    • ...