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)
}
先说结论,没问题。无非用的是同一个客户端调用同一台服务器。