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)
}
推荐文章: