...
1 package etcdv3
2
3 import (
4 "context"
5 "io"
6 "time"
7
8 "github.com/go-kit/kit/endpoint"
9 "github.com/go-kit/kit/sd"
10 "github.com/go-kit/kit/sd/lb"
11 "github.com/go-kit/log"
12 "google.golang.org/grpc"
13 )
14
15 func Example() {
16
17
18 var (
19 etcdServer = "10.0.0.1:2379"
20 prefix = "/services/foosvc/"
21 instance = "1.2.3.4:8080"
22 key = prefix + instance
23 value = "http://" + instance
24 ctx = context.Background()
25 )
26
27 options := ClientOptions{
28
29 CACert: "",
30
31
32 Cert: "",
33
34
35 Key: "",
36
37
38 Username: "",
39
40
41 Password: "",
42
43
44 DialTimeout: time.Second * 3,
45
46
47 DialKeepAlive: time.Second * 3,
48
49
50 DialOptions: []grpc.DialOption{grpc.WithBlock()},
51 }
52
53
54 client, err := NewClient(ctx, []string{etcdServer}, options)
55 if err != nil {
56 panic(err)
57 }
58
59
60 registrar := NewRegistrar(client, Service{
61 Key: key,
62 Value: value,
63 }, log.NewNopLogger())
64
65
66 registrar.Register()
67
68
69
70
71
72 defer registrar.Deregister()
73
74
75
76
77
78
79 barPrefix := "/services/barsvc"
80 logger := log.NewNopLogger()
81 instancer, err := NewInstancer(client, barPrefix, logger)
82 if err != nil {
83 panic(err)
84 }
85 endpointer := sd.NewEndpointer(instancer, barFactory, logger)
86 balancer := lb.NewRoundRobin(endpointer)
87 retry := lb.Retry(3, 3*time.Second, balancer)
88
89
90 req := struct{}{}
91 if _, err = retry(ctx, req); err != nil {
92 panic(err)
93 }
94 }
95
96 func barFactory(string) (endpoint.Endpoint, io.Closer, error) { return endpoint.Nop, nil, nil }
97
View as plain text