Junior — Middle
Kā Kafka producents izvēlas sadaļu (partition) ziņojuma sūtīšanai?
sobes.tech AI
Atbilde no AI
Kafka ražotājs izvēlas daļu (partition), lai nosūtītu ziņojumu, pamatojoties uz ziņojuma atslēgu un daļas sadalījuma iestatījumiem. Ja ziņojumam ir atslēga, Kafka izmanto šīs atslēgas hash funkciju, lai noteiktu konkrētu daļu, nodrošinot, ka visi ar vienu un to pašu atslēgu saistītie ziņojumi nonāk tajā pašā daļā. Ja atslēga nav, ražotājs parasti sadala ziņojumus cikliski (round-robin), lai līdzsvarotu slodzi.
Piemērs Go valodā, izmantojot sarama bibliotēku:
producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
Topic: "my_topic",
Key: sarama.StringEncoder("userID123"), // atslēga daļas izvēlei
Value: sarama.StringEncoder("ziņojuma svars"),
}
partition, offset, err := producer.SendMessage(msg)
Šeit, atslēga "userID123" tiks izmantota daļas izvēlei, nodrošinot, ka visi ar šo atslēgu saistītie ziņojumi nonāk tajā pašā daļā.