Skip to content

Commit d201869

Browse files
committed
修改负载机制
1 parent 1c8bbcf commit d201869

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

etcd/discovery/discovery.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
clientv3 "go.etcd.io/etcd/client/v3"
99
"google.golang.org/grpc/resolver"
1010
"learning_tools/etcd/register"
11+
"log"
1112
"sync"
1213
)
1314

@@ -43,30 +44,33 @@ func (d *Discovery) Build(target resolver.Target, cc resolver.ClientConn, opts r
4344
return nil, err
4445
}
4546
for _, v := range res.Kvs {
46-
d.AddNode(v.Key, v.Value)
47+
if err = d.AddNode(v.Key, v.Value); err != nil {
48+
log.Println(err)
49+
continue
50+
}
4751
}
4852
go func(dd *Discovery) {
4953
dd.watcher()
5054
}(d)
5155
return d, err
5256
}
5357

54-
func (d *Discovery) AddNode(key, val []byte) {
58+
func (d *Discovery) AddNode(key, val []byte) error {
5559
var data = new(register.Options)
5660
err := json.Unmarshal(val, data)
5761
if err != nil {
58-
return
62+
return err
5963
}
6064
addr := resolver.Address{Addr: data.Node.Address}
6165
addr = SetNodeInfo(addr, data)
6266
d.Node.Store(string(key), addr)
63-
d.cc.UpdateState(resolver.State{Addresses: d.GetAddress()})
67+
return d.cc.UpdateState(resolver.State{Addresses: d.GetAddress()})
6468
}
6569

66-
func (d *Discovery) DelNode(key []byte) {
70+
func (d *Discovery) DelNode(key []byte) error {
6771
keyStr := string(key)
6872
d.Node.Delete(keyStr)
69-
d.cc.UpdateState(resolver.State{Addresses: d.GetAddress()})
73+
return d.cc.UpdateState(resolver.State{Addresses: d.GetAddress()})
7074
}
7175

7276
func (d *Discovery) GetAddress() []resolver.Address {
@@ -89,9 +93,13 @@ func (d *Discovery) watcher() {
8993
for _, ev := range res.Events {
9094
switch ev.Type {
9195
case mvccpb.PUT: //新增或修改
92-
d.AddNode(ev.Kv.Key, ev.Kv.Value)
96+
if err := d.AddNode(ev.Kv.Key, ev.Kv.Value); err != nil {
97+
log.Println(err)
98+
}
9399
case mvccpb.DELETE: //删除
94-
d.DelNode(ev.Kv.Key)
100+
if err := d.DelNode(ev.Kv.Key); err != nil {
101+
log.Println(err)
102+
}
95103
}
96104
}
97105
}

etcd/etcd-grpc/client_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func TestClient(t *testing.T) {
3333
defer conn.Close()
3434
apiClient := api.NewApiClient(conn)
3535
for {
36-
ctx := context.WithValue(context.Background(), "version", "v2")
36+
ctx := context.WithValue(context.Background(), "version", "v1")
3737
_, err := apiClient.ApiTest(ctx, &api.Request{Input: "v1v1v1v1v1"})
3838
if err != nil {
3939
fmt.Println(err)

0 commit comments

Comments
 (0)