Sobes.tech
Junior — Middle

რა მექანიზმი გამოიყენებოდა Kafka-ში თქვენი წინა სამუშაო ადგილას შეტყობინებების მიწოდების გარანტიისთვის?

sobes.tech AI

პასუხი AI-სგან

Kafka-да შეტყობინებების მიწოდების გარანტიები უზრუნველყოფილია გამომგზავნის და მომხმარებლის პარამეტრების კონფიგურაციით, ასევე დადასტურების (acks) მექანიზმით და გადახედვების (offsets) მართვით.

ძირითადი მექანიზმები:

  • acks — გამომგზავნის პარამეტრი, რომელიც განსაზღვრავს, რამდენი რეპლიკა უნდა დადასტუროს შეტყობინების ჩაწერა. მნიშვნელობები:

    • 0 — დადასტურების მოლოდინს არ საჭიროებს (დაბალი საიმედოობა)
    • 1 — მოლოდინს ლიდერის დადასტურება
    • all (ან -1) — მოლოდინს ყველა ISR-ის (სინქრონიზებული რეპლიკები) დადასტურება, რაც უზრუნველყოფს მაქსიმალურ საიმედოობას
  • გადახედვების და იდემპოტენტობის — გამომგზავნი შეუძლია შეცდომების დროს შეტყობინებების გადაგზავნა, ხოლო იდემპოტენტობა თავიდან აცილებს დუბლირებას.

  • გადახედვების (offsets) დადასტურება — მომხმარებელი, შეტყობინებების დამუშავების შემდეგ, დადასტურებას ახდენს, რათა უზრუნველყოს, რომ შეტყობინებები არ განმეორდეს.

პრაქტიკაში, "მინიმუმ ერთხელ" მიწოდებისთვის გამოიყენება 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)

ამგვარად, მიწოდების გარანტიის მექანიზმი არის დადასტურებების, რეპლიკაციის და გადახედვების მართვის კომბინაცია.