Kafka Producers

  • Les Producers écrivent les données dans les topics (qui sont fait de partitions)
  • Les Producers connaissent sur quelle partition écrire et le broker qui l’héberge
  • Dans le cas de la perte d’un broker, les Producers vont automatiquement s’adapter
  • C’est le Producers qui décide sur quel partition écrire la donnée Kafka producer

Producers: Message Key

  • Les Producers peuvent choisir la clés à envoyer avec le message (string, number, binary, …)
  • Si key=null, la donnée est envoyée en round robin
  • Si key!=null, alors tous les messages pour un clés iront toujours dans la même partition (hash)
  • Une clés est envoyée si l’on souhaite ordonnée pour un champ spécifique (traking GPS d’un objet) Kafka message key

Anatomie d’un message

Kafka anatomie message

Sérialisation des messages

  • Kafka accepte seulement les Bytes en Input (producers) et Output (consumers)
  • La sérialisation de message consiste à transformer les objets/données en Bytes
  • C’est utilisé au niveau de value et key
  • Les principaux serializer
    • Sting (incl. JSON)
    • Int, Float
    • Avro
    • Protobuf

Kafka anatomie message

Hash du Message Key

  • Un partitionneur Kafka est un code logique qui prend le record et qui détermine vers quelle partition l’envoyer Kafka anatomie message

  • La Key Hashing est le procédé pour déterminer le mapping entre la clés et la partition
  • Dans le partitionneur Kafka par défaut, les clés sont hashées en utilisant l’algorithme murmur2, avec la formule suivante:
targetPartition = Math.abs(Utils.murmur2(keyBytes)) % (numPartitions - 1)