2016-02-02 102 views
12

Il caso d'uso è questo: Ho diverse applicazioni java in esecuzione che devono interagire con diversi (ognuno ha un target specifico) indici elasticsearch. Ad esempio un'applicazione A utilizza gli indici A, B, C di ElasticSearch per interrogare e aggiornare. L'applicazione B utilizza gli indici A, C, D (per esempio).Fluentd vs Kafka

È necessaria un'interfaccia comune in grado di gestire tutti questi flussi di dati. Attualmente sto valutando Kafka e fluentd per questo scopo. Qualcuno può spiegare quale sarà più adatto per questa situazione. Ho esaminato le caratteristiche sia di Kafka che di Fluentd e non capisco davvero la differenza che farebbe qui. Grazie mille.

risposta

29

kafka fornisce la messaggistica di pubblicazione/sottoscrizione come un registro di commit distribuito. Solitamente si installa kafka su ogni host in cui è necessario produrre alcuni dati da inoltrare da qualche altra parte e tutti questi host formeranno insieme un cluster. L'aspetto positivo è che, se per qualche motivo la connettività di rete diventa instabile o diminuisce, l'applicazione può continuare a produrre dati/log e non andranno persi. Mentre se l'applicazione invia direttamente i registri a qualche host di registrazione centralizzato remoto, potresti perdere alcuni registri durante il periodo di interruzione della rete.

fluentd è un centralizzato collettore di log che viene comunemente installato su un host (o più se è necessario il ridimensionamento orizzontale). Si collega alle origini dati remote, applica il filtro e invia i dati di registro unificati ai sink di dati remoti.

Dalla documentazione fluentd, è possibile vedere che fluentd può consume data from kafka e produce data towards kafka pure. Questo da solo dovrebbe suggerire che fluentd e kafka si trovano su livelli diversi poiché il primo usa quest'ultimo.

Sarebbe più logico per compare fluentd and logstash effettivamente. Per quanto riguarda fluentd, kafka è solo un'altra fonte di dati e/o data sink, ma sono del tutto diverse bestie.

Se si desidera il meglio di entrambi i mondi, utilizzare kafka come input/output di pipe di dati da/verso le proprie app e fluentd (o logstash) come sistema di registrazione centralizzato leggendo da tali argomenti di kafka.

Se vuoi leggere di più sull'argomento, puoi leggere molto bene il modo in cui lo fluentd and kafka complement each other, leggi che non sono in competizione l'uno con l'altro.

+4

Signore, sei una leggenda :) Grazie mille. –

+2

Grazie, sono sempre felice di aiutare;) – Val

+1

Per il beneficio di tutti, la persona che ha messo a downvot la domanda e la risposta può fornire qualche commento sul motivo per cui l'ha fatto. Per favore chiariscici ;-) – Val