压缩
如何在gRPC中使用数据传输压缩。
压缩
如何在gRPC中使用数据传输压缩。
概述
压缩用于减少对等方之间通信时所占用的带宽,并且可以针对所有语言在调用或消息级别启用或禁用。对于某些语言,还可以在通道级别控制压缩设置。不同的语言还支持不同的压缩算法,包括自定义压缩器。
对等方之间的压缩方法不对称性
gRPC 允许不对称压缩通信,即响应可以与请求以不同方式压缩,或者根本不进行压缩。gRPC 对等方可以选择使用与请求不同的压缩方法进行响应,包括不执行任何压缩,无论通道和 RPC 设置如何(例如,如果压缩会带来很小或负的收益)。
如果客户端消息由服务器不支持的算法压缩,则该消息将在服务器上导致 UNIMPLEMENTED
错误状态。服务器将在响应中包含 grpc-accept-encoding
标头,指定服务器接受的算法。
如果客户端消息使用 grpc-accept-encoding
标头中的某个算法进行压缩,并且服务器返回 UNIMPLEMENTED
错误状态,则错误的起因将与压缩无关。
请注意,对等方可以选择不披露其支持的所有编码。但是,如果它收到一条以未披露但支持的编码压缩的消息,它将在响应的 grpc-accept-encoding
标头中包含该编码。
对于服务器被请求使用客户端不支持的算法(根据从客户端收到的最后一个 grpc-accept-encoding
标头指示)进行压缩的每条消息,它将发送未压缩的消息。
禁用特定压缩
如果用户请求禁用压缩,则下一条消息将以未压缩的形式发送。这对于防止 BEAST 和 CRIME 攻击至关重要。这适用于一元和流式传输两种情况。
语言指南和示例
语言 | 示例 | 文档 |
---|---|---|
C++ | C++ 示例 | C++ 文档 |
Go | Go 示例 | Go 文档 |
Java | Java 示例 | Java 文档 |
Python | Python 示例 | Python 文档 |
其他资源
最后修改于 2023 年 5 月 30 日:保活和压缩用户指南 (#1135) (1a668d2)