Sobes.tech
Junior — Middle

Как се реализира група потребители в Apache Kafka?

sobes.tech AI

Отговор от AI

В Apache Kafka групата на потребители (consumer group) се реализира като набор от потребители, които съвместно четат данни от теми, разпределяйки партиции между тях. Всеки потребител в групата получава уникален набор от партиции, което осигурява паралелна обработка на съобщенията без дублиране.

При използване на Go (Golang) с библиотеките sarama или confluent-kafka-go, може да създадете група потребители, като посочите същия group.id. Kafka автоматично разпределя партициите между участниците в групата и следи отместванията (offsets).

Пример с 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"}

// Реализация на интерфейса ConsumerGroupHandler
handler := &MyConsumerGroupHandler{}

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

Тази група потребители позволява мащабиране на обработката на съобщения и осигурява баланс на натоварването между инстанциите.