grpc 压缩与解压
我们知道,http 接口返回的 json 数据是经过压缩的,且使用最多的是 gzip,那么 grpc 呢?
grpc 可以设定压缩和解压的方式,但默认没有压缩。
grpc 压缩与解压
首先需要注册解压和压缩器,这块代码 client 和 server 都需要。
encoding.RegisterCompressor(&compress.GzipCompressor{})grpc gzip 压缩
这里 encoding 是从 google.golang.org/grpc/encoding 导入的,GzipCompressor 如下:
| |
grpc zstd 压缩
相比 gzip,我更推荐使用 zstd
| |
grpc snappy 压缩
zstd 相比之下,速度更快,压缩率也更高,如果要更高的压缩率可以考虑 snappy,但 cpu 也更高,不推荐使用。
| |
grpc client 压缩数据
client 可设定全局的压缩方式,也可以是单次,举个例子:
| |
总结下,client 和 server 都需要注册压缩和解压器,client 还需要设定全局的压缩器或调用时指定压缩器。
相关源码可参考:https://github.com/ijustyce/golang-example/tree/main/grpc
最后更新于