go语言操作之nacos配置中心

 更新时间:2023年06月12日 09:41:34   作者:中二的灰太狼  
这篇文章主要介绍了go语言操作之nacos配置中心,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

go语言nacos配置中心

nacos配置中心,由于是阿里开发的,所以官方文档支持中文,非常友好,这是官方的go的SDK,已经非常详细了

官方SDK网址

下面是例子,演示了golang如何使用从nacos获取配置的信息,返回的是字符串

package main
import (
	"fmt"
	"github.com/nacos-group/nacos-sdk-go/clients"
	"github.com/nacos-group/nacos-sdk-go/common/constant"
	"github.com/nacos-group/nacos-sdk-go/vo"
	"time"
)
func main() {
	// 至少一个ServerConfig
	serverConfigs := []constant.ServerConfig{
		{
			IpAddr:      "192.168.72.146",
			Port:        8848,
		},
	}
	// 创建clientConfig
	clientConfig := constant.ClientConfig{
		NamespaceId:         "1cf91be1-d0e3-4494-aef7-b3cb8177e04e", // 如果需要支持多namespace,我们可以场景多个client,它们有不同的NamespaceId。当namespace是public时,此处填空字符串。
		TimeoutMs:           5000,
		NotLoadCacheAtStart: true,
		LogDir:              "tmp/nacos/log",
		CacheDir:            "tmp/nacos/cache",
		RotateTime:          "1h",
		MaxAge:              3,
		LogLevel:            "debug",
	}
	// 创建动态配置客户端的另一种方式 (推荐)
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &clientConfig,
			ServerConfigs: serverConfigs,
		},
	)
	if err != nil {
		panic(err)
	}
	//获取配置信息
	//content, err := configClient.GetConfig(vo.ConfigParam{
	//	DataId: "user-web.yaml",
	//	Group:  "dev"})
	//if err != nil {
	//	fmt.Println("GetConfig err: ",err)
	//}
	//监听配置
	err = configClient.ListenConfig(vo.ConfigParam{
		DataId: "user-web.yaml",
		Group:  "dev",
		OnChange: func(namespace, group, dataId, data string) {
			fmt.Println("group:" + group + ", dataId:" + dataId + ", data:" + data)
		},
	})
	if err!=nil{
		return
	}
	time.Sleep(time.Second*1000)
}

结果:

go使用nacos配置中心进行服务组件配置

go使用nacos配置中心进行服务组件配置.

这里因为没用viper 进行本地配置文件的解析.

所以使用的直接是nacos的明文配置.

zhe

func initNacosFrom() {
   serverConfigs := []constant.ServerConfig{ //指定nacos服务地址.配置连接信息
      {
         //IpAddr: Nacos.Host, //这里是指定nacos的服务连接地址
         //Port:   Nacos.Port, //指定端口号
         //
         IpAddr: "192.168.75.6", //这里是指定nacos的服务连接地址
         Port:   8848,           //指定端口号
      },
   }
   clientConfig := constant.ClientConfig{ //配置客户端配置信息.用来做客户端初始化配置.
      TimeoutMs:   5000,                                   //连接超时时间
      NamespaceId: "8774e75a-fbe8-4b29-8194-4e70f482924d", //这里写的是命名空间的地址.用哪个就写哪个,这里用的是dev的命名空间
      //NamespaceId:          , //这里写的是命名空间的地址.用哪个就写哪个,这里用的是dev的命名空间
      CacheDir:             "nacos/cache", //nacos缓存目录
      NotLoadCacheAtStart:  true,          //配置是否在服务启动时直接加载缓存??
      UpdateCacheWhenEmpty: false,         //配置当缓存为空的时候进行主动更新
      LogDir:               "nacos/log",   //日志目录
      LogLevel:             "debug",       //日志级别
   }
   configClient, err := clients.CreateConfigClient(map[string]interface{}{ //根据nacos的地址信息和需要的配置页面信息生成一个客户端.
      "serverConfigs": serverConfigs,
      "clientConfig":  clientConfig,
   })
   if err != nil {
      panic(err)
   }
   content, err := configClient.GetConfig(vo.ConfigParam{ //读取在页面上配置好de相关信息.
      // 这里用的是dev分组中的account_web配置.以后这里的配置可以使用viper进行参数配置.
      DataId: "account_all.json",
      Group:  "dev",
   })
   if err != nil {
      panic(err)
   }
   err = json.Unmarshal([]byte(content), &AppConf)
   if err != nil {
      fmt.Println(err)
      zap.S().Error("反序列化错误")
   }
}

这里声明的方法信息用在初始化配置时使用,按在init函数中。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Go语言深度拷贝工具deepcopy的使用教程

    Go语言深度拷贝工具deepcopy的使用教程

    今天给大家推荐的工具是deepcopy,一个可以对指针、接口、切片、结构体、Map都能进行深拷贝的工具,感兴趣的小伙伴快跟随小编一起学习学习
    2022-09-09
  • Go实现短url项目的方法示例

    Go实现短url项目的方法示例

    这篇文章主要介绍了Go实现短url项目的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Go Plugins插件的实现方式

    Go Plugins插件的实现方式

    目前 Plugins 仅在 Linux、FreeBSD 和 macOS 上受支持,且只支持 golang 调用,今天通过本文给大家介绍Go Plugins插件的实现方式,感兴趣的朋友一起看看吧
    2021-08-08
  • Go语言reflect.TypeOf()和reflect.Type通过反射获取类型信息

    Go语言reflect.TypeOf()和reflect.Type通过反射获取类型信息

    这篇文章主要介绍了Go语言reflect.TypeOf()和reflect.Type通过反射获取类型信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Go中strings的常用方法详解

    Go中strings的常用方法详解

    这篇文章主要介绍了Go中strings的常用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Golang语言实现gRPC的具体使用

    Golang语言实现gRPC的具体使用

    本文主要介绍了Golang语言实现gRPC的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 浅析Go语言中的缓冲区及其在fmt包中的应用

    浅析Go语言中的缓冲区及其在fmt包中的应用

    这篇文章主要为大家详细介绍了Go语言中的缓冲区及其在fmt包中的应用的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2024-01-01
  • golang 获取当前执行程序路径的操作

    golang 获取当前执行程序路径的操作

    这篇文章主要介绍了golang 获取当前程序执行路径的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 关于golang高并发的实现与注意事项说明

    关于golang高并发的实现与注意事项说明

    这篇文章主要介绍了关于golang高并发的实现与注意事项说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • Go打包附件内容到执行文件的方法

    Go打包附件内容到执行文件的方法

    处于种种原因, 我们不希望这部分额外的内容以附件的形式出现, 有没有什么办法能够将附件内容直接打包进可执行文件中呢,下面小编给大家介绍下Go打包附件内容到执行文件的方法,感兴趣的朋友一起看看吧
    2023-03-03

最新评论