Sobes.tech
Junior — Middle

Kaip Kafka gamintojas pasirenka skirstinį (partition) pranešimo siuntimui?

sobes.tech AI

Atsakymas iš AI

Kafka gamintojas pasirenka dalį (partition), kad siųstų žinutę, remiantis žinutės raktu ir dalijimosi nustatymais. Jei žinutė turi raktą, Kafka naudoja šio rakto maišos funkciją, kad nustatytų konkretų dalį, užtikrinant, kad visi su tuo pačiu raktu žinutės pateks į tą pačią dalį. Jei raktas nėra, gamintojas paprastai paskirsto žinutes cikliškai (round-robin), kad subalansuotų apkrovą.

Pavyzdys Go kalba naudojant sarama biblioteką:

producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
    Topic: "my_topic",
    Key:   sarama.StringEncoder("userID123"), // raktas dalijimuisi
    Value: sarama.StringEncoder("žinutės turinys"),
}
partition, offset, err := producer.SendMessage(msg)

Čia, raktas "userID123" bus naudojamas dalies pasirinkimui, kad visi su šiuo raktu žinutės patektų į tą pačią dalį.