Kafka жөнүндө сөз болгондо, кайсы жеткирүү кепилдөөсүн колдойсуз?
sobes.tech AI
AIден жооп
Kafkaда, билдирүүлөрдүн жеткирүүүнүн үч негизги деңгээлин камсыз кылуу мүмкүн:
-
Эң көп бир жолу (бир жолу эмес) — билдирүү 0 же 1 жолу жеткирилиши мүмкүн. Мисалы, растао алдын ката кетсе, билдирүүлөр жоголушу мүмкүн.
-
Кеминде бир жолу (кеминде бир жолу) — билдирүү кепилденген түрдө жеткирилет, бирок бир нече жолу (дупликаттар) жеткирилиши мүмкүн. Бул брокердин растао жана керектүү учурда кайра жөнөтүү аркылуу ишке ашырылат.
-
Так бир жолу (тек бир жолу) — эң катуу кепилдик, анда билдирүү так бир жолу жеткирилет жана иштетилет. Kafkaда бул идемпотенттүү өндүрүүчүлөр жана транзакциялар аркылуу жетишилет.
Goда Kafka менен иштөөдө (мисалы, sarama китепканасы аркылуу), идемпотент жөнөтүүнү конфигурациялап жана "так бир жолу" кепилдикти камсыз кылуу үчүн транзакцияларды колдонуу мүмкүн. Адатта, көбүнчө "кеминде бир жолу" колдонулат.
Goда sarama менен идемпотенттүү өндүрүүчүнү конфигурациялоо мисалы:
config := sarama.NewConfig()
config.Producer.Idempotent = true
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Retry.Max = 5
producer, err := sarama.NewSyncProducer(brokers, config)
if err != nil {
panic(err)
}
// Андан соң, билдирүүлөрдү өндүрүүчү аркылуу жөнөтүңүз