From a7f76f00a9dfd054ffb0f1f4f56275c5997ba463 Mon Sep 17 00:00:00 2001 From: "suguo.yao" Date: Thu, 7 Oct 2021 14:27:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0consul=E4=BD=BF=E7=94=A8tag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- consul/consul.go | 41 ++++------------------------------------- 1 file changed, 4 insertions(+), 37 deletions(-) diff --git a/consul/consul.go b/consul/consul.go index 8d2d1f6..d8bf42f 100644 --- a/consul/consul.go +++ b/consul/consul.go @@ -84,39 +84,6 @@ func RegisterAPI(name string, addr string, port int, tags ...string) error { return nil } -//Register 注册服务到consul -func Register(name string, addr string, port int, tags ...string) error { - client, err := New() - if err != nil { - return err - } - if client == nil { - return errors.New("consul 实例空") - } - - // 创建注册到consul的服务到 - registration := new(consulapi.AgentServiceRegistration) - registration.ID = fmt.Sprintf("%s-%s:%d", name, addr, port) - registration.Name = name - registration.Port = port - registration.Tags = tags - registration.Address = addr - - // 增加consul健康检查回调函数 - check := new(consulapi.AgentServiceCheck) - check.GRPC = fmt.Sprintf("%s:%d", registration.Address, registration.Port) - check.Timeout = "5s" - check.Interval = "5s" - check.DeregisterCriticalServiceAfter = "30s" // 故障检查失败30s后 consul自动将注册服务删除 - registration.Check = check - - // 注册服务到consul - if err := client.Agent().ServiceRegister(registration); err != nil { - return err - } - return nil -} - //DeRegister 取消consul注册的服务 func DeRegister(name string, addr string, port int) error { client, err := New() @@ -131,7 +98,7 @@ func DeRegister(name string, addr string, port int) error { } //FindNode 查找节点 -func FindNode(servicename string) (*consulapi.AgentService, error) { +func FindNode(servicename, tag string) (*consulapi.AgentService, error) { client, err := New() if err != nil { return nil, err @@ -140,7 +107,7 @@ func FindNode(servicename string) (*consulapi.AgentService, error) { if client == nil { return nil, errors.New("consul 实例空") } - services, _, err := client.Health().Service(servicename, "", true, nil) + services, _, err := client.Health().Service(servicename, tag, true, nil) if err != nil { return nil, err } @@ -156,9 +123,9 @@ func FindNode(servicename string) (*consulapi.AgentService, error) { return services[r.Intn(l)%l].Service, nil } -//FindServer 从consul中发现服务 +//FindServer 从consul中发现服务,并返回grpc连接实例 func FindServer(servicename string) (*grpc.ClientConn, error) { - node, err := FindNode(servicename) + node, err := FindNode(servicename, "") //无tag视为grpc服务 if err != nil { return nil, err }