Nacos获取动态配置的小坑记录(Docker安装nacos2版本的时候需要配置多个端口)

在项目中,Nacos经常用来作为配置中心或者服务注册中心,虽然Nacos是用Java写的,但是同时Nacos官方提供了多语言的客户端SDK,因此Go来做微服务的时候也是会优先考虑;

我在集成Nacos到项目前,先进行了测试,我是在虚拟机中docker安装nacos服务端:

docker run  --name nacos-standalone -e MODE=standalone -e JVM_XMS=512m -e JVM_XMX=512m -e JVM_XMN=256m -p8848:8848 -d nacos/nacos-server:latest

安装完成后,本机上访问 xxx:8848/nacos 没有问题:

于是尝试在Go里面获取在配置中心中注册的配置,比如现在这里获取user-web.yaml在dev group中的配置信息:

package main

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

func main() {
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("192.168.1.120", 8848, constant.WithContextPath("/nacos")),
	}

	//create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId("efb95058-a55f-4840-a4f2-2c5faa2b0928"),
		constant.WithTimeoutMs(5000),
		constant.WithNotLoadCacheAtStart(true),
		constant.WithLogDir("/tmp/nacos/log"),
		constant.WithCacheDir("/tmp/nacos/cache"),
		constant.WithLogLevel("debug"),
	)
	client, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)

	if err != nil {
		panic(err)
	}

	content, err := client.GetConfig(vo.ConfigParam{
		DataId: "user-web.yaml",
		Group:  "dev",
	})
	fmt.Println("GetConfig,config :" + content)

}

 这里面核心的 server的ip、port、namespace(可以同时监听多个namespace,这里我只监听一个)、然后配置文件的DataId和Group,这几个信息正确了就应该能正常读取到配置,但是问题是我这边运行会报一个错误:

Client not connected,current status:STARTING.

而且在输出的日志文件中,它显示在连接 9848 这个端口,按理说nacos的默认端口配置的不是8848吗,为什么会去连9848,后来在官方文档里发现了问题,目前的最新版本是nacos2,nacos2新增了gRPC通信方式,要额外占用两个端口,9848和9849,这是通过我们配置的默认端口8848偏移1000和1001得到的,然后前面docker中安装nacos的时候只转发了8848这个端口,9848和9949是没有开放的,自然请求不到这两个端口

 解决办法就是:给nacos docker添加9848 和 9849两个端口,具体方法可以参考下面这篇:

添加docker容器端口(映射宿主机和docker容器中的端口)_Looho_的博客-CSDN博客_docker 增加容器端口

至此,DEMO代码运行正常

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值