更新consul使用tag
This commit is contained in:
parent
6c14e82c92
commit
a7f76f00a9
|
|
@ -84,39 +84,6 @@ func RegisterAPI(name string, addr string, port int, tags ...string) error {
|
||||||
return nil
|
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注册的服务
|
//DeRegister 取消consul注册的服务
|
||||||
func DeRegister(name string, addr string, port int) error {
|
func DeRegister(name string, addr string, port int) error {
|
||||||
client, err := New()
|
client, err := New()
|
||||||
|
|
@ -131,7 +98,7 @@ func DeRegister(name string, addr string, port int) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
//FindNode 查找节点
|
//FindNode 查找节点
|
||||||
func FindNode(servicename string) (*consulapi.AgentService, error) {
|
func FindNode(servicename, tag string) (*consulapi.AgentService, error) {
|
||||||
client, err := New()
|
client, err := New()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -140,7 +107,7 @@ func FindNode(servicename string) (*consulapi.AgentService, error) {
|
||||||
if client == nil {
|
if client == nil {
|
||||||
return nil, errors.New("consul 实例空")
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -156,9 +123,9 @@ func FindNode(servicename string) (*consulapi.AgentService, error) {
|
||||||
return services[r.Intn(l)%l].Service, nil
|
return services[r.Intn(l)%l].Service, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//FindServer 从consul中发现服务
|
//FindServer 从consul中发现服务,并返回grpc连接实例
|
||||||
func FindServer(servicename string) (*grpc.ClientConn, error) {
|
func FindServer(servicename string) (*grpc.ClientConn, error) {
|
||||||
node, err := FindNode(servicename)
|
node, err := FindNode(servicename, "") //无tag视为grpc服务
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue