Go微服务二 Go+nacos 实现配置共享

Go微服务二 Go+nacos 实现配置共享,第1张

创作不易感谢支持。
一条主写Go和PHP的小菜鸟。平常有时间喜欢自己写点东西,如有不对的地方,欢迎大佬指点。 个人博客:太阳上的雨天 地址:http://blog.caixiaoxin.cn 善于分享,希望有助他人. 非常感谢各位大佬的关注和支持

Nacos 简介 作用

发现、配置和管理微服务

特性 服务发现和服务健康监测、动态配置服务动态 DNS 服务服务及其元数据管理 搭建Nacos 安装 压缩包方式

[nacos2.0.4 github下载地址]

mkdir nacos-server
➜ cd Downloads && mv nacos-server-2.0.4.tar.gz /Users/cc/nacos-server
➜ cd /Users/cc/nacos-server && tar -zxvf nacos-server-2.0.4.tar.gz
➜ mv nacos nacos204
➜ cd nacos204/bin	
➜ ./startup.sh -m standalone  # standalone代表着单机模式运行,非集群模式ps aux | grep nacos-server
➜ ./shutdown.sh # 关闭nacos服务
Docker 方式 - 推荐
docker run --name nacos-standalone -e MODE=standalone -e JVM_XMS=512m -e JVM_MAX=512m -e JVM_XMN=256m -p 8848:8848 -d nacos/nacos-server:latest
使用 1. 登陆

浏览器访问: 127.0.0.1:8848/nacos/#/login

账号密码: nacos/nacos

2. 配置 - 新建配置

3. 命名空间

可以新建命名空间,也可以使用默认的public

4. 组 - 隔离

场景:把不同微服务的开发、测试、生成配置文件隔离(相同名字的配置文件,属于不同的组)

5. Data ID - 配置集

一个配置集就是一个配置文件, 还可以将db,server内容等配置分开,实现更灵活的管理

Go集成nacos

https://github.com/nacos-group/nacos-sdk-go/blob/master/README_CN.md

1. 安装
go get -u github.com/nacos-group/nacos-sdk-go

Demo:

package main

import (
	"fmt"
	"time"

	"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"
)

func main() {
	// Note:我们可以配置多个ServerConfig,客户端会对这些服务端做轮询请求

	clientConfig := constant.ClientConfig{
		TimeoutMs:           5000,    // 请求Nacos服务端的超时时间,默认是10000ms
		NamespaceId:         "",      // 如果需要支持多namespace,我们可以场景多个client,它们有不同的NamespaceId。当namespace是public时,此处填空字符串。
		CacheDir:            "cache", // 缓存service信息的目录,默认是当前运行目录
		NotLoadCacheAtStart: false,   // 在启动的时候不读取缓存在CacheDir的service信息
		LogDir:              "log",   // 日志存储路径
		LogLevel:            "debug", // 日志默认级别,值必须是:debug,info,warn,error,默认值是info
	}

	serverConfigs := []constant.ServerConfig{
		{
			IpAddr:      "127.0.0.1",
			ContextPath: "/nacos",
			Port:        8848,
			Scheme:      "http",
		},
	}

	// 创建动态配置客户端的另一种方式 (推荐)
	// 创建动态配置客户端的另一种方式 (推荐)
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &clientConfig,
			ServerConfigs: serverConfigs,
		},
	)
	if err != nil {
		panic(err)
	}

	content, err := configClient.GetConfig(vo.ConfigParam{
		DataId: "config.yaml",
		Group:  "dev", // 开发环境配置文件
	})

	if err != nil {
		panic(err)
	}
	fmt.Println(content)

	// 监听配置变化
	configClient.ListenConfig(vo.ConfigParam{
		DataId: "config.yaml",
		Group:  "dev",
		OnChange: func(namespace, group, dataId, data string) {
			fmt.Println("配置文件发生了变化...")
			fmt.Println("group:" + group + ", dataId:" + dataId + ", data:" + data)
		},
	})

	time.Sleep(300 * time.Second)
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/995318.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存