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

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

準備

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

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

Pub/Sub サブスクリプションでサポートされる機能
使用例 Pull サブスクリプション
  • メッセージが多い場合(1 秒間に GB)。
  • メッセージ処理の効率とスループットが重要な場合。
  • 非自己署名 SSL 証明書を持つパブリック HTTPS エンドポイントを設定できない環境。
push サブスクリプション
  • 同じ webhook で処理する必要がある複数のトピック。
  • App Engine スタンダードおよび Cloud Functions のサブスクライバー。
  • Google Cloud の依存関係(認証情報やクライアント ライブラリ)が設定できない環境。
エクスポート サブスクリプション
  • 毎秒数百万回のメッセージまでスケールアップできる大量のメッセージ。
  • メッセージは、追加の処理を行うことなく 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 サブスクリプションでは、ファイルサイズと経過時間に基づいて構成可能なファイル バッチ オプションが提供されます。これは、Dataflow の基本テンプレートで Pub/Sub から Cloud Storage に書き込むために構成することはできません。

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

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

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

次のステップ

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