Quando un nuovo consumatore/bricolage viene aggiunto o abbassa, Kafka attiva un'operazione di ribilanciamento. Kafka sta riequilibrando un'operazione di blocco. I consumatori di Kafka sono bloccati mentre è in corso un'operazione di ribilanciamento?Come funziona il riequilibrio del consumatore in Kafka?
risposta
Dipende da cosa intendi per "bloccato". Se intendi "le connessioni esistenti sono chiuse quando viene attivato il ribilanciamento", la risposta è sì. L'attuale algoritmo di riequilibrio di Kafka è sfortunatamente imperfetto.
Ecco cosa succede durante il riequilibrio dei consumi.
Supponiamo di avere un argomento con 10 partizioni (0-9) e un utente (chiamiamolo consumer1
) consumandolo. Quando viene visualizzato un secondo consumatore (consumer2
), il task di ribilanciamento si attiva per entrambi (consumer1
ottiene un evento, consumer2
esegue il ribilanciamento iniziale). Ora consumer1
chiude tutte le connessioni esistenti (anche quelle che verranno riaperte presto) e rilascia la proprietà della partizione in Zookeeper per tutte e 10 le partizioni.
Quindi esegue l'algoritmo di assegnazione della partizione e decide quali partizioni devono essere richieste e richiede nuovamente la proprietà della partizione in Zookeeper. Se il reclamo ha avuto esito positivo, consumer1
avvia il recupero delle sue nuove partizioni.
Nel frattempo consumer2
esegue anche l'algoritmo di assegnazione delle partizioni e tenta di rivendicare anche le sue partizioni in Zookeeper. Il reclamo avrà esito positivo solo quando consumer1
rilascia la proprietà su queste partizioni. Quando il reclamo va a buon fine, consumer2
inizia il recupero, o se non riesce a rivendicare partizioni entro una determinata quantità di tentativi, si ottiene un'eccezione rebalance failed after n retries
.
Come si è notato invece di chiudere solo le connessioni e rilasciare la proprietà per le partizioni consumer1
non possiede più, chiude inutilmente TUTTE le sue connessioni e si riavvia con una quantità inferiore di partizioni. La stessa storia con l'aggiunta di partizioni (quando si utilizza un filtro con caratteri jolly e viene visualizzato un nuovo argomento): TUTTE le connessioni vengono chiuse e quindi aperte di nuovo anziché aprirne di nuove.
Quindi spero che questo risponda alla tua domanda: il recupero si interrompe quando il riequilibrio entra in azione.