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ção —
range,roundrobin,stickyecooperative-stickylado 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.msmantém a sua atribuição e não dispara nenhum rebalanceamento, e o que acontece quando fica em baixo por tempo demais. - Os dois timeouts —
session.timeout.msversusmax.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.