Question d'entretien pour ingénieur data

La livraison exactly once est-elle réellement possible dans Kafka, et comment l'obtiendriez-vous en pratique ?

Ce que le recruteur cherche à évaluer, comment structurer votre réponse et un exemple parlé à adapter.

Réponse rapide

La livraison exactly once sur un réseau n'est pas possible, mais le traitement exactly once l'est, dans certaines limites. Kafka vous donne un producteur idempotent plus des transactions, si bien qu'un cycle read process write à l'intérieur de Kafka valide les offsets et la sortie de façon atomique. De bout en bout, il faut encore que le sink coopère, soit par une écriture transactionnelle, soit par un upsert idempotent sur une clé stable. En pratique, la plupart des équipes obtiennent de l'at least once plus des sinks idempotents.

Pourquoi les recruteurs posent cette question

C'est un test de profondeur sur le raisonnement en systèmes distribués. Les réponses faibles disent enable.idempotence égale true et s'arrêtent là. Les recruteurs veulent entendre la distinction entre livraison et traitement, la limite de portée des transactions Kafka (elles ne couvrent que les topics Kafka et les offsets de consommation), et la réalité pragmatique : ce sont les sinks idempotents qui rendent un pipeline correct de bout en bout.

Comment structurer votre réponse

  • Séparez la livraison exactly once du traitement exactly once.
  • Expliquez le producteur idempotent et quel doublon il élimine.
  • Décrivez les transactions qui couvrent la sortie et la validation d'offset de façon atomique.
  • Posez la frontière : les sinks externes ne sont pas dans la transaction.
  • Atterrissez sur at least once plus écritures idempotentes comme réponse pratique.

Exemple de réponse

Exemple parlé, à la première personne

Strictement, non. Vous ne pouvez pas garantir une livraison exactly once sur un réseau non fiable, parce qu'un accusé de réception peut toujours se perdre et que l'émetteur doit choisir entre renvoyer ou abandonner. Ce que Kafka vous donne, c'est une sémantique de traitement exactly once à l'intérieur de Kafka. Le producteur idempotent ajoute un identifiant de producteur et un numéro de séquence, si bien qu'un envoi rejoué ne crée pas de doublon sur la partition, et les transactions permettent de valider vos enregistrements de sortie et vos offsets de consommation de façon atomique, si bien qu'une topologie read process write ne double pas les comptes en cas d'échec. La limite, c'est la portée. Dès que vous écrivez dans Postgres ou S3, cette écriture est hors de la transaction. Donc ce que je construis vraiment, c'est de l'at least once avec un sink idempotent, en général un merge sur un identifiant d'événement ou une clé naturelle. Sur un pipeline de clickstream, nous dédupliquions sur event_id avec une fenêtre de sept jours, ce qui était moins cher et plus simple à raisonner que d'essayer de rendre chaque saut transactionnel.

Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.

Voir comment ça marche

Questions de relance à prévoir

  • À quoi sert transactional.id et pourquoi est-ce important au redémarrage ?
  • Comment dédupliqueriez-vous un flux sans état non borné ?
  • Quel est le coût en performance de l'activation des transactions ?

Autres questions pour ingénieur data

Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.

Prédire mes questions

Répétez les questions difficiles avant qu'on vous les pose

Entraînez-vous avec un copilote en direct, puis présentez-vous prêt. Un Session Pass à $29 vous accompagne pendant l'entretien, sans abonnement et sans engagement.

Obtenir GhostPilot