Jak dane przepływały przez Kafka? Jak przychodziły zdarzenia?
sobes.tech AI
Odpowiedź od AI
W Kafka dane są przesyłane w formie zdarzeń (wiadomości), które są publikowane w topikach. Każdy topik jest podzielony na partycje, a zdarzenia wewnątrz partycji są uporządkowane według przesunięć (offset). Producent wysyła wiadomości do określonego topiku, a konsumenci subskrybują topiki i odczytują zdarzenia sekwencyjnie, śledząc przesunięcia.
Zdarzenia docierają do konsumentów za pomocą modelu pull: konsumenci żądają nowych wiadomości, wskazując offset, od którego chcą czytać. Pozwala im to kontrolować, które zdarzenia zostały już przetworzone, i w razie potrzeby ponownie odczytać dane.
Przykład w Go z użyciem biblioteki sarama:
consumer, err := sarama.NewConsumer(brokers, nil)
if err != nil {
panic(err)
}
partitionConsumer, err := consumer.ConsumePartition("topic", 0, sarama.OffsetNewest)
if err != nil {
panic(err)
}
for msg := range partitionConsumer.Messages() {
fmt.Printf("Odebrano wiadomość: %s\n", string(msg.Value))
}
W ten sposób strumień danych przez Kafka jest zorganizowany jako sekwencja wiadomości w topikach, a zdarzenia docierają do konsumentów na żądanie, z kontrolą pozycji odczytu.