diff --git a/cluster/cluster.go b/cluster/cluster.go index cb3f9cf..168ea47 100644 --- a/cluster/cluster.go +++ b/cluster/cluster.go @@ -20,23 +20,25 @@ const ( Discard NodeStatus = 1 //丢弃 ) -type MasterDiscoveryService struct { +type DiscoveryService struct { MasterNodeId string //要筛选的主结点Id,如果不配置或者配置成0,表示针对所有的主结点 - DiscoveryService []string //只发现的服务列表 + NetworkName string //如果是etcd,指定要筛选的网络名中的服务,不配置,表示所有的网络 + ServiceList []string //只发现的服务列表 } type NodeInfo struct { NodeId string - //NodeName string Private bool ListenAddr string MaxRpcParamLen uint32 //最大Rpc参数长度 CompressBytesLen int //超过字节进行压缩的长度 ServiceList []string //所有的有序服务列表 PublicServiceList []string //对外公开的服务列表 - MasterDiscoveryService []MasterDiscoveryService //筛选发现的服务,如果不配置,不进行筛选 + DiscoveryService []DiscoveryService //筛选发现的服务,如果不配置,不进行筛选 status NodeStatus Retire bool + + NetworkName string } type NodeRpcInfo struct { @@ -48,7 +50,9 @@ var cluster Cluster type Cluster struct { localNodeInfo NodeInfo //本结点配置信息 - masterDiscoveryNodeList []NodeInfo //配置发现Master结点 + + discoveryInfo DiscoveryInfo //服务发现配置 + //masterDiscoveryNodeList []NodeInfo //配置发现Master结点 globalCfg interface{} //全局配置 localServiceCfg map[string]interface{} //map[serviceName]配置数据* @@ -83,7 +87,6 @@ func (cls *Cluster) Start() { } func (cls *Cluster) Stop() { - cls.serviceDiscovery.OnNodeStop() } func (cls *Cluster) DiscardNode(nodeId string) { @@ -99,7 +102,7 @@ func (cls *Cluster) DiscardNode(nodeId string) { func (cls *Cluster) DelNode(nodeId string, immediately bool) { //MasterDiscover结点与本地结点不删除 - if cls.GetMasterDiscoveryNodeInfo(nodeId) != nil || nodeId == cls.localNodeInfo.NodeId { + if cls.IsOriginMasterDiscoveryNode(nodeId) || nodeId == cls.localNodeInfo.NodeId { return } cls.locker.Lock() @@ -132,10 +135,6 @@ func (cls *Cluster) DelNode(nodeId string, immediately bool) { } func (cls *Cluster) serviceDiscoveryDelNode(nodeId string, immediately bool) { - //if nodeId == "" { - // return - //} - cls.DelNode(nodeId, immediately) } @@ -198,7 +197,6 @@ func (cls *Cluster) serviceDiscoverySetNodeInfo(nodeInfo *NodeInfo) { } - func (cls *Cluster) Init(localNodeId string, setupServiceFun SetupServiceFun) error { //1.初始化配置 err := cls.InitCfg(localNodeId) @@ -209,7 +207,11 @@ func (cls *Cluster) Init(localNodeId string, setupServiceFun SetupServiceFun) er cls.rpcServer.Init(cls) //2.安装服务发现结点 - cls.SetupServiceDiscovery(localNodeId, setupServiceFun) + err = cls.setupDiscovery(localNodeId, setupServiceFun) + if err != nil { + log.Error("setupDiscovery fail",log.ErrorAttr("err",err)) + return err + } service.RegRpcEventFun = cls.RegRpcEvent service.UnRegRpcEventFun = cls.UnRegRpcEvent service.RegDiscoveryServiceEventFun = cls.RegDiscoveryEvent @@ -223,73 +225,6 @@ func (cls *Cluster) Init(localNodeId string, setupServiceFun SetupServiceFun) er return nil } -func (cls *Cluster) checkDynamicDiscovery(localNodeId string) (bool, bool) { - var localMaster bool //本结点是否为Master结点 - var hasMaster bool //是否配置Master服务 - - //遍历所有结点 - for _, nodeInfo := range cls.masterDiscoveryNodeList { - if nodeInfo.NodeId == localNodeId { - localMaster = true - } - hasMaster = true - } - - //返回查询结果 - return localMaster, hasMaster -} - -func (cls *Cluster) AddDynamicDiscoveryService(serviceName string, bPublicService bool) { - addServiceList := append([]string{},serviceName) - cls.localNodeInfo.ServiceList = append(addServiceList,cls.localNodeInfo.ServiceList...) - if bPublicService { - cls.localNodeInfo.PublicServiceList = append(cls.localNodeInfo.PublicServiceList, serviceName) - } - - if _, ok := cls.mapServiceNode[serviceName]; ok == false { - cls.mapServiceNode[serviceName] = map[string]struct{}{} - } - cls.mapServiceNode[serviceName][cls.localNodeInfo.NodeId] = struct{}{} -} - -func (cls *Cluster) GetDiscoveryNodeList() []NodeInfo { - return cls.masterDiscoveryNodeList -} - -func (cls *Cluster) GetMasterDiscoveryNodeInfo(nodeId string) *NodeInfo { - for i := 0; i < len(cls.masterDiscoveryNodeList); i++ { - if cls.masterDiscoveryNodeList[i].NodeId == nodeId { - return &cls.masterDiscoveryNodeList[i] - } - } - - return nil -} - -func (cls *Cluster) IsMasterDiscoveryNode() bool { - return cls.GetMasterDiscoveryNodeInfo(cls.GetLocalNodeInfo().NodeId) != nil -} - -func (cls *Cluster) SetupServiceDiscovery(localNodeId string, setupServiceFun SetupServiceFun) { - if cls.serviceDiscovery != nil { - return - } - - //1.如果没有配置DiscoveryNode配置,则使用默认配置文件发现服务 - localMaster, hasMaster := cls.checkDynamicDiscovery(localNodeId) - if hasMaster == false { - cls.serviceDiscovery = &ConfigDiscovery{} - return - } - setupServiceFun(&masterService, &clientService) - - //2.如果为动态服务发现安装本地发现服务 - cls.serviceDiscovery = getDynamicDiscovery() - cls.AddDynamicDiscoveryService(DynamicDiscoveryClientName, true) - if localMaster == true { - cls.AddDynamicDiscoveryService(DynamicDiscoveryMasterName, false) - } -} func (cls *Cluster) FindRpcHandler(serviceName string) rpc.IRpcHandler { pService := service.GetService(serviceName) @@ -488,3 +423,26 @@ func (cls *Cluster) GetNodeInfo(nodeId string) (NodeInfo,bool) { return nodeInfo.nodeInfo,true } + +func (dc *Cluster) CanDiscoveryService(fromMasterNodeId string,serviceName string) bool{ + canDiscovery := true + + for i:=0;i>try watcher") + rch := client.Watch(context.Background(), watchKey, clientv3.WithPrefix()) + + if ed.getServices(client,etcdClient,watchKey) == false { + return + } + + for wresp := range rch { + for _, ev := range wresp.Events { + switch ev.Type { + case clientv3.EventTypePut: // 修改或者新增 + ed.notifyPut(watchKey,ev.Kv) + case clientv3.EventTypeDelete: // 删除 + ed.notifyDelete(watchKey,ev.Kv) + } + } + } + + ed.tryWatch(client,etcdClient) +} + +func (ed *EtcdDiscoveryService) setNode(netWorkName string,byteNode []byte) string{ + var nodeInfo rpc.NodeInfo + err := proto.Unmarshal(byteNode,&nodeInfo) + if err != nil { + log.Error("Unmarshal fail",log.String("netWorkName",netWorkName),log.ErrorAttr("err",err)) + return "" + } + + ed.setNodeInfo(netWorkName,&nodeInfo) + + return nodeInfo.NodeId +} + +func (ed *EtcdDiscoveryService) delNode(fullKey string) string{ + nodeId := ed.getNodeId(fullKey) + if nodeId == ed.localNodeId { + return "" + } + + ed.funDelNode(nodeId,true) + return nodeId +} + +func (ed *EtcdDiscoveryService) getNetworkNameByWatchKey(watchKey string) string{ + return watchKey[strings.LastIndex(watchKey,"/")+1:] +} + +func (ed *EtcdDiscoveryService) getNetworkNameByFullKey(fullKey string) string{ + return fullKey[len(originDir)+1:strings.LastIndex(fullKey,"/")] +} + +func (ed *EtcdDiscoveryService) getNodeId(fullKey string) string{ + return fullKey[strings.LastIndex(fullKey,"/")+1:] +} + +func (ed *EtcdDiscoveryService) OnEtcdDiscovery(ev event.IEvent){ + disEvent := ev.(*etcdDiscoveryEvent) + switch disEvent.typ { + case eeGets: + ed.OnEventGets(disEvent.watchKey,disEvent.Kvs) + case eePut: + if len(disEvent.Kvs) == 1 { + ed.OnEventPut(disEvent.watchKey,disEvent.Kvs[0]) + } + case eeDelete: + if len(disEvent.Kvs) == 1 { + ed.OnEventDelete(disEvent.watchKey,disEvent.Kvs[0]) + } + } +} + +func (ed *EtcdDiscoveryService) notifyGets(watchKey string,Kvs []*mvccpb.KeyValue) { + var ev etcdDiscoveryEvent + ev.typ = eeGets + ev.watchKey = watchKey + ev.Kvs = Kvs + ed.NotifyEvent(&ev) +} + +func (ed *EtcdDiscoveryService) notifyPut(watchKey string,Kvs *mvccpb.KeyValue) { + var ev etcdDiscoveryEvent + ev.typ = eePut + ev.watchKey = watchKey + ev.Kvs = append(ev.Kvs,Kvs) + ed.NotifyEvent(&ev) +} + +func (ed *EtcdDiscoveryService) notifyDelete(watchKey string,Kvs *mvccpb.KeyValue) { + var ev etcdDiscoveryEvent + ev.typ = eeDelete + ev.watchKey = watchKey + ev.Kvs = append(ev.Kvs,Kvs) + ed.NotifyEvent(&ev) +} + +func (ed *EtcdDiscoveryService) OnEventGets(watchKey string,Kvs []*mvccpb.KeyValue) { + mapNode := make(map[string]struct{},32) + for _, kv := range Kvs { + nodeId := ed.setNode(ed.getNetworkNameByFullKey(string(kv.Key)), kv.Value) + mapNode[nodeId] = struct{}{} + ed.addNodeId(watchKey,nodeId) + } + + log.Debug(">>etcd OnEventGets",log.String("watchKey",watchKey),log.Any("mapNode",mapNode)) + // 此段代码为遍历并删除过期节点的逻辑。 + // 对于mapDiscoveryNodeId中与watchKey关联的所有节点ID,遍历该集合。 + // 如果某个节点ID不在mapNode中且不是本地节点ID,则调用funDelNode函数删除该节点。 + mapLastNodeId := ed.mapDiscoveryNodeId[watchKey] // 根据watchKey获取对应的节点ID集合 + for nodeId := range mapLastNodeId { // 遍历所有节点ID + if _,ok := mapNode[nodeId];ok == false && nodeId != ed.localNodeId { // 检查节点是否不存在于mapNode且不是本地节点 + ed.funDelNode(nodeId,true) // 调用函数删除该节点 + delete(ed.mapDiscoveryNodeId[watchKey],nodeId) + log.Debug(">>etcd OnEventGets Delete",log.String("watchKey",watchKey),log.String("nodeId",nodeId)) + } + } +} + +func (ed *EtcdDiscoveryService) OnEventPut(watchKey string,Kv *mvccpb.KeyValue) { + log.Debug(">>etcd OnEventPut",log.String("watchKey",watchKey),log.String("nodeId",ed.getNodeId(string(Kv.Key)))) + nodeId := ed.setNode(ed.getNetworkNameByFullKey(string(Kv.Key)), Kv.Value) + ed.addNodeId(watchKey,nodeId) +} + +func (ed *EtcdDiscoveryService) OnEventDelete(watchKey string,Kv *mvccpb.KeyValue) { + log.Debug(">>etcd OnEventDelete",log.String("watchKey",watchKey),log.String("nodeId",ed.getNodeId(string(Kv.Key)))) + nodeId := ed.delNode(string(Kv.Key)) + delete(ed.mapDiscoveryNodeId[watchKey],nodeId) +} + +func (ed *EtcdDiscoveryService) addNodeId(watchKey string,nodeId string) { + if _,ok := ed.mapDiscoveryNodeId[watchKey];ok == false { + ed.mapDiscoveryNodeId[watchKey] = make(map[string]struct{}) + } + + ed.mapDiscoveryNodeId[watchKey][nodeId] = struct{}{} +} diff --git a/cluster/dynamicdiscovery.go b/cluster/origindiscovery.go similarity index 67% rename from cluster/dynamicdiscovery.go rename to cluster/origindiscovery.go index 605bb96..54e2882 100644 --- a/cluster/dynamicdiscovery.go +++ b/cluster/origindiscovery.go @@ -10,49 +10,51 @@ import ( "google.golang.org/protobuf/proto" ) -const DynamicDiscoveryMasterName = "DiscoveryMaster" -const DynamicDiscoveryClientName = "DiscoveryClient" -const RegServiceDiscover = DynamicDiscoveryMasterName + ".RPC_RegServiceDiscover" -const SubServiceDiscover = DynamicDiscoveryClientName + ".RPC_SubServiceDiscover" -const AddSubServiceDiscover = DynamicDiscoveryMasterName + ".RPC_AddSubServiceDiscover" -const NodeRetireRpcMethod = DynamicDiscoveryMasterName+".RPC_NodeRetire" +const OriginDiscoveryMasterName = "DiscoveryMaster" +const OriginDiscoveryClientName = "DiscoveryClient" +const RegServiceDiscover = OriginDiscoveryMasterName + ".RPC_RegServiceDiscover" +const SubServiceDiscover = OriginDiscoveryClientName + ".RPC_SubServiceDiscover" +const AddSubServiceDiscover = OriginDiscoveryMasterName + ".RPC_AddSubServiceDiscover" +const NodeRetireRpcMethod = OriginDiscoveryMasterName+".RPC_NodeRetire" -type DynamicDiscoveryMaster struct { +type OriginDiscoveryMaster struct { service.Service mapNodeInfo map[string]struct{} nodeInfo []*rpc.NodeInfo } -type DynamicDiscoveryClient struct { +type OriginDiscoveryClient struct { service.Service - funDelService FunDelNode - funSetService FunSetNodeInfo + funDelNode FunDelNode + funSetNode FunSetNode localNodeId string mapDiscovery map[string]map[string]struct{} //map[masterNodeId]map[nodeId]struct{} + mapMasterNetwork map[string]string bRetire bool } -var masterService DynamicDiscoveryMaster -var clientService DynamicDiscoveryClient +var masterService OriginDiscoveryMaster +var clientService OriginDiscoveryClient -func getDynamicDiscovery() IServiceDiscovery { +func getOriginDiscovery() IServiceDiscovery { return &clientService } func init() { - masterService.SetName(DynamicDiscoveryMasterName) - clientService.SetName(DynamicDiscoveryClientName) + masterService.SetName(OriginDiscoveryMasterName) + clientService.SetName(OriginDiscoveryClientName) } -func (ds *DynamicDiscoveryMaster) isRegNode(nodeId string) bool { + +func (ds *OriginDiscoveryMaster) isRegNode(nodeId string) bool { _, ok := ds.mapNodeInfo[nodeId] return ok } -func (ds *DynamicDiscoveryMaster) updateNodeInfo(nInfo *rpc.NodeInfo) { +func (ds *OriginDiscoveryMaster) updateNodeInfo(nInfo *rpc.NodeInfo) { if _,ok:= ds.mapNodeInfo[nInfo.NodeId];ok == false { return } @@ -66,7 +68,7 @@ func (ds *DynamicDiscoveryMaster) updateNodeInfo(nInfo *rpc.NodeInfo) { } } -func (ds *DynamicDiscoveryMaster) addNodeInfo(nInfo *rpc.NodeInfo) { +func (ds *OriginDiscoveryMaster) addNodeInfo(nInfo *rpc.NodeInfo) { if len(nInfo.PublicServiceList) == 0 { return } @@ -81,7 +83,7 @@ func (ds *DynamicDiscoveryMaster) addNodeInfo(nInfo *rpc.NodeInfo) { ds.nodeInfo = append(ds.nodeInfo, nodeInfo) } -func (ds *DynamicDiscoveryMaster) removeNodeInfo(nodeId string) { +func (ds *OriginDiscoveryMaster) removeNodeInfo(nodeId string) { if _,ok:= ds.mapNodeInfo[nodeId];ok == false { return } @@ -96,14 +98,14 @@ func (ds *DynamicDiscoveryMaster) removeNodeInfo(nodeId string) { delete(ds.mapNodeInfo,nodeId) } -func (ds *DynamicDiscoveryMaster) OnInit() error { +func (ds *OriginDiscoveryMaster) OnInit() error { ds.mapNodeInfo = make(map[string]struct{}, 20) ds.RegRpcListener(ds) return nil } -func (ds *DynamicDiscoveryMaster) OnStart() { +func (ds *OriginDiscoveryMaster) OnStart() { var nodeInfo rpc.NodeInfo localNodeInfo := cluster.GetLocalNodeInfo() nodeInfo.NodeId = localNodeInfo.NodeId @@ -112,11 +114,10 @@ func (ds *DynamicDiscoveryMaster) OnStart() { nodeInfo.MaxRpcParamLen = localNodeInfo.MaxRpcParamLen nodeInfo.Private = localNodeInfo.Private nodeInfo.Retire = localNodeInfo.Retire - ds.addNodeInfo(&nodeInfo) } -func (ds *DynamicDiscoveryMaster) OnNodeConnected(nodeId string) { +func (ds *OriginDiscoveryMaster) OnNodeConnected(nodeId string) { //没注册过结点不通知 if ds.isRegNode(nodeId) == false { return @@ -131,7 +132,7 @@ func (ds *DynamicDiscoveryMaster) OnNodeConnected(nodeId string) { ds.GoNode(nodeId, SubServiceDiscover, ¬ifyDiscover) } -func (ds *DynamicDiscoveryMaster) OnNodeDisconnect(nodeId string) { +func (ds *OriginDiscoveryMaster) OnNodeDisconnect(nodeId string) { if ds.isRegNode(nodeId) == false { return } @@ -148,13 +149,13 @@ func (ds *DynamicDiscoveryMaster) OnNodeDisconnect(nodeId string) { ds.CastGo(SubServiceDiscover, ¬ifyDiscover) } -func (ds *DynamicDiscoveryMaster) RpcCastGo(serviceMethod string, args interface{}) { +func (ds *OriginDiscoveryMaster) RpcCastGo(serviceMethod string, args interface{}) { for nodeId, _ := range ds.mapNodeInfo { ds.GoNode(nodeId, serviceMethod, args) } } -func (ds *DynamicDiscoveryMaster) RPC_NodeRetire(req *rpc.NodeRetireReq, res *rpc.Empty) error { +func (ds *OriginDiscoveryMaster) RPC_NodeRetire(req *rpc.NodeRetireReq, res *rpc.Empty) error { log.Info("node is retire",log.String("nodeId",req.NodeInfo.NodeId),log.Bool("retire",req.NodeInfo.Retire)) ds.updateNodeInfo(req.NodeInfo) @@ -168,7 +169,7 @@ func (ds *DynamicDiscoveryMaster) RPC_NodeRetire(req *rpc.NodeRetireReq, res *rp } // 收到注册过来的结点 -func (ds *DynamicDiscoveryMaster) RPC_RegServiceDiscover(req *rpc.ServiceDiscoverReq, res *rpc.Empty) error { +func (ds *OriginDiscoveryMaster) RPC_RegServiceDiscover(req *rpc.ServiceDiscoverReq, res *rpc.Empty) error { if req.NodeInfo == nil { err := errors.New("RPC_RegServiceDiscover req is error.") log.Error(err.Error()) @@ -204,13 +205,15 @@ func (ds *DynamicDiscoveryMaster) RPC_RegServiceDiscover(req *rpc.ServiceDiscove return nil } -func (dc *DynamicDiscoveryClient) OnInit() error { +func (dc *OriginDiscoveryClient) OnInit() error { dc.RegRpcListener(dc) dc.mapDiscovery = map[string]map[string]struct{}{} + dc.mapMasterNetwork = map[string]string{} + return nil } -func (dc *DynamicDiscoveryClient) addMasterNode(masterNodeId string, nodeId string) { +func (dc *OriginDiscoveryClient) addMasterNode(masterNodeId string, nodeId string) { _, ok := dc.mapDiscovery[masterNodeId] if ok == false { dc.mapDiscovery[masterNodeId] = map[string]struct{}{} @@ -218,7 +221,7 @@ func (dc *DynamicDiscoveryClient) addMasterNode(masterNodeId string, nodeId stri dc.mapDiscovery[masterNodeId][nodeId] = struct{}{} } -func (dc *DynamicDiscoveryClient) removeMasterNode(masterNodeId string, nodeId string) { +func (dc *OriginDiscoveryClient) removeMasterNode(masterNodeId string, nodeId string) { mapNodeId, ok := dc.mapDiscovery[masterNodeId] if ok == false { return @@ -227,7 +230,7 @@ func (dc *DynamicDiscoveryClient) removeMasterNode(masterNodeId string, nodeId s delete(mapNodeId, nodeId) } -func (dc *DynamicDiscoveryClient) findNodeId(nodeId string) bool { +func (dc *OriginDiscoveryClient) findNodeId(nodeId string) bool { for _, mapNodeId := range dc.mapDiscovery { _, ok := mapNodeId[nodeId] if ok == true { @@ -238,22 +241,22 @@ func (dc *DynamicDiscoveryClient) findNodeId(nodeId string) bool { return false } -func (dc *DynamicDiscoveryClient) OnStart() { +func (dc *OriginDiscoveryClient) OnStart() { //2.添加并连接发现主结点 dc.addDiscoveryMaster() } -func (dc *DynamicDiscoveryClient) addDiscoveryMaster() { - discoveryNodeList := cluster.GetDiscoveryNodeList() +func (dc *OriginDiscoveryClient) addDiscoveryMaster() { + discoveryNodeList := cluster.GetOriginDiscoveryNodeList() for i := 0; i < len(discoveryNodeList); i++ { if discoveryNodeList[i].NodeId == cluster.GetLocalNodeInfo().NodeId { continue } - dc.funSetService(&discoveryNodeList[i]) + dc.funSetNode(&discoveryNodeList[i]) } } -func (dc *DynamicDiscoveryClient) fullCompareDiffNode(masterNodeId string, mapNodeInfo map[string]*rpc.NodeInfo) []string { +func (dc *OriginDiscoveryClient) fullCompareDiffNode(masterNodeId string, mapNodeInfo map[string]*rpc.NodeInfo) []string { if mapNodeInfo == nil { return nil } @@ -277,7 +280,7 @@ func (dc *DynamicDiscoveryClient) fullCompareDiffNode(masterNodeId string, mapNo } //订阅发现的服务通知 -func (dc *DynamicDiscoveryClient) RPC_SubServiceDiscover(req *rpc.SubscribeDiscoverNotify) error { +func (dc *OriginDiscoveryClient) RPC_SubServiceDiscover(req *rpc.SubscribeDiscoverNotify) error { mapNodeInfo := map[string]*rpc.NodeInfo{} for _, nodeInfo := range req.NodeInfo { //不对本地结点或者不存在任何公开服务的结点 @@ -285,8 +288,8 @@ func (dc *DynamicDiscoveryClient) RPC_SubServiceDiscover(req *rpc.SubscribeDisco continue } - if cluster.IsMasterDiscoveryNode() == false && len(nodeInfo.PublicServiceList) == 1 && - nodeInfo.PublicServiceList[0] == DynamicDiscoveryClientName { + if cluster.IsOriginMasterDiscoveryNode(cluster.GetLocalNodeInfo().NodeId) == false && len(nodeInfo.PublicServiceList) == 1 && + nodeInfo.PublicServiceList[0] == OriginDiscoveryClientName { continue } @@ -327,7 +330,7 @@ func (dc *DynamicDiscoveryClient) RPC_SubServiceDiscover(req *rpc.SubscribeDisco cluster.TriggerDiscoveryEvent(false,nodeId,nil) dc.removeMasterNode(req.MasterNodeId, nodeId) if dc.findNodeId(nodeId) == false { - dc.funDelService(nodeId, false) + dc.funDelNode(nodeId, false) } } @@ -344,24 +347,15 @@ func (dc *DynamicDiscoveryClient) RPC_SubServiceDiscover(req *rpc.SubscribeDisco return nil } -func (dc *DynamicDiscoveryClient) isDiscoverNode(nodeId string) bool { - for i := 0; i < len(cluster.masterDiscoveryNodeList); i++ { - if cluster.masterDiscoveryNodeList[i].NodeId == nodeId { - return true - } - } - return false -} - -func (dc *DynamicDiscoveryClient) OnNodeConnected(nodeId string) { +func (dc *OriginDiscoveryClient) OnNodeConnected(nodeId string) { dc.regServiceDiscover(nodeId) } -func (dc *DynamicDiscoveryClient) OnRetire(){ +func (dc *OriginDiscoveryClient) OnRetire(){ dc.bRetire = true - masterNodeList := cluster.GetDiscoveryNodeList() + masterNodeList := cluster.GetOriginDiscoveryNodeList() for i:=0;i