gpt4 book ai didi

go - 如何在 Go 中启用 GRPC 压缩

转载 作者:IT王子 更新时间:2023-10-29 01:41:10 34 4
gpt4 key购买 nike

我看到一些方法 WithCompressionUseCompression 但我不是很清楚它们是如何组合在一起的 - 一个简单的例子说明什么放在客户端和什么放入服务器真的很有帮助。

我的第一次尝试,

conn, err := grpc.Dial(
addr,
grpc.WithTimeout(timeout),
grpc.WithCompressor(grpc.NewGZIPCompressor()),
...

我打电话的时候出现了这个错误:

grpc: Decompressor is not installed for grpc-encoding \"gzip\"

最佳答案

grpc.WithCompressor 根据文档,DialOption 已弃用。

您可以使用 grpc.UseCompressor(gzip.Name) CallOption,它在调用级别运行

var opts []grpc.CallOption
opts = append(callOptions, grpc.UseCompressor(gzip.Name))
opts = append(callOptions, ...)
opts = append(callOptions, ...)

err := grpc.Invoke(mycontext, "/myRpcFuntion", myInput, myOutput, myGrpcConn, opts...)

您不需要调用 RegisterCompressor。 gzip 包导入在 init() 函数中为您完成

func init() {
c := &compressor{}
c.poolCompressor.New = func() interface{} {
return &writer{Writer: gzip.NewWriter(ioutil.Discard), pool: &c.poolCompressor}
}
encoding.RegisterCompressor(c)
}

在服务器端,您需要导入gzip 包以确保gzip 压缩器已注册。

import _ "google.golang.org/grpc/encoding/gzip"

关于go - 如何在 Go 中启用 GRPC 压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48172594/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com