2016-04-06 35 views
5

Qual è la strada migliore per creare argomenti in kafka?Come creare argomenti in apache kafka?

  • Quante repliche/partizioni da definire quando creiamo gli argomenti?

Nella nuova API di produzione, quando provo a pubblicare un messaggio su un argomento non esistente, la prima volta non riesce e quindi viene pubblicato correttamente.

  • Mi piacerebbe sapere, le relazioni tra replica, partizioni e il numero di nodi del cluster.
  • Abbiamo bisogno di creare un argomento prima di pubblicare messaggi?

risposta

11

Quando si avvia il broker kafka è possibile definire un insieme di proprietà nel file conf/server.properties. Questo file è solo un file di proprietà valore chiave. Una delle proprietà è auto.create.topics.enable se è impostata su true (per impostazione predefinita) kafka creerà automaticamente l'argomento quando si invia un messaggio a un argomento non esistente. Tutte le opzioni di configurazione che puoi trovare here Imho La regola semplice per la creazione di argomenti è la seguente: il numero di repliche deve essere non inferiore al numero di nodi che hai. Il numero di argomenti deve essere il moltiplicatore del numero di nodi nel cluster per esempio: Hai 9 cluster di nodi il tuo argomento deve avere 9 partizioni e 9 repliche o 18 partizioni e 9 repliche o 36 partizioni e 9 repliche e così via

+0

Grazie per informazioni brevi e pulite – Ratha

+2

Non chiedere al numero di repliche di essere uguale al numero di nodi rende il cluster estremamente fragile? Un nodo si interrompe e improvvisamente il tuo cluster non risponde più perché deve attendere il giusto numero di repliche. –

+0

@SethPaulson Non c'è attesa perché un nodo scende. In tale scenario, il leader lo rimuoverà dall'elenco delle repliche "in-sync" e tenterà di ripristinarlo qualora dovesse tornare. Vedi [Kafka Documentation on Replication] (https://kafka.apache.org/documentation/#replication) per una descrizione dettagliata. –

14

numero di partizione determina la parallelismo del tema da una partizione può essere consumato solo da un consumatore in un gruppo di consumatori. Ad esempio, se si hanno solo 10 partizioni per un argomento e 20 consumatori in un gruppo di consumatori, 10 consumatori sono inattivi e non ricevono alcun messaggio. Il numero dipende molto dalla tua applicazione, ma 1-1000 sono tutti ragionevoli.

Il numero di replica è determinato dal requisito di durata. Per un argomento con fattore di replica N, Kafka può tollerare fino a errori del server N-1 senza perdere alcun messaggio impegnato nel log. 3 repliche sono configurazioni comuni. Naturalmente, il numero della replica deve essere più piccolo o uguale al numero del tuo broker.

auto.create.topics.enable controlli di proprietà quando Kafka abilita la creazione automatica di argomento sul server. Se questo è impostato su true, quando le applicazioni tentano di produrre, consumare o recuperare i metadati per un argomento inesistente, Kafka creerà automaticamente l'argomento con il fattore di replica e il numero di partizioni predefiniti. Consiglierei di spegnerlo in produzione e creare argomenti in anticipo.

+0

Grazie per tale spiegazione dettagliata ... Davvero confuso con le repliche e le partizioni – Ratha

+0

Non sono sicuro se otterrete l'argomento creato sul consumo, o recuperare, secondo questo thread - https: // www. mail-archive.com/[email protected]/msg09182.html - "un argomento può essere auto creato dal produttore, ma non dal consumatore". Gli ultimi documenti su http://kafka.apache.org/documentation.html#brokerconfigs dicono semplicemente "Abilita la creazione automatica dell'argomento sul server", senza dire quali azioni potrebbero causare la creazione. – Brian

1

impostare la proprietà auto.create.topics.enable=true nel file server.properties, se si dispone di più mediatori fanno di te stesso per tutti i file server di .properties * e riavviare il Kafka-server. Ma assicuratevi di impostare le partizioni per un numero appropriato nel server * .proprietà num.partitions=int, altrimenti si verificherà un problema di prestazioni se si aumentano le partizioni in un secondo momento.

1

Il livello di base del parallelismo in Kafka è la partizione. Sia dal lato produttore che dal lato broker, le scritture su diverse partizioni possono essere eseguite completamente in parallelo.

cose da tenere a mente

  • più partizioni richiede più Apri file Maniglie
  • più partizioni può aumentare Indisponibilità
  • più partizioni possono aumentare end-to-end Latenza

Come una regola empirica, probabilmente è una buona idea limitare il numero di partizioni per broker a 100 x b x r, dove b è il numero di broker e r è il fattore di replica.

Ad esempio: Se si dispone di 9 broker/nodi del cluster tuo argomento potrebbe avere

  • 1800 partizioni con 3 repliche, o
  • 900 partizioni e 2 repliche

MODIFICA: Vedere l'articolo How to choose the number of topics/partitions in a Kafka cluster? per ulteriori dettagli (la risposta è stata presa dal re)

+0

Grazie per la risposta. Si prega di citare fonti esterne quando la risposta è basata su uno come cortesia all'autore originale. Ho aggiunto il link per te. –