Sobes.tech
Junior — Middle

Ako si vyberá producent Kafka oddiel (partition) na odoslanie správy?

sobes.tech AI

Odpoveď od AI

Producent Kafka vyberá oddiel (partition) na odoslanie správy na základe kľúča správy a nastavení rozdeľovania. Ak má správa kľúč, Kafka používa hashovaciu funkciu tohto kľúča na určenie konkrétneho oddielu, čím zabezpečuje, že všetky správy s rovnakým kľúčom pôjdu do toho istého oddielu. Ak kľúč chýba, producent zvyčajne rozdeľuje správy cyklicky (round-robin) na vyváženie záťaže.

Príklad v Go s knižnicou sarama:

producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
    Topic: "my_topic",
    Key:   sarama.StringEncoder("userID123"), // kľúč pre rozdeľovanie
    Value: sarama.StringEncoder("payload správy"),
}
partition, offset, err := producer.SendMessage(msg)

Tu bude kľúč "userID123" použitý na výber oddielu, aby všetky správy s týmto kľúčom išli do toho istého oddielu.