2012-08-26 14 views
17

Ich habe eine Anwendung in der Produktion, die mehrere Gigabyte Nachrichten pro Tag verarbeiten muss. Ich mag die Kafka-Architektur und die Performance sehr; es passt perfekt zu meinen Bedürfnissen.Ist Kafka produktionsbereit?

Ich möchte meine Messaging-Schicht irgendwann durch Kafka ersetzen. Ist die Version 0.7.1 für die Produktion in Bezug auf Stabilität und Konsistenz in der Leistung gut genug?

Antwort

13

Es ist definitiv bei mehreren Big Data-Unternehmen bereits im Einsatz, einschließlich LinkedIn, wo es erstellt wurde (und später Open Source), und Tumblr. Just Tumblr selbst verarbeitet viele Gigabytes an Nachrichten pro Tag. Ich bin sicher, LinkedIn ist auch da oben. Sie können eine Liste der Unternehmen sehen derzeit hier bekannt zu verwenden:

https://cwiki.apache.org/confluence/display/KAFKA/Powered+By

, auch sicher sein, auf ihre Mailing-Liste zu abonnieren, es gibt viele Leute, die es aktiv auszuprobieren und es in Produktionsumgebungen verwenden.

Ich bin mir sicher, dass es mit jeder Lautstärke umgehen kann, die Sie werfen können.

2

Ich habe Kafka schon ziemlich lange benutzt. Die Verwendung von nativen Java- und Python-Clients wäre bevorzugt.

Ich hatte viel zu kämpfen, einen richtigen node.js Client zu finden. Ich habe meinen ganzen Code buchstäblich mit verschiedenen Clients neu geschrieben, weil sie viele Bugs hatten. Endlich erledigt mit franz-kafka für node.js.

Abgesehen davon ist die Aufrechterhaltung der Verbraucher Offsets ein bisschen schwierig. Es fehlen einige gute Features wie Exchange, die in AMQP-basierten Apache Qpid oder RabbitMQ

vorhanden sind Da es verteilt ist, unterstützt Offline-Nachrichten und die Leistung ist wirklich beeindruckend. Ich bevorzuge es auch :)

10

Es gibt eine kritische Eigenschaft, die ich denke, Kafka fehlt, bevor es für die Produktion bereit ist.

„Flushing Nachrichten auf Disc, wenn der Hersteller keine Kafka Broker erreichen kann“ Das Problem wurde hier vor langer Zeit abgelegt: https://issues.apache.org/jira/browse/KAFKA-156

Diese Funktion wird die komplette Kafka Ereignis pipline noch robuster macht für einige Anwendungsfälle, wenn der Hersteller immer in der Lage sein muss, Ereignisse zu senden. Zum Beispiel, wenn Sie Seitenaufrufe oder Like-Button-Klicks verfolgen und keine Ereignisse verpassen möchten, selbst wenn alle Kafka-Broker nicht erreichbar sind.

+2

+1 für dieses Ticket Hinweis auf – sandris

+1

FYI: Sieht aus wie diese Funktion in Kafka fixiert wurde gerade: https://issues.apache.org/jira/browse/KAFKA-789 – Dave

+1

Nein, ich glaube, 789 hat geschlossen, da es ein Duplikat von https://issues.apache.org/jira/browse/KAFKA-156 ist. – sandris

3

Ich stimme Dave zu, Kafka ist ein gutes Werkzeug, aber es fehlt einige grundlegende Funktionen, die einige manuell gemacht werden können, aber dann müssen Sie überlegen, was Kafka bietet. einige fehlende Dinge sind:

  • (Wie Dave sagte) Flushing Nachrichten auf der Festplatte, wenn der Hersteller nicht sie
  • Verbraucher Fähigkeit (nicht nur verbraucht) behandelt wurden, welche Nachrichten zu verfolgen, senden und das war nicht für den Fall, von einem Neustart.
  • Überwachung - eine Möglichkeit, den aktuellen Status der Entitäten im System zu erhalten, wie die aktuelle Größe der Warteschlange im Producer oder die Schreib-/Lesetempo bei den Brokern (diese können ausgeführt werden, sind aber nicht Teil des Tools) .