Sobes.tech
Senior

Kafkaда кайсы жеткирүү кепилдигин колдонобуз?

sobes.tech AI

AIден жооп

Kafkaда адатта "кеминде бир жолу" жеткирүү кепилдиги колдонулат. Бул билдирүү кеминде бир жолу керектөөчүнө жеткирилет, бирок ката кетсе дублётор пайда болушу мүмкүн. Ишенимдүүлүктү жогорулатуу жана маалыматты жоготпоо үчүн Kafka актыктарды (acks) колдонуп, алардын деңгээлин конфигурациялай алат:

  • acks=0 — өндүрүүчү актыкты күтпөйт (азыркы эң аз ишенимдүү)
  • acks=1 — бөлүмдүн лидеринен актык
  • acks=all (же -1) — бардык репликалардан актык (максимал ишенимдүү)

"так точно бир жолу" жеткирүүнү камсыздоо үчүн, керектөөчү тарапта кошумча логика жана Kafkaда транзакциялар колдонуу керек, бул көбүрөөк татаал жана ар дайым негиздүү эмес.

Go тилинде "кеминде бир жолу" жеткирүү кепилдиги менен конфигурациялоо мисалы:

producer, err := sarama.NewSyncProducer(brokers, &sarama.Config{
    Producer: sarama.ProducerConfig{
        RequiredAcks: sarama.WaitForAll, // acks=all
        Retry:       sarama.NewRetry(5),
    },
})