Sobes.tech
Junior — Middle

Jak je implementována skupina spotřebitelů v Apache Kafka?

sobes.tech AI

Odpověď od AI

V Apache Kafka je skupina spotřebitelů implementována jako soubor spotřebitelů, kteří společně čtou data z témat a rozdělují mezi sebou partitiony. Každý spotřebitel ve skupině obdrží unikátní sadu partitionů, což zajišťuje paralelní zpracování zpráv bez duplicit.

Při použití Go (Golang) s knihovnami sarama nebo confluent-kafka-go lze vytvořit skupinu spotřebitelů zadáním stejného group.id. Kafka automaticky rozdělí partitiony mezi členy skupiny a bude sledovat offsety.

Příklad s sarama:

config := sarama.NewConfig()
config.Version = sarama.V2_1_0_0

consumerGroup, err := sarama.NewConsumerGroup([]string{"localhost:9092"}, "my-group", config)
if err != nil {
    panic(err)
}

topics := []string{"my-topic"}

// Implementace rozhraní ConsumerGroupHandler
handler := &MyConsumerGroupHandler{}

for {
    err := consumerGroup.Consume(ctx, topics, handler)
    if err != nil {
        log.Fatal(err)
    }
}

Tímto způsobem skupina spotřebitelů umožňuje škálovat zpracování zpráv a zajišťuje vyvážení zátěže mezi instancemi.