ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Go 服务发现:Consul + Nacos + Etcd 集成全解

Go 服务发现:Consul + Nacos + Etcd 集成全解 Go 服务发现Consul Nacos Etcd 集成全解服务发现是微服务的通讯录。Go 后端常用 Consul/Nacos/Etcd本文逐个讲清实现。一、为什么需要服务发现容器化部署时实例 IP 可能变动。注册中心提供实例注册与发现健康检查动态配置多数据中心二、Consul 集成importgithub.com/hashicorp/consul/apicfg:api.DefaultConfig()cfg.Addressconsul:8500cli,_:api.NewClient(cfg)agent:cli.Agent()reg:api.AgentServiceRegistration{ID:svc-1,Name:user-service,Address:127.0.0.1,Port:8080,}agent.ServiceRegister(reg)// 健康检查// 通过 HTTP API 周期性注册// 发现servers,_,_:cli.Health().Service(user-service,,true,nil)for_,s:rangeservers[0].ServiceNodes{fmt.Println(s.Service.Address)}三、Nacos 集成importgithub.com/nacos-group/nacos-sdk-go/clientsimportgithub.com/nacos-group/nacos-sdk-go/voclient,_:clients.NewNamingClient(vo.NacosClientParam{ServerConfigs:[]vo.ServerConfig{{IpAddr:nacos,Port:8848}},})// 注册client.RegisterInstance(vo.RegisterInstanceParam{Ip:127.0.0.1,Port:8080,ServiceName:user-service,})// 发现ips,_:client.SelectInstances(vo.SelectInstancesParam{ServiceName:user-service,})Nacos 是阿里主流方案配置中心与服务注册二合一。四、Etcd 集成importgo.etcd.io/etcd/client/v3cli,_:clientv3.New(clientv3.Config{Endpoints:[]string{etcd:2379}})kv:clientv3.NewKV(cli)// 注册kv.Put(ctx,/services/svc-1,127.0.0.1:8080)// 自动续约lease:clientv3.NewLease(cli)lresp,_:lease.Grant(ctx,10)kv.Put(ctx,/services/svc-1,127.0.0.1:8080,clientv3.WithLease(lresp.ID))keep,_:lease.KeepAlive(ctx,lresp.ID)Etcd 适合 K8s 基础设施。五、对比维度ConsulNacosEtcd部署难度中易中性能中高高配置中心有有需外部健康检查内置内置需自定义中国本土弱强中六、健康检查// Consul HTTP APIagent.CheckRegister(api.AgentCheckRegistration{Name:user-service-http,CheckID:user-service-http,Interval:5*time.Second,HTTP:http://127.0.0.1:8080/health,})发现下游服务时过滤不健康实例。七、实战动态路由 gRPC 服务发现resolver.Register(nacos.ResolverBuilder{})conn,err:grpc.Dial(nacos:///user-service,grpc.WithInsecure(),grpc.WithBlock(),)许多 grpc resolver 包都内置集成。八、踩坑清单网络分区注册中心宕机业务侧自动缓存要保持注册延迟启动晚被 service discovery 遗漏健康检查拉低后业务注意时间窗口数量膨胀服务多时注册中心压力大建议分集群九、生产实战Pushgateway 注册中心// 当 Prometheus 替换为 Spring Discovery 时prometheus.NewGaugeFunc(...)通过服务发现Prometheus 自动抓所有实例指标。十、未来的发现中心K8s Native CoreDNS 自动服务发现Service Mesh 抽象Istio/Linkerd跨云跨 cluster 的统一发现十一、总结与展望选服务发现中心看场景云原生用 Etcd中国本土 阿里生态用 Nacos通用企业用 Consul。未来服务发现的边界在向 sidecar 迁移业务侧愈发透明。十二、参考文献Consul 官方文档Nacos GitHubEtcd v3 文档
返回列表