go语言接入nacos

使用go接入现有分布式服务器 官方中文文档
(边写边弄博客)

直接上代码把 nacos很多配置我都用的默认的。所以我这里也大部分是默认配置

import (
	"fmt"
	"github.com/nacos-group/nacos-sdk-go/clients"
	"github.com/nacos-group/nacos-sdk-go/clients/naming_client"
	"github.com/nacos-group/nacos-sdk-go/common/constant"
	"github.com/nacos-group/nacos-sdk-go/vo"
)


func NacosInit(){
     

	clientConfig := constant.ClientConfig{
     
		NamespaceId:         "", // 如果需要支持多namespace,我们可以场景多个client,它们有不同的NamespaceId。当namespace是public时,此处填空字符串。
		TimeoutMs:           5000,
		NotLoadCacheAtStart: true,
		LogDir:              "log",
		CacheDir:            "cache",
		RotateTime:          "1h",
		MaxAge:              3,
		LogLevel:            "debug",
	}

	serverConfigs := []constant.ServerConfig{
     
		{
     
			IpAddr:      "127.0.0.1", //此处可以使用网址和ip
			ContextPath: "/nacos",
			Port:        8848,
			Scheme:      "http",
		},
	}


	// 将服务注册到nacos
	namingClient,_ := clients.NewNamingClient(
		vo.NacosClientParam{
     
			ClientConfig:  &clientConfig,
			ServerConfigs: serverConfigs,
		},
	)

	
	namingClient.RegisterInstance(vo.RegisterInstanceParam{
     
		Ip:          "127.0.0.1",
		Port:        8848,
		ServiceName: "im-nacos-go",
		Weight:      10,
		Enable:      true,
		Healthy:     true,
		Ephemeral:   true,
		Metadata:    map[string]string{
     "idc":"shanghai"},
		ClusterName: "DEFAULT", // 默认值DEFAULT
		GroupName:   "DEFAULT_GROUP",   // 默认值DEFAULT_GROUP
	})

	//获取nacos存在服务的信息
	instance, err := namingClient.SelectOneHealthyInstance(vo.SelectOneHealthInstanceParam{
     
		ServiceName: "sso",
		GroupName:   "DEFAULT_GROUP",             // 默认值DEFAULT_GROUP
		Clusters:    []string{
     "DEFAULT"}, // 默认值DEFAULT
	})
	fmt.Println(instance)
	fmt.Println(err)
configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
     
			ClientConfig:  &clientConfig,
			ServerConfigs: serverConfigs,
		},
	)
	//获取配置
	configClientcontent, err := configClient.GetConfig(vo.ConfigParam{
     
		DataId: "im-nacos-go",
		Group:  "DEFAULT_GROUP"})
	fmt.Println(configClientcontent)
		fmt.Println(err)
	
	//解析yml格式的数据完成初始化,上面的配置也可改成监听器
	v := viper.New()
	v.SetConfigType("yaml")
	v.ReadConfig(strings.NewReader(configClientcontent))
	logoText :=  v.GetString("logo")
	fmt.Println(logoText)
}

然后在启动的时候调用这个函数就可以注册到nacos中了,
至于获取服务看自己需求拉(建议看官方文档,看起来还比较轻松)

你可能感兴趣的:(后端开发,go)