როდესაც საუბარია 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)
}
// შემდეგ, გაგზავნეთ შეტყობინებები მწარმოებლის საშუალებით