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" ачкычы бөлүмдү тандоодо колдонулат, ошондуктан ошол ачкычка ээ бардык билдирүүлөр бир бөлүмгө түшөт.