Nacos配置中心使用(nacos 配置管理)

Nacos配置中心使用(nacos 配置管理)当微服务部署的实例越来越多 达到数十 数百时 逐个修改微服务配置就会让人抓狂 而且很容易出错 我们需要一种统一配置管理方案 可以集中管理所有实例的配置 Nacos 一方面可以将配置集中管理 另一方可以在配置变更时 及时通知微服务 实现配置的热更新 启动微服务时的流程 如图 微服务要拉取 nacos 中管理的配置 并且与本地的 application yml 配置合并 才能完成项目启动

大家好,我是讯享网,很高兴认识大家。



当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。image
讯享网

Nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。

启动微服务时的流程:如图

微服务要拉取nacos中管理的配置,并且与本地的application.yml配置合并,才能完成项目启动。

但如果尚未读取application.yml,又如何得知nacos地址呢?

因此spring引入了一种新的配置文件:bootstrap.yaml文件,会在application.yml之前被读取,流程如下:

bootstrap.yaml文件的优先级高于application.yaml

image

注意:项目的核心配置,需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好。

image

然后在弹出的表单中,填写配置信息:

Data Id命名规则:[服务名称]-[profile].[后缀名] 如:userservice-dev.yaml 一定要遵守

image

①微服务都要导入依赖

 

讯享网

②添加bootstrap.yaml

这里的取名一定要和nacos配置的一样

讯享网

这里会根据spring.cloud.nacos.server-addr获取nacos地址,再根据

作为文件id,来读取配置。

本例中,就是去读取:

image

③业务中读取nacos配置中心的配置

这里的读取都实现了配置热更新,即更新nacos配置文件无需重启服务

有两种方式,二选一即可。

  • 方式一:@RefreshScope
    1. 使用@Value注解得到nacos配置文件信息
    2. 在@Value注入的变量所在类上添加注解@RefreshScope
    3. 使用nacos配置文件信息完成业务

image

  • 方式二:@ConfigurationProperties注解代替@Value注解【推荐】
    1. 创建一个配置类,在类上面加入@Component @Data @ConfigurationProperties

      !!!注意:这里的prefix="变量是配置文件中的前缀名",String dateformat需要取名和配置文件中一致

      nacos配置文件:

image

 
  1. 业务中注入nacos配置文件类,并调用配置信息完成业务
    讯享网

引入:有些配置在开发和测试环境都是一样的就可以使用配置共享

其实微服务启动时,会去nacos读取多个配置文件,例如:

  • ,例如:userservice-dev.yaml
  • ,例如:userservice.yaml

而不包含环境,因此可以被多个环境共享。(即[spring.application.name]这个名字下的所有环境都会读取到该配置文件)

举例:有两个服务分别配置在userservice的dev和test环境运行;此时在nacos配置了一个userservice.yaml 和 userservice-dev.yaml;

结果:两个服务都能读到userservice.yaml、但只有dev环境的才可以读到userservice-dev.yaml

当nacos、服务本地同时出现相同属性时,优先级有高低之分:nacos的局部 > nacos全局 > 服务本地
【当有相同配置的时候优先级高的覆盖低的】

image

注意:搭建集群后,服务访问的nacos接口就改成访问nginx的接口。 如nginx是80接口,那服务的bootstrap.yaml配置文件访问nacos的接口改成80

官方给出的Nacos集群图:
image

其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。

我们计划的集群结构:
image

三个nacos节点的地址:

节点 ip port nacos1 192.168.150.1 8845 nacos2 192.168.150.1 8846 nacos3 192.168.150.1 8847

搭建集群的基本步骤:

  • 搭建数据库,初始化数据库表结构
  • 下载nacos安装包
  • 配置nacos
  • 启动nacos集群
  • nginx反向代理

2.1.初始化数据库

Nacos默认数据存储在内嵌数据库Derby中,不属于生产可用的数据库。

官方推荐的**实践是使用带有主从的高可用数据库集群,主从模式的高可用数据库可以参考传智教育的后续高手课程。

这里我们以单点的数据库为例来讲解。

首先新建一个数据库,命名为nacos,而后导入下面的SQL:

 

2.2.下载nacos

nacos在GitHub上有下载地址:https://github.com/alibaba/nacos/tags,可以选择任意版本下载。

本例中才用1.4.1版本:

image

2.3.配置Nacos

将这个包解压到任意非中文目录下,如图:

image

目录说明:

  • bin:启动脚本
  • conf:配置文件

进入nacos的conf目录,修改配置文件cluster.conf.example,重命名为cluster.conf:

image

然后添加内容:如果里面有ip地址就删除换成如下(在生产环境就需要改成服务器地址)

讯享网

然后修改application.properties文件,添加数据库配置

 

2.4.启动

将nacos文件夹复制三份,分别命名为:nacos1、nacos2、nacos3

image

然后分别修改三个文件夹中的application.properties,

nacos1:

讯享网

nacos2:

 

nacos3:

讯享网

然后分别启动三个nacos节点:

 

2.5.nginx反向代理

找到课前资料提供的nginx安装包:

image

解压到任意非中文目录下:

image

修改conf/nginx.conf文件,添加配置如下:添加到http内部

讯享网

在nginx.exe的目录下打开cmd启动nginx: ;而后在浏览器访问:http://localhost/nacos即可。

2.6 服务端该端口

所有服务的代码中bootstrap.yaml/application.yml文件配置如下:

 

2.7.优化

  • 实际部署时,需要给做反向代理的nginx服务器设置一个域名,这样后续如果有服务器迁移nacos的客户端也无需更改配置.
  • Nacos的各个节点应该部署到多个不同服务器,做好容灾和隔离

小讯
上一篇 2025-06-05 23:46
下一篇 2025-05-15 23:34

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/140315.html