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函数中。

总结

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

相关文章

  • golang 对私有函数进行单元测试的实例

    golang 对私有函数进行单元测试的实例

    这篇文章主要介绍了golang 对私有函数进行单元测试的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • 并发安全本地化存储go-cache读写锁实现多协程并发访问

    并发安全本地化存储go-cache读写锁实现多协程并发访问

    这篇文章主要介绍了并发安全本地化存储go-cache读写锁实现多协程并发访问,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Golang字符串变位词示例详解

    Golang字符串变位词示例详解

    这篇文章主要给大家介绍了关于GoLang字符串变位词的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-10-10
  • Golang中的包及包管理工具go mod详解

    Golang中的包及包管理工具go mod详解

    这篇文章主要介绍了Golang中的包及包管理工具go mod,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Go语言实现简易命令行定时提醒程序的示例代码

    Go语言实现简易命令行定时提醒程序的示例代码

    在日常工作和学习中,我们常常需要一个小工具来提醒自己,本文将用 Go 写一个轻量级的 命令行定时提醒程序,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2025-09-09
  • 使用Gin框架返回JSON、XML和HTML数据

    使用Gin框架返回JSON、XML和HTML数据

    Gin是一个高性能的Go语言Web框架,它不仅提供了简洁的API,还支持快速的路由和中间件处理,在Web开发中,返回JSON、XML和HTML数据是非常常见的需求,本文将介绍如何使用Gin框架来返回这三种类型的数据,需要的朋友可以参考下
    2024-08-08
  • golang使用http client发起get和post请求示例

    golang使用http client发起get和post请求示例

    这篇文章主要介绍了golang使用http client发起get和post请求示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Golang 实现插入排序的方法示例(2种)

    Golang 实现插入排序的方法示例(2种)

    这篇文章主要介绍了Golang 实现插入排序的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • GO语言实现串口简单通讯

    GO语言实现串口简单通讯

    本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11
  • 深入了解Go语言中web框架的中间件运行机制

    深入了解Go语言中web框架的中间件运行机制

    大家在使用iris框架搭建web系统时,一定会用到中间件。那么你了解中间件的运行机制吗?你知道为什么在iris和gin框架的请求处理函数中要加c.Next()函数吗?本文就和大家一起探究该问题的答案
    2023-02-02

最新评论