Sobes.tech
Junior — Middle

Kafka ishlab chiqaruvchisi xabar yuborish uchun bo'limni qanday tanlaydi?

sobes.tech AI

AIdan javob

Kafka ishlab chiqaruvchisi xabarni yuborish uchun bo'linma (partition) ni tanlaydi, bu xabar kaliti va bo'linma bo'linma sozlamalariga asoslangan. Agar xabar kalitga ega bo'lsa, Kafka bu kalitdan hash funktsiyasini ishlatadi va aniq bo'linmani aniqlaydi, shuning uchun bir xil kalitga ega barcha xabarlar bir xil bo'linmaga tushadi. Agar kalit bo'lmasa, ishlab chiqaruvchi odatda yukni teng taqsimlash uchun xabarlarni tsiklik (round-robin) tarzda taqsimlaydi.

Go tilida sarama kutubxonasi bilan misol:

producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
    Topic: "my_topic",
    Key:   sarama.StringEncoder("userID123"), // bo'linma uchun kalit
    Value: sarama.StringEncoder("xabar yuklamasi"),
}
partition, offset, err := producer.SendMessage(msg)

Bu yerda, "userID123" kaliti bo'linma tanlash uchun ishlatiladi, shuning uchun bu kalitga ega barcha xabarlar bir xil bo'linmaga tushadi.