pull/458/head
wangchuxiao 2 years ago
parent e9b72ca105
commit 153c096942

@ -74,6 +74,7 @@ func (s *ZkClient) GetConnsRemote(serviceName string) (conns []resolver.Address,
func (s *ZkClient) GetConns(ctx context.Context, serviceName string, opts ...grpc.DialOption) ([]*grpc.ClientConn, error) { func (s *ZkClient) GetConns(ctx context.Context, serviceName string, opts ...grpc.DialOption) ([]*grpc.ClientConn, error) {
s.logger.Printf("get conns from client, serviceName: %s", serviceName) s.logger.Printf("get conns from client, serviceName: %s", serviceName)
s.lock.Lock() s.lock.Lock()
defer s.lock.Unlock()
opts = append(s.options, opts...) opts = append(s.options, opts...)
conns := s.localConns[serviceName] conns := s.localConns[serviceName]
if len(conns) == 0 { if len(conns) == 0 {
@ -81,12 +82,10 @@ func (s *ZkClient) GetConns(ctx context.Context, serviceName string, opts ...grp
s.logger.Printf("get conns from zk remote, serviceName: %s", serviceName) s.logger.Printf("get conns from zk remote, serviceName: %s", serviceName)
conns, err = s.GetConnsRemote(serviceName) conns, err = s.GetConnsRemote(serviceName)
if err != nil { if err != nil {
s.lock.Unlock()
return nil, err return nil, err
} }
s.localConns[serviceName] = conns s.localConns[serviceName] = conns
} }
s.lock.Unlock()
var ret []*grpc.ClientConn var ret []*grpc.ClientConn
s.logger.Printf("get conns from zk success, serviceName: %s", serviceName) s.logger.Printf("get conns from zk success, serviceName: %s", serviceName)
for _, conn := range conns { for _, conn := range conns {

@ -1,26 +0,0 @@
package zookeeper
import (
"sync"
"google.golang.org/grpc"
)
type RoundRobin struct {
index int
lock sync.Mutex
}
func (r *RoundRobin) getConnBalance(conns []*grpc.ClientConn) (conn *grpc.ClientConn, err error) {
if len(conns) == 0 {
return nil, ErrConnIsNil
}
r.lock.Lock()
defer r.lock.Unlock()
if r.index < len(conns)-1 {
r.index++
} else {
r.index = 0
}
return conns[r.index], nil
}

@ -40,7 +40,6 @@ type ZkClient struct {
resolvers map[string]*Resolver resolvers map[string]*Resolver
localConns map[string][]resolver.Address localConns map[string][]resolver.Address
balancerName string balancerName string
RoundRobin
logger Logger logger Logger
} }
@ -154,6 +153,7 @@ func (s *ZkClient) refresh(wg *sync.WaitGroup) {
} }
func (s *ZkClient) flushResolver(serviceName string) { func (s *ZkClient) flushResolver(serviceName string) {
s.logger.Printf("start flush")
r, ok := s.resolvers[serviceName] r, ok := s.resolvers[serviceName]
if ok { if ok {
r.ResolveNow(resolver.ResolveNowOptions{}) r.ResolveNow(resolver.ResolveNowOptions{})

Loading…
Cancel
Save