Pub/Sub または Pub/Sub Lite の選択

Pub/Sub と Pub/Sub Lite は、水平スケーリングが可能なマネージド メッセージング サービスです。これらのサービスは大容量を処理でき、大容量ストレージの要件をサポートできます。ほとんどのアプリケーション統合および分析のユースケースでは、Pub/Sub がデフォルトのソリューションになります。これは機能が豊富でフルマネージドです。Pub/Sub Lite は、メッセージング スループットがより安定し、ワークロードがパーティション ベースのシステムから恩恵を受けることができ、コストが大きな懸念事項であるアプリケーションに適しています。

Pub/Sub には、さまざまな機能(メッセージごとの並列処理、グローバル ルーティング、リソース容量の自動スケーリング)があります。メッセージ レプリケーションの観点から、Pub/Sub は同期レプリケーションを保証します。

運用上のワークロード、グローバルな可用性、費用効果の機能をトレードオフする Pub/Sub Lite はパーティション ベースのソリューション。Pub/Sub Lite では、リソース容量を手動で予約して管理する必要があります。Pub/Sub Lite では、ゾーンまたはリージョンの Lite トピックを選択できます。リージョン Lite トピックでは、Pub/Sub トピックと同じ可用性 SLA が提供されます。

メッセージ レプリケーションの観点から 2 つのサービスの信頼性の違いに注意してください。Pub/Sub は同期データ レプリケーションをサポートし、3 つのゾーンを使用します。リージョン Lite トピックでは、データはセカンダリ ゾーンに複製されます。ゾーン Lite トピックは、1 つのゾーンでのみデータを複製します。

ビジネス要件チェックリスト

適切な Pub/Sub メッセージング サービスを選択するには、次のことを確認してください。

  • 信頼性、最小限の運用コスト、開発の容易さが最優先事項ですか?Pub/Sub を使用する

  • トピックの容量管理に関して追加の運用上のオーバーヘッドを発生させますか?ゾーンサービスに固有の可用性のリスクに対応でき、低コストが必要ですか?ゾーン Lite トピックを使用する

  • ゾーン障害に対する保護が必要ですか?トピックの容量管理に関して運用上のオーバーヘッドを発生させ、スループットあたりの費用を最小に抑える必要がありますか。 リージョン Lite トピックを使用します。

Pub/Sub と Pub/Sub Lite の費用の違いについて詳しくは、料金ページをご覧ください。

機能比較表

機能 Pub/Sub Pub/Sub Lite
アクセスの透明性 はい いいえ
容量 自動プロビジョニング済み 使用前にプロビジョニング
クライアント ライブラリの言語 Java、Python、Go、Node.js、C++、C#、PHP、Ruby、SAP、ABAP Java、Python、Go
プロジェクト間のサブスクリプション はい いいえ
顧客管理の暗号鍵 はい いいえ
デッドレター トピック はい いいえ
1 回限りの配信 はい いいえ
統合
メッセージのフィルタリング はい(メッセージ属性について) いいえ
メッセージ レプリケーション はい いいえ
メッセージ ルーティング グローバル ゾーンまたはリージョン
メッセージ スキーマ検証 はい いいえ
シングル リージョン内のマルチゾーン いいえ シングル リージョン内のシングルゾーンまたはデュアルゾーン
順序付けられた配信 キーごとの順序指定 パーティションごとの順序指定
メッセージの確認応答トラッキング メッセージごと パーティションごとのカーソル
料金 従量課金制 プロビジョニングした容量に対しての支払い
REST エンドポイント はい いいえ
リソースの名前空間 グローバル ゾーンまたはリージョン
保持期間 最大 31 日 無制限
Service エンドポイント グローバルとリージョナル リージョン
ストレージ 無制限 無制限
サブスクリプション

データ レプリケーション

Pub/Sub トピックでは、リージョン内の 3 つのゾーンにデータが複製されます。 Pub/Sub データ レプリケーションの詳細については、トピック内のデータ レプリケーションをご覧ください。

リージョン Pub/Sub Lite トピックでは、リージョン内の 2 つのゾーンにデータが複製されます。ゾーンの Pub/Sub Lite トピックでは、リージョン内の単一のゾーンにデータが保存されます。Pub/Sub Lite データ レプリケーションの詳細については、Lite トピックのデータ レプリケーションをご覧ください。

