Principe

Un consumer group est un ensemble de consommateurs partageant la charge de lecture.

Chaque partition est assignée à un seul consommateur du groupe.

Permet le scaling horizontal de la consommation.

Assignation des partitions

graph TB
    T[Topic T1: 4 partitions]
    T --> P0[Partition 0]
    T --> P1[Partition 1]
    T --> P2[Partition 2]
    T --> P3[Partition 3]
    P0 --> C1[Consumer C1]
    P1 --> C1
    P2 --> C2[Consumer C2]
    P3 --> C2

Consumer group G1 avec 2 consommateurs et 4 partitions.

C1 lit P0 et P1, C2 lit P2 et P3.

Cas d’usage

Un seul consommateur : lit toutes les partitions.

graph TB
    T[Topic: 4 partitions] --> C1[Consumer C1]

Quatre consommateurs : un par partition.

graph LR
    P0[P0] --> C1[C1]
    P1[P1] --> C2[C2]
    P2[P2] --> C3[C3]
    P3[P3] --> C4[C4]

Plus de consommateurs que de partitions : certains inactifs.

graph LR
    P0[P0] --> C1[C1]
    P1[P1] --> C2[C2]
    P2[P2] --> C3[C3]
    P3[P3] --> C4[C4]
    C5[C5 - Idle]

Scaling de la consommation

Pour augmenter le débit de consommation :

Ajouter des consommateurs au groupe.

Limité par le nombre de partitions.

Si opérations coûteuses (écriture BD), paralléliser avec plusieurs consommateurs.

Groupes indépendants

Différents consumer groups peuvent lire le même topic indépendamment :

graph TB
    T[Topic] --> G1[Group 1]
    T --> G2[Group 2]
    G1 --> C1[Consumer]
    G2 --> C2[Consumer]
    G2 --> C3[Consumer]

Group 1 : un consommateur pour analytics.

Group 2 : deux consommateurs pour real-time processing.