参考文档: https://github.com/mbobakov/grpc-consul-resolver
package initialize
import (
"fmt"
"go_final/mxshop-api/global"
userpb "go_final/mxshop-api/proto/protofile"
_ "github.com/mbobakov/grpc-consul-resolver" // It's important(这个一定要导入)
"go.uber.org/zap"
"google.golang.org/grpc"
)
// InitSrvConnWithLoadBalance 负载均衡拉取服务
func InitSrvConnWithLoadBalance() {
conn, err := grpc.Dial(
fmt.Sprintf("consul://%s:%d/%s?wait=14s",
global.ServerConfig.ConsulInfo.Host,
global.ServerConfig.ConsulInfo.Port,
global.ServerConfig.UserSrvInfo.Name,
),
grpc.WithInsecure(),
grpc.WithDefaultServiceConfig(`{"loadBalancingPolicy": "round_robin"}`),
)
if err != nil {
zap.S().Info("[InitSrvConnWithLoadBalance] 连接 【用户服务不可用】失败")
}
// defer conn.Close()
global.UserClient = userpb.NewUserClient(conn)
}