package nacos import ( "git.shuncheng.lu/bigthing/gocommon/pkg/conf" "git.shuncheng.lu/bigthing/gocommon/pkg/internal/nacos" "git.shuncheng.lu/bigthing/gocommon/pkg/internal/util" "github.com/nacos-group/nacos-sdk-go/vo" ) var ( discoverClientInfo *nacos.NamingInfo ) func InitNacosDiscoverClient() error { info, err := nacos.NewNacosNameClient(nacos.NacosDiscover, conf.SetAndAssertNil) if err != nil { return err } discoverClientInfo = info return nil } func GetHost(serverName string) (string, error) { var ( serviceName string groupName string ) serviceName = conf.GetString(serverName, "service_name") groupName = conf.GetString(serverName, "group_name", "DEFAULT_GROUP") clusterStr := conf.GetString(serverName, "clusters") if clusterStr == "" { return getHost(vo.SelectOneHealthInstanceParam{ ServiceName: serviceName, GroupName: groupName, }) } return getHost(vo.SelectOneHealthInstanceParam{ Clusters: util.SplitIgnoreSpace(clusterStr, ","), // 默认是 DEFAULT ServiceName: serviceName, GroupName: groupName, }) } func getHost(param vo.SelectOneHealthInstanceParam) (string, error) { instance, err := discoverClientInfo.SelectOneHealthyInstance(param) if err != nil { return "", err } return instance.Ip + ":" + util.Uint642String(instance.Port), nil } //获取服务域名 func GetDomainHost(serverName string) (string, error) { domainAddr := conf.GetString(serverName, "domain_addr") if domainAddr == "" { return GetHost(serverName) } return domainAddr, nil }