Junior — Middle
როგორ ირჩევს Kafka პროდიუსერი შეტყობინების გასაგზავნად განყოფილებას (partition)?
sobes.tech AI
პასუხი AI-სგან
Kafka გამწევი არჩევს განყოფილებას (partition) შეტყობინების გაგზავნისთვის შეტყობინების გასაღზე და განყოფილების განლაგების პარამეტრებზე დაყრდნობით. თუ შეტყობინებას აქვს გასაღები, Kafka იყენებს ამ გასაღების ჰეშ-ფუნქციას კონკრეტული განყოფილების განსაზღვრად, რათა უზრუნველყოს, რომ ყველა ერთსა და იმავე გასაღებით შეტყობინება ერთ განყოფილებაში შევიდეს. თუ გასაღები არ არის, გამწევი ჩვეულებრივ იყენებს ციკლურ (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" გამოიყენება განყოფილების არჩევისთვის, რათა ყველა ამ გასაღებით შეტყობინება ერთ განყოფილებაში შევიდეს.