Sobes.tech
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" გამოიყენება განყოფილების არჩევისთვის, რათა ყველა ამ გასაღებით შეტყობინება ერთ განყოფილებაში შევიდეს.