Pergunta 23 de 50
O que acontece quando existem mais consumidores que Partitions?
Pergunta
"O que acontece se um Consumer Group tiver mais instâncias de consumer do que Partitions o tópico possui?"
O que o entrevistador quer avaliar
Se você entende o limite real de paralelismo imposto pelas partitions — um erro comum é assumir que adicionar consumers sempre aumenta throughput.
Resposta rápida
Os consumers excedentes ficam ociosos, sem processar nada, porque não sobra nenhuma partition para atribuir a eles. Eles só passam a receber partitions se algum outro consumer do grupo cair ou sair.
Resposta nível Sênior
A regra é uma partition, um consumer, por Consumer Group — nunca duas instâncias do mesmo grupo lendo a mesma partition ao mesmo tempo. Se o tópico tem 4 partitions e o grupo escala para 6 instâncias, 2 delas ficam completamente ociosas, sem receber nenhuma atribuição. Isso surpreende times que escalam consumers via Kubernetes/HPA esperando ganho de throughput proporcional, sem considerar que o número de partitions é o teto real de paralelismo — escalar além desse número não aumenta capacidade de processamento nenhuma, só desperdiça recursos.
Explicação aprofundada
Veja "O que acontece com números diferentes de consumers" no Capítulo 6.
Exemplo financeiro
O antifraude-service roda com 4 partitions no tópico e escala para 6 réplicas no Black Friday esperando
mais throughput — mas 2 réplicas ficam ociosas, porque não há partitions sobrando, e o throughput real não
muda.
"Mais consumers sempre significa mais throughput"
Só até o limite do número de partitions. Depois disso, cada consumer adicional é puro desperdício de recursos computacionais, sem qualquer ganho de processamento.
Pode vir a seguir
Prováveis follow-ups: "e se houver mais Partitions que consumidores?" e "como você dimensionaria o número de réplicas de um consumer no Kubernetes?".
Capítulos relacionados