Sobes.tech
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ļā.