Sobes.tech
Назад к вопросам
Senior
9

В чём разница между использованием Consumer Group и без неё в Kafka?

Компании, где спрашивали
Магнит Тех

Ответ от нейросети

sobes.tech AI

В Apache Kafka Consumer Group — это группа потребителей, которые совместно читают данные из топика, распределяя между собой партиции.

Без Consumer Group:

  • Каждый потребитель читает все сообщения из топика независимо.
  • Если несколько потребителей читают из одного топика, каждый получит все сообщения (дублирование).

С Consumer Group:

  • Потребители в группе делят партиции топика между собой, обеспечивая параллельную обработку без дублирования.
  • Если в группе N потребителей и M партиций, то каждая партиция назначается одному потребителю.
  • Позволяет масштабировать обработку и обеспечивает балансировку нагрузки.

Пример на Go с использованием Consumer Group:

import (
    "context"
    "github.com/segmentio/kafka-go"
)

func consumeGroup() {
    r := kafka.NewReader(kafka.ReaderConfig{
        Brokers: []string{"localhost:9092"},
        GroupID: "my-group",
        Topic:   "my-topic",
    })

    for {
        m, err := r.ReadMessage(context.Background())
        if err != nil {
            break
        }
        fmt.Printf("message at offset %d: %s = %s\n", m.Offset, string(m.Key), string(m.Value))
    }
    r.Close()
}

Таким образом, Consumer Group обеспечивает координацию и масштабируемость потребления сообщений в Kafka.