メッセージ ルーティング

Pub/Sub と Pub/Sub Lite は、Google Cloud の外部でも、すべてのリージョンからパブリッシュとサブスクライブを行えます。

Pub/Sub はメッセージをグローバルにルーティングします。どのリージョンでホストされているアプリケーションも、単一のトピックにメッセージをパブリッシュできます。メッセージは、組織のポリシーで許可されている最も近いリージョンで処理され、ソースとは無関係にサブスクライバーに転送されます。

Pub/Sub Lite は、リージョン内またはゾーン内でメッセージを転送します。サブスクライバーは、トピックが配置されているリージョンのサービス インスタンスに接続する必要があります。そのため、パブリッシャーとサブスクライバーは、通信のために同じリージョンへのネットワーク接続を維持する必要があります。パブリッシャーは、どこからでもトピックにデータをパブリッシュできますが、リモート リージョンへの接続が必要になり、ネットワーク レイテンシが増加することがあります。異なるロケーションのトピックにパブリッシュされた集計データを必要とするサブスクライバーは、メッセージを読み取るために、関連するすべてのローカル サービス インスタンスに接続する必要があります。

リソースの名前空間

Pub/Sub トピックとサブスクリプションはグローバル リソースです。Pub/Sub サービスは、トピック ストレージ ポリシーで許可されている任意のリージョンにメッセージを保存できます。さらに、トピックとそのトピックへのサブスクリプションを異なるプロジェクトに保存できるため、きめ細かな請求とアクセス制御が可能になります。最終的に、サブスクライバーは、Pub/Sub への接続に使用しているサービス エンドポイントや、データのパブリッシャーが使用したサービス エンドポイントに関係なく、同じデータを取得します。

ゾーン Lite トピックとサブスクリプションはゾーンリソースです。これらのリソースは同じ Cloud プロジェクトとゾーンに存在する必要があります。

リージョン Lite トピックとサブスクリプションは、リージョン リソースです。 これらのリソースは同じ Cloud プロジェクトとリージョンに存在する必要があります。

Pub/Sub Lite がサポートするリージョンとゾーンの一覧については、Pub/Sub Lite のロケーションをご覧ください。

容量管理

Pub/Sub は自動スケーリングを行います。メッセージのパブリッシュの容量は自動的にプロビジョニングされるため、プロジェクトに対して構成した割り当てまで、任意のレートでメッセージを送受信できます。

Pub/Sub Lite は手動でプロビジョニングされます。Lite トピックごとにパーティション数を構成する必要があります。また、ストレージとスループットの容量をプロビジョニングする必要があります。スループット容量は、Lite 予約を使用してプロビジョニングできます。

配信モード

Pub/Sub は複数のメッセージ配信モードをサポートしています。これらには、Pull(従来のポーリング)、Push(HTTPS POST)、StreamingPull(最小のレイテンシと最高の効率性のための双方向 RPC)、HTTP REST と gRPC の pull が含まれています。

Pub/Sub Lite は、gRPC pull メッセージ配信のストリーミングのみをサポートしています。メッセージをリクエストするには、サブスクライバーは、各パーティションとの双方向ストリーミング接続を確立します。

並列処理

Pub/Sub はメッセージごとの並列処理を使用します。これにより、1 つのサブスクリプションで 1 つまたは数千のクライアントから任意の数のメッセージを同時処理できます。

Pub/Sub Lite は、パーティションベースの並列処理を使用します。これにより、クライアントは単一のクライアント インスタンスで各データ パーティションを直線的に処理します。 これにより、クライアント インスタンスの最大数がパーティションの最大数に制限されます。

ストリーミング パイプライン

Pub/Sub と Pub/Sub Lite はどちらも、サーバーレス ストリーム処理とデータ統合のために Dataflow と統合されています。Pub/Sub を使用すると、Dataflow で柔軟なスケーリングが可能になり、Dataflow SQL がサポートされます。

Dataflow と Pub/Sub または Pub/Sub Lite の使用を開始するには、次のチュートリアルを試してください。