Кадом механизм барои кафолати расонидани паёмҳо дар 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)
Инчунин, механизм кафолати расонидан — ин як омезишест аз тасдиқҳо, репликация ва идоракунии масирҳо.