Pub/Sub を使用して大量のデータをパブリッシュする場合は、gRPC を使用してデータを圧縮することで、パブリッシャーのクライアントがパブリッシュ リクエストを送信する前にネットワーク費用を削減できます。 gRPC 用の Pub/Sub 圧縮では、Gzip アルゴリズムが使用されます。
このドキュメントでは、トピックにパブリッシュされたメッセージの圧縮について説明します。
メッセージの圧縮について
gRPC クライアント側の圧縮機能を使用するための圧縮率は、パブリッシャー クライアントおよび次の要因によって異なります。
データの量。ペイロードのサイズが数百バイトから数キロバイトのデータに増加すると、圧縮率が向上します。パブリッシュ リクエストのバッチ設定により、各パブリッシュ リクエストに含まれるデータの量が決まります。最良の結果を得るために、バッチ設定を gRPC 圧縮と組み合わせて使用することをおすすめします。
データの種類。JSON や XML などのテキストベースのデータは、画像などのバイナリデータよりも圧縮率を高めることが可能です。
パブリッシャー クライアントが Google Cloud 上に存在する場合は、送信バイト数(instance/network/sent_bytes_count
)指標を使用して、パブリッシュ スループットをバイト単位で測定できます。パブリッシャー クライアントが別のアプリケーション上に存在する場合は、測定を行うためにクライアント固有のツールを使用する必要があります。
このセクションのコードサンプルは、Java クライアント ライブラリのコード スニペットを示しており、gRPC 圧縮も含まれています。
準備
パブリッシュ ワークフローを構成する前に、次のタスクを完了していることを確認してください。
- トピックとパブリッシュのワークフローについて学びます。
- トピックを作成します。
必要なロール
メッセージを圧縮するために必要な権限を取得するには、トピックに対する Pub/Sub パブリッシャー (roles/pubsub.publisher
)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
トピックとサブスクリプションを作成または更新するには、追加の権限が必要です。
メッセージを圧縮する
C++
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C++ の設定手順を実施してください。詳細については、Pub/Sub C++ API リファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API リファレンス ドキュメントをご覧ください。
次のステップ
詳細なパブリッシュのオプションを構成する方法については、以下をご覧ください。