go中的grpc客户端在高并发下使用同一个客户端是安全的吗?

1. 运行环境

go1.19 linux/amd64

2. 问题描述?

服务端部署了3台机器,所以一开始创建了三个客户端(pb.NewDiskIOServerClient(conn))分别连接三台服务器,存放在切片clientPool中,想问的是,比如:当请求1过来的时候,使用clientPool[0]通信,相同时间下,请求2过来,也使用clientPool[0]通信,这样是可以的吗?

    addrs := strings.Split(diskServiceAddrs, ";")
    for _, addr := range addrs {
        // 1、连接服务端
        conn, err := grpc.Dial(addr, grpc.WithTransportCredentials(insecure.NewCredentials()))
        if err != nil {
            mlog.Errorf(context.Background(), "disk server Init failed. ip:%v", addr)
            panic("disk server初始化失败!")
        }
        // defer conn.Close()

        // 2、实例化gRPC客户端
        clientPool = append(clientPool, pb.NewDiskIOServerClient(conn))
        mlog.MLogLevel(2).Infof(context.Background(), "disk server Init success. ip:%v", addr)
    }

3. 您期望得到的结果?

4. 您实际得到的结果?

讨论数量: 1

先说结论,没问题。无非用的是同一个客户端调用同一台服务器。

为啥不用 grpc 负载均衡?load-balancing

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!