Prima di tutto, lo spettatore è necessario solo per i consumatori di alto livello. SimpleConsumer
non richiede che lo zookeeper funzioni.
Il motivo principale per cui un utente zookeeper è necessario per un consumatore di livello elevato è tenere traccia degli offset consumati e gestire il bilanciamento del carico.
Ora più in dettaglio.
Per quanto riguarda il tracciamento di offset, immaginate il seguente scenario: si avvia un consumatore, si consumano 100 messaggi e si spegne il consumatore. La prossima volta che avvierai il tuo consumatore, probabilmente vorrai riprendere dal tuo ultimo offset consumato (che è 100), e ciò significa che devi memorizzare l'offset massimo consumato da qualche parte. Ecco dove entra in gioco Zookeeper: memorizza gli offset per ogni gruppo/argomento/partizione. Quindi in questo modo la prossima volta che avvierai il tuo consumatore potrebbe chiedere "hey zookeeper, qual è l'offset da cui dovrei iniziare a consumare?". Kafka si sta attualmente muovendo verso la possibilità di memorizzare offset non solo in zookeeper, ma anche in altri archivi (per ora solo gli archivi zookeeper
e kafka
sono disponibili e non sono sicuro che lo storage kafka
sia completamente implementato).
Per quanto riguarda il bilanciamento del carico, la quantità di messaggi prodotti può essere abbastanza grande per essere gestita da 1 macchina e probabilmente ad un certo punto si vorrà aggiungere potenza di calcolo. Diciamo che hai un argomento con 100 partizioni e per gestire questa quantità di messaggi hai 10 macchine. Ci sono diverse domande che si presentano qui:
- come dovrebbero queste 10 macchine dividere le partizioni tra di loro?
- cosa succede se una delle macchine muore?
- cosa succede se si desidera aggiungere un'altra macchina?
E ancora, ecco dove entra in gioco Zookeeper: tiene traccia di tutti i consumatori nel gruppo e ogni utente di livello elevato è iscritto per le modifiche in questo gruppo. Il punto è che quando un consumatore appare o scompare, il guardiano dello zoo notifica a tutti i consumatori e fa scattare il bilanciamento in modo che divida le partizioni quasi allo stesso modo (ad es. Per bilanciare il carico). In questo modo garantisce se uno dei consumatori muore altri continueranno a elaborare partizioni che erano di proprietà di questo consumatore.
Grazie per la risposta, questo chiarisce, è quello che ho indovinato, ma non ho potuto trovare da nessuna parte. Ho anche appena letto quella versione 0.9, i consumatori non useranno più il guardiano dello zoo, ed è usato solo dai broker per l'elezione dei leader ecc. – Luckl507