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

时间:2019-10-11 10:46:21

标签: go protocol-buffers grpc http2 grpc-go

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

一次升级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?

1 个答案:

答案 0 :(得分:0)

  

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

只是TCP连接。

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

您的重试循环可能要在重试和最大重试次数之间添加等待/睡眠退避,以防止繁忙的循环失控。