簡體   English   中英

如何在grpc中進行有效負載壓縮?

[英]How to do payload compression in grpc?

我正在開發一個基於grpc的應用程序,其中請求數據可能高達500KB,響應可能更大,所以我想壓縮數據。 我很難在grpc中找到有關如何操作的文檔/示例。 clientContext中的set_compression_algorithm有什么作用? 我是否必須在服務器端設置一些東西?

或者我應該忘記在grpc上壓縮,並自己壓縮/解壓縮進/出protobuf消息?

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_algorithmgrpc::ServerContext::set_compression_level 建議使用后者,因為它根據客戶端保證支持的請求壓縮級別選擇最佳算法。

接下來的幾天我會把你好世界風格的例子放在一起。 我已經創建了一個跟蹤它的問題: https//github.com/grpc/grpc/issues/6297隨意ping那里。 我也正在實現一些低級別的日志記錄,以顯示一些壓縮統計信息,因為你們能夠斷言壓縮實際上正在工作(否則一切都是完全透明的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM