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" բանալին կօգտագործվի բաժին ընտրելու համար, որպեսզի բոլոր նույն բանալին ունեցող հաղորդագրությունները հասնեն նույն բաժին։