Sobes.tech
Junior — Middle

Эмне үчүн Kafkaда сиздин мурдагы иш ордуңузда билдирүүлөрдү жеткирүүнү кепилдеген механизим колдонулду?

sobes.tech AI

AIден жооп

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

Негизги механизмдер:

  • acks — өнүмчү параметри, ал канча реплика билдирүүнү тастыкташы керектигин аныктайт. Баалуулары:

    • 0 — тастыктоону күтпөйт (төмөн ишенимдүүлүк)
    • 1 — лидерден тастыктаманы күтөт
    • all (же -1) — бардык ISR (синхрондоштурулган реплика)лардан тастыктаманы күтөт, бул эң жогорку ишенимдүүлүктү камсыздайт
  • Кайталап аракеттер жана идемпотенттүүлүк — өнүмчү каталарда билдирүүлөрдү кайра жөнөтө алат, жана идемпотенттүүлүк дублдуулукка жол бербейт.

  • Орундалган орнотууларынын тастыктамасы (offset commit) — керектөөчү билдирүүлөрдү иштеп чыгып, орнотууларынын тастыктамасын жасайт, ошондуктан билдирүүлөр кайра иштелбейт.

Практикада, "кеминде бир жолу" жеткирүү үчүн acks=all жана идемпотент өнүмчү колдонулат, ал эми "так ошол жолу" үчүн кошумча орнотуулар жана колдонмо деңгээлиндеги башкаруу талап кылынат.

Go тилиндеги sarama колдонуу менен өнүмчү конфигурациясынын мисалы:

config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Idempotent = true
config.Producer.Retry.Max = 5
producer, err := sarama.NewSyncProducer(brokers, config)

Ошентип, жеткирүү кепилдиги механизми тастыктамалар, репликация жана орнотууларынын башкаруу аралашмасын камтыйт.