web-dev-qa-db-ja.com

Kafka / Google CloudPlatform上のAWSKinesisStreamに相当

多くのリーダーがこのバッファーを個別に消費している間(write-once-read-many/WORM)、常にバッファーに追加するアプリを構築しています。最初はApacheKafkaを使用することを考えましたが、サービスとしてのオプションを好むため、AWS Kinesis Streams + KCLの調査を開始し、これらを使用してこのタスクを実行できるようです。

基本的に、2つの機能が必要です。順序付け(イベントはすべてのリーダーが同じ順序で読み取る必要があります)と、リーダーが消費を開始するバッファー内のオフセットを選択する機能です。

現在、Google CloudPlatformも評価しています。ドキュメントを読んでいると、Google Pub/SubがAWSKinesis Streamと同等のものとして提案されているようですが、より詳細なレベルでは、これらの製品は大きく異なっているようです。

  • Kinesisはシャード内での注文を保証しますが、Pub/Subでの注文はベストエフォートベースです。
  • Kinesisには、リーダーが使用できるすべてのバッファー(最大7日間に制限)があり、オフセットを使用して開始読み取り位置を選択できますが、PubSubでは、サブスクリプション後のメッセージのみを使用できます。

私が正しく理解した場合、PubSubはKinesisの同等物とは見なされません。おそらくGoogleDataflowと一緒に使用した場合はどうでしょうか。私はまだその方法がわからないことを告白しなければなりません。

では、PubSubはKinesisの代わりになりますか?そうでない場合、私の要件を満たすGoogle Cloud製品はありますか?

ありがとう!

14
Renan

かなり複雑な解決策ですが、それは役立つかもしれません:

  • Pub/subを使用してイベントを単一のトピックにプッシュします。この時点で、それらは順序付けられていません。
  • pub/subトピックから読み取るクラウドデータフローストリーミングパイプラインを作成します。クラウドbigqueryへのストリーミング書き込みを実行し、各テーブルエントリにタイムスタンプを追加します。
  • 読者にbqテーブルに対してクエリを実行させ、タイムスタンプ順に並べて一貫した順序にします。 ROW_NUMBERをオフセットとして使用できます。

お役に立てば幸いです。

5
HJED