discover.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package nacos
  2. import (
  3. "git.shuncheng.lu/bigthing/gocommon/pkg/conf"
  4. "git.shuncheng.lu/bigthing/gocommon/pkg/internal/nacos"
  5. "git.shuncheng.lu/bigthing/gocommon/pkg/internal/util"
  6. "github.com/nacos-group/nacos-sdk-go/vo"
  7. )
  8. var (
  9. discoverClientInfo *nacos.NamingInfo
  10. )
  11. func InitNacosDiscoverClient() error {
  12. info, err := nacos.NewNacosNameClient(nacos.NacosDiscover, conf.SetAndAssertNil)
  13. if err != nil {
  14. return err
  15. }
  16. discoverClientInfo = info
  17. return nil
  18. }
  19. func GetHost(serverName string) (string, error) {
  20. var (
  21. serviceName string
  22. groupName string
  23. )
  24. serviceName = conf.GetString(serverName, "service_name")
  25. groupName = conf.GetString(serverName, "group_name", "DEFAULT_GROUP")
  26. clusterStr := conf.GetString(serverName, "clusters")
  27. if clusterStr == "" {
  28. return getHost(vo.SelectOneHealthInstanceParam{
  29. ServiceName: serviceName,
  30. GroupName: groupName,
  31. })
  32. }
  33. return getHost(vo.SelectOneHealthInstanceParam{
  34. Clusters: util.SplitIgnoreSpace(clusterStr, ","), // 默认是 DEFAULT
  35. ServiceName: serviceName,
  36. GroupName: groupName,
  37. })
  38. }
  39. func getHost(param vo.SelectOneHealthInstanceParam) (string, error) {
  40. instance, err := discoverClientInfo.SelectOneHealthyInstance(param)
  41. if err != nil {
  42. return "", err
  43. }
  44. return instance.Ip + ":" + util.Uint642String(instance.Port), nil
  45. }
  46. //获取服务域名
  47. func GetDomainHost(serverName string) (string, error) {
  48. domainAddr := conf.GetString(serverName, "domain_addr")
  49. if domainAddr == "" {
  50. return GetHost(serverName)
  51. }
  52. return domainAddr, nil
  53. }