Kafkaда керектүү өзүнүн маалымат агымындагы ордун кантип сактайт?
sobes.tech AI
AIден жооп
Apache Kafkaда, керектүүчү өзүнүн жайгашкан жерин маалымат агымында оффсеттер (offsets) аркылуу сактайт. Offset — бул тема бөлүмүндөгү билдирүүнүн тартибиндеги номуру.
Керектүүчү мезгил-мезгили менен азыркы offsetти бекитет (commit), ошондуктан кайра ишке киргизүү же ката болгондо, туура жерден окууну уланта алат. Commit автоматтык (auto-commit) же кол менен болушу мүмкүн.
Go үчүн Kafka кардарларында (мисалы, sarama), offset адатта, Kafka өзү башкарган __consumer_offsets атайын темада сакталат. Бул бир топ керектүүчүлөрдүн топтомуна окууну координациялоого жана ар бир билдирүүнү так бир жолу иштетүүгө мүмкүндүк берет.
Кол менен offsetти бекитүүнүн мисалы Goда sarama колдонуу менен:
partitionConsumer, _ := consumer.ConsumePartition(topic, partition, sarama.OffsetNewest)
for msg := range partitionConsumer.Messages() {
// билдирүүнү иштетүү
fmt.Println(string(msg.Value))
// offsetти бекитүү
consumer.MarkOffset(msg, "")
}
Ошентип, керектүүчүнүн жайгашкан жери — бул акыркы бекитилген offset, ал Kafkaда сакталат жана туура жерден окууну улантууга мүмкүндүк берет.