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