Sono un nuovo utente di Kafka e ci gioco da circa 2-3 settimane. Credo che al momento capisco bene come funziona Kafka per la maggior parte, ma dopo aver tentato di giocare e progettare il mio consumatore Kafka (questo è oscuro ma sto seguendo le linee guida per il nuovo KafkaConsumer che si suppone essere disponibile per v 0.9, che è disponibile sul repository "trunk" atm) Ho riscontrato problemi di latenza da un argomento se ho più utenti con lo stesso groupID.Che cosa è esattamente Kafka Rebalancing?
In questa configurazione, la mia console registra costantemente i problemi relativi a un "trigger di ribilanciamento". I riequilibri si verificano quando aggiungo nuovi consumatori a un gruppo di consumatori e vengono attivati per determinare quale istanza del consumatore nello stesso groupID otterrà quali partizioni o quali riequilibri vengono utilizzati per qualcos'altro interamente?
Ho anche imbattuto in questo passaggio da https://cwiki.apache.org/confluence/display/KAFKA/Kafka+0.9+Consumer+Rewrite+Design e io proprio non riesco a capirlo, quindi se qualcuno potesse aiutarmi a capirci qualcosa che sarebbe molto apprezzato:
Riequilibrio è il processo in cui un gruppo di istanze di consumatori (appartenenti allo stesso gruppo) coordinano per possedere un insieme di partizioni degli argomenti a cui il gruppo è iscritto a vicenda, escluso a vicenda . Alla fine di un'operazione di ribilanciamento riuscita per un gruppo di consumatori, ogni partizione per tutti gli argomenti sottoscritti sarà di proprietà di un'unica istanza del consumatore all'interno del gruppo. Il modo di riequilibrare funziona come segue. Ogni broker viene eletto come coordinatore per un sottoinsieme dei gruppi di consumatori . Il coordinatore del coordinatore per un gruppo è responsabile per l'orchestrazione di un'operazione di ribilanciamento sull'appartenenza al gruppo di consumatori modifiche o modifiche alle partizioni per gli argomenti sottoscritti. È anche responsabile della comunicazione della configurazione della proprietà di partizione risultante a tutti gli utenti del gruppo sottoposto a un'operazione di ribilanciamento .
George, questo è stato molto utile, grazie! Come follow up: recentemente stavo sperimentando un argomento con una sola partizione. Ho scritto su questo argomento e ne ho consumato da un consumatore con un gruppo. Successivamente, ho tentato di utilizzare nuovamente questo argomento aggiungendo che un secondo consumatore appartiene allo stesso gruppo del primo - questo innesca un ribilanciamento (nel mio caso) che mi ha causato a volte tra 5-10 secondi di latenza - perché? Zookeeper non sta solo riequilibrando una partizione tra due istanze di consumo nello stesso gruppo che finisce per essere un guardiano dello zoo dando solo un'istanza alla partizione? –
Ciao Jeff, è stato un piacere! Penso che questo problema potrebbe accadere perché una partizione argomento è l'unità più piccola che distribuisce i messaggi tra i consumatori nello stesso gruppo di consumatori. Quindi, se il numero di consumatori è maggiore del numero totale di partizioni in un cluster Kafka (tra tutti i broker), alcuni consumatori non otterranno mai alcun dato. La soluzione è aumentare il numero di partizioni sul broker. –
Un altro potenziale problema è quando più argomenti vengono consumati nello stesso connettore consumatore. Internamente, c'è una coda in memoria per ogni argomento, che alimenta gli iteratori del consumatore. Esiste un singolo thread fetcher per broker che emette richieste di richiamo multiplo per tutti gli argomenti. Il thread fetcher esegue iterazioni sui dati recuperati e tenta di inserire i dati per argomenti diversi nella propria coda in memoria. Se uno dei consumatori è lento, alla fine la coda in memoria corrispondente sarà piena. Di conseguenza, il thread del fetcher si bloccherà sul mettere i dati in quella coda. –