|
@@ -39,23 +39,24 @@ var (
|
|
|
)
|
|
|
|
|
|
type Service struct {
|
|
|
- opts *Options
|
|
|
- ctx context.Context
|
|
|
- cancelFunc context.CancelFunc
|
|
|
- registry registry.Registry
|
|
|
- node *registry.ServiceNode
|
|
|
- listener net.Listener
|
|
|
- gateway *gateway.Gateway
|
|
|
- wg sync.WaitGroup
|
|
|
- httpSvr *http.Server
|
|
|
- rpcSvr *rpc.Server
|
|
|
- cliSvr *cli.Server
|
|
|
- upTime time.Time
|
|
|
- client *Client
|
|
|
- tickTimer *time.Timer
|
|
|
- tickTree *btree.BTree
|
|
|
- environment string
|
|
|
- exitFlag int32
|
|
|
+ opts *Options
|
|
|
+ ctx context.Context
|
|
|
+ cancelFunc context.CancelFunc
|
|
|
+ registry registry.Registry
|
|
|
+ node *registry.ServiceNode
|
|
|
+ listener net.Listener
|
|
|
+ gateway *gateway.Gateway
|
|
|
+ wg sync.WaitGroup
|
|
|
+ httpSvr *http.Server
|
|
|
+ rpcSvr *rpc.Server
|
|
|
+ cliSvr *cli.Server
|
|
|
+ upTime time.Time
|
|
|
+ client *Client
|
|
|
+ triesRegister int
|
|
|
+ tickTimer *time.Timer
|
|
|
+ tickTree *btree.BTree
|
|
|
+ environment string
|
|
|
+ exitFlag int32
|
|
|
}
|
|
|
|
|
|
func (svr *Service) async(f func()) {
|
|
@@ -105,7 +106,12 @@ func (svr *Service) worker() {
|
|
|
case <-ticker.C:
|
|
|
if !svr.opts.DisableRegister {
|
|
|
if err = svr.registry.Register(svr.node); err != nil {
|
|
|
- log.Warnf("registry service %s error: %s", svr.opts.Name, err.Error())
|
|
|
+ svr.triesRegister++
|
|
|
+ if svr.triesRegister%15 == 0 {
|
|
|
+ log.Warnf("try register service %s failed to many times", svr.opts.ShortName(), err.Error())
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ svr.triesRegister = 0
|
|
|
}
|
|
|
}
|
|
|
case <-svr.ctx.Done():
|
|
@@ -177,6 +183,7 @@ func (svr *Service) NewRequest(name, method string, body interface{}) (req *Requ
|
|
|
}, nil
|
|
|
}
|
|
|
|
|
|
+//PeekService 选取一个可靠的服务
|
|
|
func (svr *Service) PeekService(name string) ([]*registry.ServiceNode, error) {
|
|
|
return svr.registry.Get(name)
|
|
|
}
|
|
@@ -381,7 +388,11 @@ func (svr *Service) prepare() (err error) {
|
|
|
svr.worker()
|
|
|
})
|
|
|
if !svr.opts.DisableRegister {
|
|
|
- _ = svr.registry.Register(svr.node)
|
|
|
+ if err = svr.registry.Register(svr.node); err != nil {
|
|
|
+ log.Warnf("try register %s failed cause by %s", svr.opts.ShortName(), err.Error())
|
|
|
+ svr.triesRegister++
|
|
|
+ err = nil
|
|
|
+ }
|
|
|
}
|
|
|
if svr.opts.EnableReport {
|
|
|
rn := rand.Int31n(48) + 60
|