Sobes.tech
Senior

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.