Junior — Middle
Πώς επιλέγει ο παραγωγός Kafka το διαμέρισμα για την αποστολή ενός μηνύματος;
sobes.tech AI
Απάντηση από AI
Ο παραγωγός Kafka επιλέγει ένα partition για να στείλει ένα μήνυμα βάσει του κλειδιού του μηνύματος και των ρυθμίσεων διαχωρισμού. Αν το μήνυμα έχει κλειδί, το Kafka χρησιμοποιεί μια συνάρτηση κατακερματισμού αυτού του κλειδιού για να καθορίσει συγκεκριμένο partition, διασφαλίζοντας ότι όλα τα μηνύματα με το ίδιο κλειδί θα πάνε στο ίδιο partition. Αν δεν υπάρχει κλειδί, ο παραγωγός συνήθως διανέμει τα μηνύματα κυκλικά (round-robin) για εξισορρόπηση φορτίου.
Παράδειγμα σε Go με τη βιβλιοθήκη sarama:
producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
Topic: "my_topic",
Key: sarama.StringEncoder("userID123"), // κλειδί για διαχωρισμό
Value: sarama.StringEncoder("φορτίο μηνύματος"),
}
partition, offset, err := producer.SendMessage(msg)
Εδώ, το κλειδί "userID123" θα χρησιμοποιηθεί για την επιλογή του partition, ώστε όλα τα μηνύματα με αυτό το κλειδί να πηγαίνουν στο ίδιο partition.