小编Fin*_*Fin的帖子

与 gRPC 客户端重新连接的正确方法

我有一个 Go gRPC 客户端连接到在 k8s 集群中的不同 pod 中运行的 gRPC 服务器。

它运行良好,可以接收和处理请求。

我现在想知道在 gRPC 服务器 Pod 被回收的情况下如何最好地实现弹性。

据我所知,clientconn.go 代码应该自动处理重新连接,但我就是无法让它工作,我担心我的实现在第一个实例中是不正确的。

从 main 调用代码:

go func() {     
        if err := gRPCClient.ProcessRequests(); err != nil {
            log.Error("Error while processing Requests")
            //do something here??
        }
    }()
Run Code Online (Sandbox Code Playgroud)

我在 gRPCClient 包装器模块中的代码:

func (grpcclient *gRPCClient) ProcessRequests() error {
    defer grpcclient.Close()    

    for {
        request, err := reqclient.stream.Recv()
        log.Info("Request received")
        if err == io.EOF {          
            break
        }
        if err != nil {
            //when pod is recycled, this is what's hit …
Run Code Online (Sandbox Code Playgroud)

network-programming go kubernetes grpc

15
推荐指数
1
解决办法
2万
查看次数

标签 统计

go ×1

grpc ×1

kubernetes ×1

network-programming ×1