参考文档: https://github.com/mbobakov/grpc-consul-resolver

    1. package initialize
    2. import (
    3. "fmt"
    4. "go_final/mxshop-api/global"
    5. userpb "go_final/mxshop-api/proto/protofile"
    6. _ "github.com/mbobakov/grpc-consul-resolver" // It's important(这个一定要导入)
    7. "go.uber.org/zap"
    8. "google.golang.org/grpc"
    9. )
    10. // InitSrvConnWithLoadBalance 负载均衡拉取服务
    11. func InitSrvConnWithLoadBalance() {
    12. conn, err := grpc.Dial(
    13. fmt.Sprintf("consul://%s:%d/%s?wait=14s",
    14. global.ServerConfig.ConsulInfo.Host,
    15. global.ServerConfig.ConsulInfo.Port,
    16. global.ServerConfig.UserSrvInfo.Name,
    17. ),
    18. grpc.WithInsecure(),
    19. grpc.WithDefaultServiceConfig(`{"loadBalancingPolicy": "round_robin"}`),
    20. )
    21. if err != nil {
    22. zap.S().Info("[InitSrvConnWithLoadBalance] 连接 【用户服务不可用】失败")
    23. }
    24. // defer conn.Close()
    25. global.UserClient = userpb.NewUserClient(conn)
    26. }