分布式配置nacos搭建踩坑指南(上)

Posted 王三丰的网络日志

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式配置nacos搭建踩坑指南(上)相关的知识,希望对你有一定的参考价值。

  网上有不少nacos搭建的文章,阿里巴巴甚至出了一本<<Spring Cloud Alibaba从入门到实战>>的书,书名如下:

 

  里面有讲到nacos分布式配置。不清楚是作者没讲清楚,还是nacos,spring cloud版本等的问题,按照这些配置来搭建,会碰到各种各样的问题,让你看不到预期的效果。本文章分上和下两篇,上篇讲典型的踩坑,下篇讲详细的搭建,并附上源代码。

 踩坑1

  现象:nacos安装文件下回来了,在windows dos下运行:startup.cmd,发现报异常:org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat,截图如下

 

  解决方案:这种情况是由于在单机运行,我们需要指定单机运行模式,正确运行方式是:.\\startup.cmd -m standalone

 

踩坑2

  现象:nacos运行起来了,在Spring Cloud中也能够读取到nacos中配置的数据,但当nacos刷新数据后,在Spring Cloud中居然读不到,SpringCloud 控制台Console输出如下:

 o.s.c.e.event.RefreshEventListener :Refresh keys changed: [].仔细观察日志,发现应该是没有keys刷新,要不然Refresh keys changed的数组不会是一个空值[].

  解决方案:在bootstrap.properties里,一定要加上下面这几行:

spring.cloud.nacos.config.namespace=bd1caf11-e4f1-4dd0-9a4b-2c32041c64e2 //指明命名空间id

spring.cloud.nacos.config.extension-configs[0].data-id=nacos-config-sample.properties//指明properties的名称,否则获取不到刷新后的配置

spring.cloud.nacos.config.extension-configs[0].refresh=true //设置刷新refresu=true

 上面的几个配置说明如下:

 1)spring.cloud.nacos.config.namespace=bd1caf11-e4f1-4dd0-9a4b-2c32041c64e2   

  新建一个namespace,记住它的id,然后再此namespace下新建配置,例如下面新建了一个名为testnamespace的namespace,它的ID为bd1caf11-e4f1-4dd0-9a4b-2c32041c64e2,在这个namespace下,新建了一个名为nacos-config-sample.properties的配置。那么在spring cloud的bootstrap.properties里需要指明config的namespace.

 

2)spring.cloud.nacos.config.extension-configs[0].data-id=nacos-config-sample.properties

  设置对应的data-id,格式是:应用名称.properties,例如项目名为:nacos-config-sample,故data-id为nacos-config-sample.properties。如下所示:

 

 

 

3)spring.cloud.nacos.config.extension-configs[0].refresh=true 

  这个配置必须加上,否则获取不到刷新后的配置。

 


 

 

 

 

 

 

以上是关于分布式配置nacos搭建踩坑指南(上)的主要内容,如果未能解决你的问题,请参考以下文章

Nacos入门指南01 - Nacos是什么?

深入浅出SpringCloud原理及实战「SpringCloud-Alibaba系列」微服务模式搭建系统基础架构实战指南及版本规划踩坑分析

分布式架构之Nacos注册&配置中心搭建

nacos初体验-踩坑与填坑篇

Intellij IDEA下载安装教程和搭建springboot开发环境及踩坑指南(超详细图文教程)

Nacos Server Docker部署集群踩坑