2016-04-26 21 views
2

私はgrpcベースのアプリケーションで作業しています。要求データは最大500KBで、応答はもっと大きくなる可能性があります。そのため、データを圧縮したいと思います。私はgrpcで文書/例を見つけるのは難しいです。 clientContextのset_compression_algorithmは何をしますか?私はサーバー側で何かをセットアップする必要がありますか?grpcでペイロード圧縮を行うには?

または、私はgrpcでの圧縮を忘れて、protobufメッセージへの/からの圧縮/復元を自分で行う必要がありますか?

+0

どの言語ですか? C++を使用していますか? –

+0

はい、C++。ありがとう。 – vwvwvw

答えて

4

grpc::ClientContext::set_compression_algorithmメソッドは、クライアント呼び出しに使用するアルゴリズム、つまりクライアントからサーバーに送信されるデータを選択します。

    サーバー側では、あなたがすることができますgrpc::ServerBuilder::SetCompressionOptionsを経由して、チャネルの作成時間(つまり、すべてのサーバー呼び出しに使用する、である)(https://github.com/grpc/grpc/blob/master/include/grpc++/server_builder.hを参照)、で圧縮オプションを制御することができます

  1. サーバが想定している圧縮アルゴリズムを選択します。デフォルトでは、すべてのアルゴリズムが有効になっています。
  2. すべてのサーバー応答にデフォルトで使用される圧縮アルゴリズムを選択します(ピアクライアントがサポートしている場合は、応答は非圧縮で送信されます)。

grpc::ServerContext::set_compression_algorithmまたはgrpc::ServerContext::set_compression_levelを使用して、サーバーでの一回限りの通話応答を行うことができます。クライアントがサポートすることが保証されている要求された圧縮レベルに従って最適なアルゴリズムを選択するため、後者が推奨されます。

私は、次の日に世界のスタイルの例をまとめます。私はこれを追跡するための問題を作成しました:https://github.com/grpc/grpc/issues/6297自由にそこにpingを感じてください。いくつかの低レベルのログを実装して、いくつかの圧縮統計情報を表示しています。圧縮が実際に動作していると主張できます(そうでなければすべてが完全に透過的です)。

+0

圧縮統計に関するいくつかのログを追加することは素晴らしいでしょう。これを楽しみにしています。ありがとう! – vwvwvw

+0

は確認したいだけです:ClientContext :: set_compression_algorithmでは、要求データが指定されたアルゴリズムで圧縮されることを意味しますか?サーバー側でdefault_compression_algorithmをGRPC_COMPRESS_GZIPと設定すると、クライアントに対するすべての応答がgzip圧縮されますか? – vwvwvw

+0

余分な圧縮ロギング情報を追加するPRは、https://github.com/grpc/grpc/pull/6305です。これはトレーサです。環境変数GRPC_TRACEに「圧縮」を含むバイナリを起動する必要があります。例えば、 '$ GRPC_TRACE = compression、channel。/ your/binary'は'圧縮 'と'チャネル 'トレーサを有効にして'/your/binary'を実行します。 –

関連する問題