go - 是否需要通过 gprc 流客户端重新创建新流?

标签 go protocol-buffers grpc http2 grpc-go

有一个 gRPC 流服务器和客户端。客户端通过 gRPC 双向流拨号到服务器。服务器在 kunbeness docker 上运行。

升级一次 kubeness 服务器后,客户端在尝试向流服务器发送请求时总是收到 EOF 错误。我发现 TCP 连接是事件的。为什么?

我是否需要通过在 go-grpc 中调用“NewStream”API 来重新创建新的 strean?

func (cc *ClientConn) NewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error)

如果我在拨号到 gRPC 流服务器时设置了 keep-alive 参数,流会自动重新连接还是只是 TCP 连接?

最佳答案

If I set keep-alive parameters when dialing to gRPC stream server, does the stream would be reconnected automatically or just the TCP connection?



只是TCP连接。

在 io.EOF 之后重新启动并不少见,因此您的客户端将需要重新启动流。

您的重试循环可能希望在重试和最大重试尝试之间添加等待/ sleep 退避,以防止失控的繁忙循环。

关于go - 是否需要通过 gprc 流客户端重新创建新流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58339616/

相关文章:

c# - kubernetes集群中的C#gRPC无法将DNS名称解析为其他服务

protocol-buffers - gRPC 中的异常处理

go - 如何正确使用 sync.pool 进行 slice

go - 在golang中嵌入具有相同属性名称的模型结构

python - 我应该选择哪种数据类型来选择 RTS 游戏中的单位?

CMake 和 FindProtobuf

python - Docker + pubsub + subprocess 挂起且没有错误

golang websocket如何在浏览器意外关闭时得到通知

linux - 在 192.168.65.1 :53: cannot unmarshal DNS message 上查找 google.com

c++ - 仅使用 Qt 及其附带的工具构建 protobufs