このドキュメントは、ビジネス要件に適した Pub/Sub サブスクリプションタイプを選択するのに役立ちます。
Pub/Sub には、次のタイプのサブスクリプションがあります。
pull サブスクリプションは、サブスクライバー クライアントを使用して Pub/Sub サーバーからメッセージをリクエストします。
push サブスクリプションは、Pub/Sub サーバーを使用してサブスクライバー アプリケーションへのリクエストを開始し、メッセージを配信します。
エクスポート サブスクリプションは、メッセージを Google Cloudリソースに直接エクスポートします。これらのサブスクリプションには次のものが含まれます。
BigQuery サブスクリプションによって、BigQuery テーブルにデータをエクスポートします。
Cloud Storage サブスクリプションによって、Cloud Storage バケットにデータをエクスポートします。
Pub/Sub サブスクリプションの比較表
次の表は、アプリケーションに適した配信メカニズムの選択に関するガイドを示しています。
| Pub/Sub サブスクリプションでサポートされている機能 | ||
|---|---|---|
| ユースケース | pull サブスクリプション |
|
| push サブスクリプション |
|
|
| エクスポート サブスクリプション |
|
|
| エンドポイント | pull サブスクリプション | 承認済みの認証情報を持つインターネット上のデバイスが Pub/Sub API を呼び出すことができます。 |
| push サブスクリプション |
非自己署名証明書を持つ HTTPS サーバーは、パブリックウェブ上でアクセス可能です。 受信エンドポイントは、Pub/Sub サブスクリプションから切り離すことができるので、複数のサブスクリプションからのメッセージが単一のエンドポイントに送信されます。 |
|
| エクスポート サブスクリプション | サブスクリプションは、BigQuery テーブルや Cloud Storage バケットなどの Google Cloud リソースに書き込みます。 | |
| 負荷分散 | pull サブスクリプション | 複数のサブスクライバーが、同じサブスクリプションへの pull 呼び出しを作成できます。各サブスクライバーはメッセージのサブセットを受信します。 |
| push サブスクリプション |
push エンドポイントにはロードバランサを指定できます。 |
|
| エクスポート サブスクリプション |
Pub/Sub サービスは、ロード バランシングを自動的に行います。 |
|
| 構成 | pull サブスクリプション |
構成は不要です。 |
| push サブスクリプション |
|
|
| エクスポート サブスクリプション | サブスクリプションがエクスポートする Google Cloud リソースが存在し、適切な権限で構成されている必要があります。 | |
| フロー制御 | 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 からメッセージをストリーミングするをご覧ください。
次のステップ
各サブスクリプション タイプのワークフローを理解する。