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("payload ของข้อความ"),
}
partition, offset, err := producer.SendMessage(msg)

ที่นี่ คีย์ "userID123" จะถูกใช้เพื่อเลือกพาร์ติชัน เพื่อให้ข้อความทั้งหมดที่มีคีย์นี้ไปยังพาร์ติชันเดียวกัน