-
Notifications
You must be signed in to change notification settings - Fork 0
/
discover.go
35 lines (28 loc) · 965 Bytes
/
discover.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package micro
import (
"fmt"
"time"
"github.com/gzjjyz/logger"
"go.etcd.io/etcd/client/v3/naming/resolver"
"google.golang.org/grpc"
"google.golang.org/grpc/balancer/roundrobin"
)
func discoverToEtcd(serverName string) ([]grpc.DialOption, string, error) {
var optList []grpc.DialOption
etcdClient, err := NewEtcdCliWithContext(WithGCtxTimeout(time.Second * 5))
if err != nil {
logger.LogError("err:%v", err)
return nil, "", err
}
target := fmt.Sprintf("etcd:///%s", serverName)
etcdResolverBuilder, err := resolver.NewBuilder(etcdClient)
if err != nil {
logger.LogError("err:%v", err)
return nil, "", err
}
optList = append(optList,
grpc.WithResolvers(etcdResolverBuilder), // 注入 etcd bresolver
grpc.WithDefaultServiceConfig(fmt.Sprintf(`{"LoadBalancingPolicy": "%s"}`, roundrobin.Name)), // 声明使用的负载均衡策略为 round robin
)
return optList, target, err
}