Entspricht Kafka / AWS Kinesis Stream auf der Google Cloud Platform

9

Ich baue eine App, die ständig an einen Puffer angehängt wird, während viele Leser unabhängig 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.

Im Grunde brauche ich zwei Funktionen: Ordnung (die Ereignisse müssen von allen Lesern in der gleichen Reihenfolge gelesen werden) und die Möglichkeit, den Offset im Puffer zu wählen, von wo aus der Leser beginnt, weiter zu verbrauchen.

Jetzt bewerte ich auch Google Cloud Platform. Während ich die Dokumentation lese, scheint es, dass Google Pub / Sub als Äquivalent zu AWS Kinesis Stream vorgeschlagen wird, aber auf einer detaillierteren Ebene scheinen diese Produkte sehr unterschiedlich zu sein:

  • Kinesis garantiert die Bestellung innerhalb eines Shards, während die Pub / Sub-Bestellung auf Best-Effort-Basis erfolgt;
  • Kinesis hat den ganzen Puffer (auf maximal 7 Tage begrenzt), der Lesern zur Verfügung steht, die einen Offset verwenden können, um die Startleseposition auszuwählen, während in PubSub nur die Nachrichten nach dem Abonnement verfügbar sind.

Wenn ich es richtig verstanden habe, kann PubSub nicht als 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!

    
Renan 11.09.2017, 20:29
quelle

1 Antwort

3

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

  • push Ihre Ereignisse mit Pub / Sub zu einem einzigen Thema. An diesem Punkt werden sie nicht bestellt.
  • Erstellen Sie eine Cloud-Datenfluss-Streaming-Pipeline, die aus dem Pub / Sub-Thema liest. Wenn es Streaming-Schreibvorgänge in Cloud-BigQuery durchführt, fügen Sie jedem Tabelleneintrag einen Zeitstempel hinzu.
  • haben Sie Leser Abfragen in der Tabelle bq, Reihenfolge nach Zeitstempel, um eine konsistente Reihenfolge zu haben. Sie können ROW_NUMBER als Offset verwenden.

Ich hoffe, das hilft.

    
HJED 19.09.2017 02:06
quelle