• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
chenz1hao
帮助1

在项目中,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中的配置信息:

  1.  
    package main
  2.  
     
  3.  
    import (
  4.  
    "fmt"
  5.  
    "github.com/nacos-group/nacos-sdk-go/v2/clients"
  6.  
    "github.com/nacos-group/nacos-sdk-go/v2/common/constant"
  7.  
    "github.com/nacos-group/nacos-sdk-go/v2/vo"
  8.  
    )
  9.  
     
  10.  
    func main() {
  11.  
    sc := []constant.ServerConfig{
  12.  
    *constant.NewServerConfig("192.168.1.120", 8848, constant.WithContextPath("/nacos")),
  13.  
    }
  14.  
     
  15.  
    //create ClientConfig
  16.  
    cc := *constant.NewClientConfig(
  17.  
    constant.WithNamespaceId("efb95058-a55f-4840-a4f2-2c5faa2b0928"),
  18.  
    constant.WithTimeoutMs(5000),
  19.  
    constant.WithNotLoadCacheAtStart(true),
  20.  
    constant.WithLogDir("/tmp/nacos/log"),
  21.  
    constant.WithCacheDir("/tmp/nacos/cache"),
  22.  
    constant.WithLogLevel("debug"),
  23.  
    )
  24.  
    client, err := clients.NewConfigClient(
  25.  
    vo.NacosClientParam{
  26.  
    ClientConfig: &cc,
  27.  
    ServerConfigs: sc,
  28.  
    },
  29.  
    )
  30.  
     
  31.  
    if err != nil {
  32.  
    panic(err)
  33.  
    }
  34.  
     
  35.  
    content, err := client.GetConfig(vo.ConfigParam{
  36.  
    DataId: "user-web.yaml",
  37.  
    Group: "dev",
  38.  
    })
  39.  
    fmt.Println("GetConfig,config :" content)
  40.  
     
  41.  
    }

 这里面核心的 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两个端口,具体方法可以参考下面这篇:

至此,DEMO代码运行正常

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfhiie
系列文章
更多 icon
同类精品
更多 icon
继续加载