サブスクリプション タイプを選択する

このドキュメントは、ビジネス要件に適した Pub/Sub サブスクリプションタイプを選択するのに役立ちます。

準備

Pub/Sub サブスクリプションの比較表

次の表は、アプリケーションに適した配信メカニズムの選択に関するガイドを示しています。

Pub/Sub サブスクリプションでサポートされる機能
使用例 Pull サブスクリプション
  • メッセージが多い場合(1 秒間に GB)。
  • メッセージ処理の効率とスループットが重要な場合。
  • 非自己署名 SSL 証明書を持つパブリック HTTPS エンドポイントを設定できない環境。
push サブスクリプション
  • 同じ webhook で処理する必要がある複数のトピック。
  • App Engine スタンダードおよび Cloud Run 関数のサブスクライバー。
  • Google Cloud の依存関係(認証情報やクライアント ライブラリ)が設定できない環境。
エクスポート サブスクリプション
  • 1 秒あたり数百万件のメッセージまでスケールアップできる大量のメッセージ。
  • メッセージは、追加の処理なしで Google Cloud リソースに直接送信されます。
エンドポイント pull サブスクリプション

承認済みの認証情報を持つインターネット上のデバイスが Pub/Sub API を呼び出すことができます。

push サブスクリプション
  • 非自己署名証明書を持つ HTTPS サーバーは、パブリックウェブ上でアクセス可能です。
  • 受信エンドポイントは、Pub/Sub サブスクリプションから切り離すことができるので、複数のサブスクリプションからのメッセージが単一のエンドポイントに送信されます。
エクスポート サブスクリプション
  • BigQuery サブスクリプションの BigQuery データセットとテーブル。
  • Cloud Storage サブスクリプションの Cloud Storage バケット。
ロード バランシング Pull サブスクリプション
  • 複数のサブスクライバーが、同じ「共有」サブスクリプションへの pull 呼び出しを作成できます。
  • 各サブスクライバーはメッセージのサブセットを受け取ります。
push サブスクリプション

push エンドポイントにはロードバランサを指定できます。

エクスポート サブスクリプション

Pub/Sub サービスは自動的に負荷を分散します。

構成 pull サブスクリプション

構成は不要です。

push サブスクリプション
  • サブスクライバーと同じプロジェクトでは、App Engine アプリへの設定が不要です。
  • Google Cloud コンソールでは、push エンドポイントの確認は必要ありません。
  • エンドポイントには DNS 名を使用して到達可能で、SSL 証明書がインストールされている必要があります。
エクスポート サブスクリプション
  • BigQuery のデータセットとデーブルは、適切な権限で構成された BigQuery サブスクリプション用に存在している必要があります。
  • Cloud Storage バケットは、適切な権限で構成された Cloud Storage サブスクリプション用に存在している必要があります。
フロー制御 pull サブスクリプション

サブスクライバー クライアントは配信レートを制御します。サブスクライバーは確認応答期限を動的に変更し、メッセージ処理期間を必要に応じて長くすることができます。

push サブスクリプション

Pub/Sub サーバーはフロー制御を自動的に実装します。クライアント側でメッセージ フローを処理する必要はありません。 ただし、HTTP エラーを戻すことで、クライアントが現在のメッセージ読み込みを処理できないことを示すこともできます。

エクスポート サブスクリプション

Pub/Sub サーバーは、Google Cloud リソースへのメッセージ書き込みを最適化するためのフロー制御を自動的に実装します。

効率とスループット pull サブスクリプション

バッチでの配信、確認応答、大量の並列消費を可能にすることで、低い CPU と帯域幅で高いスループットを実現します。積極的なポーリングを使用してメッセージ配信時間を最小限に抑える場合には効率的でない場合があります。

push サブスクリプション

リクエストごとに 1 つのメッセージを配信し、未処理メッセージの最大数を制限します。

エクスポート サブスクリプション

スケーラビリティは Pub/Sub サーバーによって動的に処理されます。

エクスポート サブスクリプションを使用する場合

エクスポート サブスクリプションがない場合、メッセージを読み取り、Google Cloud リソースに書き込むには、pull サブスクリプションまたは push サブスクリプションとサブスクライバー(Dataflow など)が必要です。 メッセージの保存前に追加の処理が不要な場合は、Dataflow ジョブを実行するオーバーヘッドは必要ありません。

エクスポート サブスクリプションには次の利点があります。

  • シンプルな導入。コンソール、Google Cloud CLI、クライアント ライブラリ、または Pub/Sub API で、単一のワークフローでエクスポート サブスクリプションを設定できます。

  • 低コスト。Dataflow ジョブを含む同様の Pub/Sub パイプラインの追加費用とレイテンシを削減します。この費用の最適化は、保存前に追加の処理を必要としないメッセージ システムに役立ちます。

  • 最小限のモニタリング。エクスポート サブスクリプションはマルチテナント Pub/Sub サービスの一部であり、個別のモニタリング ジョブを実行する必要はありません。

  • 柔軟性。BigQuery サブスクリプションは、トピックがアタッチされているトピックのスキーマを使用できます。これは、Pub/Sub から BigQuery に書き込むための基本的な Dataflow テンプレートでは使用できません。同様に、Cloud Storage サブスクリプションには、ファイルサイズと経過時間に基づいて構成可能なファイル バッチ処理オプションが用意されています。これは、Pub/Sub から Cloud Storage への書き込み用の基本的な Dataflow テンプレートで構成することはできません。

ただし、データを BigQuery テーブルや Cloud Storage バケットなどの Google Cloud リソースに保存する前にデータ変換が必要な Pub/Sub システムでは、Dataflow パイプラインの使用をおすすめします。

Dataflow を使用して変換で Pub/Sub から BigQuery にデータをストリーミングする方法については、Pub/Sub から BigQuery へのストリーミングをご覧ください。

Dataflow を使用した変換により Pub/Sub から Cloud Storage にデータをストリーミングする方法については、Dataflow を使用して Pub/Sub からメッセージをストリーミングするをご覧ください。

次のステップ

各サブスクリプション タイプのワークフローを理解する。