2015-01-07 33 views
7

Vorrei sapere qual è la differenza tra argomento argomento semplice argomento &. Come per la mia comprensione per bilanciare il carico, argomento è stato partizionato, Ogni messaggio avrà offset & consumatore riconoscerà per garantire precedente i messaggi sono stati consumati. Nel caso in cui nessuna delle partizioni & non corrispondesse, il bilanciamento effettuato da kafka lo gestisce in modo efficiente.argomento Kafka vs partizione

Se più argomenti vengono creati, invece, la partizione influisce sull'efficienza operativa.

risposta

16

Dalle kafka documentation

Le partizioni nel registro servire a diversi scopi. Innanzitutto, consentono al registro di scalare oltre una dimensione che si adatta a un singolo server. Ogni partizione individuo deve stare su server che ospitano, ma un argomento può avere molte partizioni in modo che possa gestire una quantità arbitraria di dati

Avere partizioni multiple per un dato argomento permette Kafka distribuirlo all'interno del cluster Kafka . Di conseguenza, la richiesta di gestione dei dati da diverse partizioni può essere suddivisa tra più server nell'intero cluster. Inoltre, ogni partizione può essere replicata su più server per ridurre al minimo la perdita di dati. Sempre dalla pagina doc

Le partizioni del registro sono distribuite sui server nel cluster Kafka con ogni server che gestisce i dati e le richieste di una condivisione delle partizioni. Ogni partizione viene replicata su un numero configurabile di server per la tolleranza agli errori.

Quindi avere un argomento con una singola partizione non consente di utilizzare queste flessibilità. Inoltre, in un ambiente di vita reale è possibile avere diversi argomenti per contenere diverse categorie di messaggi (anche se è anche possibile avere un singolo argomento con più partizioni in cui ciascuna partizione può avere categorie specifiche di messaggi utilizzando il tasto messgae durante la produzione).

Non credo che la creazione di più argomenti al posto delle partizioni avrà un impatto significativo sulla prestazione complessiva. Ma immagina di voler tenere traccia di tutti i tweet realizzati dagli utenti nel tuo sito. È quindi possibile avere un argomento denominato "User_tweet" con più partitons in modo tale che, durante la produzione di messaggi, Kafka possa distribuire i dati su più partizioni e sul consumatore, è sufficiente avere un solo gruppo di consumatori che estrae i dati dallo stesso argomento. Mantenere invece "User_tweet_1", "User_tweet_2", "User_tweet_3" renderà le cose complesse solo mentre produci e consumano i messaggi.

Problemi correlati