Nacos引擎Golang客户端接入文档 Nacossdkgo Nacossdkgo是Nacos的Go语言客户端,它实现了服务发现和动态配置的功能 使用限制 支持Go>v1.15版本 支持Nacos>2.x版本 安装 安装开源SDK go get github.com/nacosgroup/nacossdkgo/v2 快速使用 ClientConfig constant.ClientConfig{ TimeoutMs uint64 // 请求Nacos服务端的超时时间,默认是10000ms NamespaceId string // ACM的命名空间Id CacheDir string // 缓存service信息的目录,默认是当前运行目录 UpdateThreadNum int // 监听service变化的并发数,默认20 NotLoadCacheAtStart bool // 在启动的时候不读取缓存在CacheDir的service信息 UpdateCacheWhenEmpty bool // 当service返回的实例列表为空时,不更新缓存,用于推空保护 Username string // Nacos服务端的API鉴权Username Password string // Nacos服务端的API鉴权Password LogDir string // 日志存储路径 RotateTime string // 日志轮转周期,比如:30m, 1h, 24h, 默认是24h MaxAge int64 // 日志最大文件数,默认3 LogLevel string // 日志默认级别,值必须是:debug,info,warn,error,默认值是info } ServerConfig constant.ServerConfig{ ContextPath string // Nacos的ContextPath,默认/nacos,在2.0中不需要设置 IpAddr string // Nacos的服务地址 Port uint64 // Nacos的服务端口 Scheme string // Nacos的服务地址前缀,默认http,在2.0中不需要设置 GrpcPort uint64 // Nacos的 grpc 服务端口, 默认为 服务端口+1000, 不是必填 } 我们可以配置多个ServerConfig,客户端会对这些服务端做轮询请求 服务发现 注销实例:DeregisterInstance success, err : namingClient.DeregisterInstance(vo.DeregisterInstanceParam{ Ip: "${ipAddr}", Port: 8848, ServiceName: "demo.go", Ephemeral: true, Cluster: "clustera", // 默认值DEFAULT GroupName: "groupa", // 默认值DEFAULTGROUP }) 获取服务信息:GetService services, err : namingClient.GetService(vo.GetServiceParam{ ServiceName: "demo.go", Clusters: []string{"clustera"}, // 默认值DEFAULT GroupName: "groupa", // 默认值DEFAULTGROUP }) 获取所有的实例列表:SelectAllInstances services, err : namingClient.GetService(vo.GetServiceParam{ ServiceName: "demo.go", Clusters: []string{"DEFAULT"}, // 默认值 GroupName: "groupa", // 默认值DEFAULTGROUP }) 获取实例列表 :SelectInstances // SelectInstances 只返回满足这些条件的实例列表:healthy${HealthyOnly},enabletrue 和weight>0 instances, err : namingClient.SelectInstances(vo.SelectInstancesParam{ ServiceName: "demo.go", GroupName: "groupa", // 默认值DEFAULTGROUP Clusters: []string{"clustera"}, // 默认值DEFAULT HealthyOnly: true, }) 获取一个健康的实例(加权随机轮询):SelectOneHealthyInstance // SelectOneHealthyInstance将会按加权随机轮询的负载均衡策略返回一个健康的实例 // 实例必须满足的条件:healthtrue,enabletrue and weight>0 instance, err : namingClient.SelectOneHealthyInstance(vo.SelectOneHealthInstanceParam{ ServiceName: "demo.go", GroupName: "groupa", // 默认值DEFAULTGROUP Clusters: []string{"clustera"}, // 默认值DEFAULT }) 监听服务变化:Subscribe // Subscribe keyserviceName+groupName+cluster // 注意:我们可以在相同的key添加多个SubscribeCallback. err : namingClient.Subscribe(vo.SubscribeParam{ ServiceName: "rccdemo", GroupName: "DEFAULTGROUP", // 默认值DEFAULTGROUP Clusters: []string{"clustera"}, // 默认值DEFAULT SubscribeCallback: func(services []model.Instance, err error) { log.Printf("nn callback return services:%s nn", utils.ToJsonString(services)) }, })