Depois do pacote de produtor, a versão v1.2 do Kafka Simulator volta-se para o lado da leitura e o seu evento mais mal compreendido: o rebalanceamento. Este pacote adiciona 10 novos cenários, levando o programa a 33 de 125.

O que há na v1.2

Um grupo de consumidores é um problema de coordenação vestido com uma API simples. A v1.2 torna essa coordenação visível:

  • Estratégias de atribuiçãorange, roundrobin, sticky e cooperative-sticky lado a lado, para veres quais param o mundo e quais movem apenas as partições necessárias.
  • Associação estática (KIP-345) — por que um membro que reinicia dentro de session.timeout.ms mantém a sua atribuição e não dispara nenhum rebalanceamento, e o que acontece quando fica em baixo por tempo demais.
  • Os dois timeoutssession.timeout.ms versus max.poll.interval.ms: um diz respeito aos heartbeats, o outro a um consumidor que está vivo mas preso no processamento. Falham de formas diferentes, e o simulador mostra ambos.
  • Bloqueio e retoma — um consumidor que para de fazer poll, é expulso e volta a juntar-se — e exatamente quais partições se movem quando isso acontece.

O rebalanceamento é difícil de ensinar porque só faz sentido como sequência: revogar, atribuir, retomar. Diagramas estáticos comprimem essa sequência numa única seta. Aqui podes percorrê-la e ver a propriedade mudar de mãos uma partição de cada vez.

Por que isto importa

A maioria dos incidentes de consumidores em produção são, na verdade, incidentes de rebalanceamento — um deploy que parece uma queda, um max.poll.interval.ms curto demais para um lote lento, um assignor sticky que move silenciosamente mais do que o esperado. Ver o rebalanceamento em movimento, à velocidade que escolheres, é a forma mais rápida de construir a intuição que torna esses incidentes óbvios em retrospetiva.

Abre o simulador, adiciona e mata consumidores, e observa o grupo formar-se de novo.