Kafka oder SNS oder etwas anderes?
Sorry, wenn es eine newbie-Frage. Aber ich versuche zu verstehen, was sollte ich verwenden. Soweit ich das verstanden habe Kafka :
Apache Kafka ist ein verteiltes publish-subscribe-messaging-system.
Und SNS ist auch ein pub/sub-system.
Mein Ziel ist es, mit einige Warteschlange, messaging-system AWS mit Applikation, verteilt auf paar Servern. Durch die Art und Weise (die wichtigste Sprache ist Python). Und weil es auf amazon, mein Erster Gedanke war der Einsatz von SNS und SQS. Aber als ich sah eine Menge von Menschen, die mit Kafka auf der AWS-Plattform. Was sind die Vorteile, die eine über die andere?
InformationsquelleAutor der Frage Vor | 2013-05-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Use-cases für Kafka und Amazon SQS/Amazon SNS sind ganz anders.
Kafka, wie du geschrieben hast, ist ein verteiltes publish-subscribe-system. Es ist ausgelegt für einen sehr hohen Durchsatz, Verarbeitung Tausende von Nachrichten pro Sekunde. Natürlich müssen Sie setup und cluster für sich selbst. Es unterstützt mehrere Leser, die möglicherweise "catch up" mit dem Strom von Nachrichten an jedem beliebigen Punkt (gut, solange die Nachrichten noch auf der Festplatte). Man kann es sowohl als Warteschlange (consumer-Gruppen) und als Thema.
Ein wichtiges Merkmal ist, dass Sie nicht selektiv anerkennen Nachrichten als "bearbeitet"; die einzige option ist, die Anerkennung aller Nachrichten bis zu einem bestimmten offset.
SQS/SNS auf der anderen Seite:
Also insgesamt würde ich sagen SQS/SNS eignen sich gut für einfachere Aufgaben und Arbeitslasten mit einer geringeren Anzahl von Nachrichten.
InformationsquelleAutor der Antwort adamw
Dies ist ein klassischer trade-off:
AWS-tools (SQS, SNS)
Diese wird es einfacher für Sie, um das setup und die Integration mit dem rest Ihrer Architektur, vor allem, wenn die meisten es schon auf AWS ausgeführt werden. Es wird wahrscheinlich auch billiger sein auf den ersten, denn Sie haben ein gutes pay as you go-Modell, aber die Kosten werden nicht skaliert, so dass Sie zu denken haben.
Apache Kafka
Hier, sind Sie mit einem sehr beliebt (nicht angesagten) verteilt (dies ist wichtig, wenn Sie denken, Sie wird so skaliert, dass eine Menge) PUB/SUB-Modell. Heute, dieses Modell scheint zu sein, viel lieber, da läuft analytics auf die Daten, die über die Rohre ist sehr Häufig, und in der Regel mit einer SOA-Architektur können Sie eine Vielzahl von kleinen Dienstleistungen konsumieren die Nachrichten und dort tun, was, die zimmerreserviereung, ohne das die Daten werden aus der Warteschlange entfernt. Sie erhalten auch eine viel von Konfigurations-Optionen, so dass je nach Anwendungsfall können Sie eine Feinabstimmung vorzunehmen, um Ihre Bedürfnisse. Dies bedeutet mehr Arbeit, aber eine mehr optimierte service-die Straße hinunter.
Zusammenfassung
Dies ist eine klassische trade-off von der Geschwindigkeit der Entwicklung und die Einfachheit der Entwicklung von vs der besten, sehr modular und personalisierbar Lösung, mit mehr Aufwand für die erste Implementierung, aber besser skaliert werden.
Persönliche Beratung
Wenn Sie prototyping-etwas, zugunsten der Geschwindigkeit der Entwicklung, so AWS-tools. Wenn Ihre Anforderungen sind eingefroren und erfordern beträchtliche Größe, auf jeden Fall die Zeit nehmen, um die Verwendung kafka. Auch ich bin ein großer Gläubiger in der mit-open-source-macht-die-Welt-besser, aber das ist nicht das größte argument zu verwenden.
InformationsquelleAutor der Antwort nichochar