9

Ich baue eine App, die ständig an einen Puffer anfügt, während viele Leser unabhängig voneinander von diesem Puffer verbrauchen (einmal schreiben, viele lesen/WORM). Zuerst dachte ich an Apache Kafka, aber da ich eine as-a-service-Option bevorzuge, habe ich angefangen, AWS Kinesis Streams + KCL zu untersuchen und es scheint, dass ich diese Aufgabe mit ihnen erledigen kann.Entspricht Kafka/AWS Kinesis-Stream in der Google Cloud Platform

Grundsätzlich brauche ich 2 Funktionen: Bestellung (die Ereignisse müssen in der gleichen Reihenfolge von allen Lesern gelesen werden) und die Möglichkeit, den Offset im Puffer zu wählen, ab dem der Leser beginnt zu konsumieren.

Jetzt bewerte ich auch Google Cloud Platform. Wie ich in der Dokumentation lese scheint es, dass Google Pub/Sub als Äquivalent zu AWS Kinesis-Stream vorgeschlagen wird, sondern auf einer detaillierteren Ebene scheinen diese Produkte viel anders aus:

  • Kinesis Garantien in einer Scherbe Bestellung, während auf Pub/Sub Bestellung ist auf Best-Effort-Basis;
  • Kinesis hat alle Puffer (begrenzt auf max 7 Tage) für die Leser, die einen Offset verwenden können, um die Start-Leseposition zu wählen, während auf PubSub nur die Nachrichten nach dem Abonnement für Consumption verfügbar sind.

Wenn ich es richtig verstanden habe, kann PubSub nicht als ein Kinesis-Äquivalent angesehen werden. Vielleicht zusammen mit Google Dataflow? Ich muss gestehen, dass ich immer noch nicht sehen kann wie.

Ist PubSub also eine Alternative zu Kinesis? Wenn nicht, würde ein Google Cloud-Produkt meine Anforderungen erfüllen?

Danke!

+0

Das konnte ich auch sehen. PubSub + DataFlow (ungefähr) entspricht nicht Kinesis. Obwohl ich Kinesis ausgiebig verwendet habe, sehe ich solche Dokumentation oder Funktionalität nicht in der Nähe von pubsub und Dataflow. Sie könnten etwas weit sein. – Kannaiyan

+0

Der Beitrag unter https://cloud.google.com/blog/big-data/2016/09/apache-kafka-for-gcp-users-connectors-for-pubsub-dataflow-and-bigquery hat mich nur ein wenig verändert mehr verwirrt. Es bedeutet (subtil), dass PubSub eine Alternative zu Kafka ist, aber ich sehe immer noch nicht die gleichen Fähigkeiten. – Renan

+0

Mit Pub/Sub müssen Sie die Bestellinformationen in der Nachrichtennutzlast hinzufügen. Dies kann ein Problem mit Ihrer Bewerbung sein oder auch nicht. – gdahlm

Antwort

3

Eine ziemlich gewundene Lösung, aber es könnte helfen:

  • Ihre Veranstaltungen drücken, um ein einziges Thema mit pub/sub. An diesem Punkt werden sie nicht bestellt.
  • Erstellen Sie eine Cloud-Datenfluss-Streaming-Pipeline, die aus dem Pub/Sub-Thema liest. Lassen Sie das Streaming in die Cloud BigQuery schreiben, fügen Sie jedem Tabelleneintrag einen Zeitstempel hinzu.
  • haben Sie Leser Abfragen auf der BQ-Tabelle, Reihenfolge nach Zeitstempel, um eine konsistente Reihenfolge zu haben. Sie können ROW_NUMBER als Offset verwenden.

Hoffe, dass hilft.

+0

Wahrscheinlich funktioniert, aber wie du gesagt hast, ist das eine Menge Arbeit. An diesem Punkt würde ich lieber Kafka auf Computerinstanzen installieren. Aber danke für den Vorschlag. – Renan

+0

@Renan, wenn Sie keinen der [empfohlenen Ansätze zum Bestellen von Nachrichten in Pub/Sub] (https://cloud.google.com/pubsub/docs/subscriber#at-least-once-delivery) implementieren möchten, Ihr Ansatz, [Kafka on Compute Engine] zu hosten (https://pantheon.corp.google.com/launcher/details/bitna-i-launchpad/kafka?project=javatester-1002&organizationId=433637338589), ist in der Tat Ihre beste Wahl.Beachten Sie, dass die Pub/Sub-Techniker intensiv an der Implementierung der Nachrichtenreihenfolge gearbeitet haben. Derzeit gibt es für diese Funktion jedoch keine ETA. – Jordan

+1

@ Jordan Ich kann versuchen, einen der Bestellungsansätze zu implementieren. Aber was ich am meisten vermisse, ist die Fähigkeit, den Puffer von einem bekannten Offset zu lesen (begrenzt durch maximale Verfügbarkeit, die 7 Tage ist, wenn ich mich richtig erinnere). Es ist mein Verständnis, dass ich in PubSub nur Nachrichten empfangen kann, die nach meinem Abonnement veröffentlicht wurden, ich kann keine vorherigen Nachrichten lesen. Ich kann meine Frage aktualisieren, um mehr Hintergrundinformationen zu liefern, wenn Sie meinen, dass dies helfen würde, eine 100% ige Google Cloud-Lösung auszuarbeiten. Vielen Dank! – Renan

Verwandte Themen