初级会员
  • 第 42993 位会员
  • quanyecha
  • 2019-09-18 09:38:22
  • Offline
  • 21 3

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 我也是从java转到go的,目前还在看代码阶段,感觉层层的嵌套
  • @kuangyuansheng 嗯,明白了,多谢指导
  • 1楼 @kuangyuansheng 嗯,我明白consul可以做集群。比如说现在有2个consul server 叫做serverA,serverB,两个consul client,client A,client B,现在我有一个微服务叫user,还有一个微服务叫order ,他们都要注册到consul集群中,我使用的是微服务主动注册的方式. 网上一般的例子都是这样的: fmt.Println("begin register server") fmt.Println(c) config := consulApi.DefaultConfig() fmt.Println(c.ConsulAddress) config.Address = c.ConsulAddress client, err := consulApi.NewClient(config) if err != nil { log.Fatal("consul client error : ", err) } registration := new(consulApi.AgentServiceRegistration) registration.ID = c.ID // 服务节点的名称 registration.Name = c.Name // 服务名称 registration.Port = c.Port // 服务端口 //registration.Tags = c.Tags // tag,可以为空 registration.Address = c.ServiceAddress registration.Check = &consulApi.AgentServiceCheck{ // 健康检查 HTTP: c.HTTP, Timeout: c.Timeout, Interval: c.Interval, // 健康检查间隔 DeregisterCriticalServiceAfter: c.DeregisterCriticalServiceAfter, //check失败后30秒删除本服务,注销时间,相当于过期时间 } // 注册服务 err = client.Agent().ServiceRegister(registration) if err != nil { log.Fatal("register server error : ", err) } // 下面两行代码的意思还不是很明白 http.HandleFunc("/check", consulCheck) // 这个代码是监听相应的端口 go http.ListenAndServe(fmt.Sprintf(":%d", c.CheckPort), nil) 但是这样的例子服务职能注册固定的consul 的client ,万一服务注册的时候这个consul client挂了就会导致注册不上去,这里可以写多个地址,就像springboot 里面eureka当注册中心的时候,直接写多个注册中心的地址,如果一个不可用他可以去另外的一个注册中心进行注册