Ինչպե՞ս է Kafka-ի սպառողը պահպանում իր դիրքը տվյալների հոսքում:
sobes.tech AI
Պատասխան AI-ից
Apache Kafka-ում սպառողը պահպանում է իր դիրքը տվյալների հոսքում՝ օգտագործելով տեղաշարժեր (offsets): Offset-ը՝ հաղորդագրության հերթական համարը թեմայի բաժանման մեջ:
Սպառողը ժամանակ առ ժամանակ հաստատում է (commit) ներկայիս offset-ը, որպեսզի վերագործարկման կամ սխալի դեպքում կարողանա շարունակել ընթերցումը ճիշտ տեղից: Commit-ը կարող է լինել ավտոմատ (auto-commit) կամ ձեռքով:
Go-կլիենտների Kafka-ում (օրինակ, sarama), offset-ը սովորաբար պահվում է հատուկ թեմայում __consumer_offsets, որը կառավարում է Kafka-ն ինքնը։ Սա թույլ է տալիս մի քանի սպառողների խմբում համակարգել ընթերցումը և ապահովել, որ յուրաքանչյուր հաղորդագրություն ճիշտ մեկ անգամ մշակվի:
Օրինակ՝ ձեռքով offset-ի commit-ի օրինակ Go-ում՝ sarama օգտագործելով:
partitionConsumer, _ := consumer.ConsumePartition(topic, partition, sarama.OffsetNewest)
for msg := range partitionConsumer.Messages() {
// հաղորդագրության մշակումը
fmt.Println(string(msg.Value))
// offset-ի commit
consumer.MarkOffset(msg, "")
}
Այսպիսով, սպառողի դիրքը հոսքում՝ դա վերջին հաստատված offset-ն է, որը պահվում է Kafka-ում և թույլ է տալիս շարունակել ընթերցումը ճիշտ տեղից։