Nacos官方文档:什么是 Nacos
什么是nacos?
Nacos(中文名为"注册中心和配置中心")是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。它提供了服务注册与发现、配置管理和服务管理等核心功能,是构建和管理微服务架构的基础设施之一。
Nacos 主要提供以下功能:
-
服务注册与发现:微服务架构中,各个服务实例需要注册到注册中心,并通过注册中心获取其他服务实例的地址信息,实现服务之间的发现和调用。
-
配置管理:Nacos 可以作为统一的配置中心,管理应用程序的配置信息。它支持动态配置更新,可以在运行时动态修改配置,并且能够实现配置的推送,使得配置的变更能够及时生效。
-
服务健康监测:Nacos 可以对注册的服务进行健康状态的监测,通过心跳检测和实时的健康状态上报,确保服务实例的可用性。
-
动态路由和负载均衡:Nacos 集成了服务网格技术,可以提供动态路由和负载均衡的能力,帮助应用程序实现流量的动态调度和负载均衡。
-
分布式配置共享:Nacos 支持将配置共享给多个应用程序,实现多个应用程序共享同一份配置,并支持配置的版本管理,方便应用程序的升级和回滚。
一、nacos文件下载
-
参考组件版本依赖:版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub,找到自己搭建Spring Cloud Alibaba项目使用版本对应nacos版本
-
点进入找到下载文件地址
-
tar为Linux系统使用、zip为win/mac系统使用
-
点击对应文件下载
二、nacos部署
-
下载完成后解压打开
-
进入bin,启动文件默认配置为集群模式,需修改为startup.cmd中的配置,set MODE="standalone",单机模式
-
执行命令sh startup.sh -m standalone 启动
如果输出结果如下图,则把解压好的nacos文件删除,手动解压会导致这种情况,需要从第2步开始重新来
-
成功以后进入可视化页面http://127.0.0.1:8848/nacos/
三、nacos搭建
-
修改pom文件
-
在要使用nacos的服务中,添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
-
-
修改配置文件
server: port: 9001 //服务端口号 spring: application: name: order-nacos //注册名称 cloud: nacos: serverAddr: 127.0.0.1:9100 //注册nacos地址 config: import: - nacos:nacos-config-example.properties?refresh=true //引入配置文件
-
启动服务测试
-
服务调用测试
-
启动多个服务
-
按照nacos示例代码,调用测试
-
四、集群搭建
参考文档:集群部署说明
-
在对应服务器上下载nacos安装
-
修改conf/application.properties配置文件
-
端口号:server.port=8848
-
放开数据源配置:spring.datasource.platform=mysql
-
放开数据源数量配置:db.num=1
-
放开数据源连接配置:db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
-
放开数据源账号配置db.user.0=nacos
-
放开数据源密码配置db.password.0=nacos
-
-
执行数据库脚本
-
将conf/nacos-mysql.sql数据库脚本在对应数据库中执行
-
-
修改cluster.conf文件
-
将conf/cluster.conf.example文件复制并重命名cluster.conf,将nacos集群服务器的ip:端口写在配置文件中
-
-
修改bin/startup.sh配置,为机器模式MODE="cluster"
-
根据机器硬件,调整xms、xmx等配置
-
-
按照2/3/4/5/6步骤修改其他集群服务器,然后./startup.sh启动
-
启动测试nacos的管理界面查看
-
安装nginx,对nacos集群服务器,做负载均衡
-
yml代码配置文件修改,配置项server-addr为nginx代理地址
五、Nacos-config配置
-
创建配置文件
-
在Nacos管理界面进入配置管理/配置列表点击+号可创建配置文件
-
填写Data ID(文件名)
-
完整格式如下:${prefix}-${spring.profiles.active}.${file-extension}
-
prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
-
spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
-
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
-
-
Group(分组)
-
描述
-
配置格式
-
配置内容
-
-
-
添加依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
-
配置方式
-
profile配置
-
添加配置
spring: profiles: active: dev cloud: nacos: config: server-addr: ${nacos.server-addr} group: ${nacos.config.group:DEFAULT_GROUP} namespace: ${nacos.config.namespace:} file-extension: yaml
-
创建不同环境的配置文件:在 Nacos 上创建不同环境的配置文件,每个配置文件都使用特定的 Profile 名称。
-
配置格式为:${prefix}-${spring.profiles.active}.${file-extension}
-
例如,我们可以在 Nacos 中创建三个配置文件,分别是 ${prefix}.yaml 、${prefix}-dev.yaml 和 ${prefix}-prod.yaml。按照上方配置dev,会优先加载{prefix}-dev.yaml文件,如果{prefix}-dev.yaml没有就会加载${prefix}.yaml文件
-
-
-
默认配置
-
添加配置
spring: cloud: nacos: config: server-addr: ${nacos.server-addr} group: ${nacos.config.group:DEFAULT_GROUP} namespace: ${nacos.config.namespace:} file-extension: yaml
-
配置格式为:${prefix}.${file-extension}
-
例如,我们可以在 Nacos 中创建三个配置文件,分别是 ${prefix}.yaml 、${prefix}-dev.yaml 和 ${prefix}-prod.yaml。按照上方配置,就会加载${prefix}.yaml文件
-
-
-
extension-configs配置(加载多配置文件)
-
添加配置
spring: cloud: nacos: config: server-addr: ${nacos.server-addr} group: ${nacos.config.group:DEFAULT_GROUP} namespace: ${nacos.config.namespace:} file-extension: yaml extension-configs: - dataId: redis.yml refresh: true - dataId: mysql.yml refresh: true
-
可自定义Data ID,加载指定的多个配置文件
-
-
shared-configs配置(加载多配置文件)
-
添加配置
spring: cloud: nacos: config: server-addr: ${nacos.server-addr} group: ${nacos.config.group:DEFAULT_GROUP} namespace: ${nacos.config.namespace:} file-extension: yaml shared: - dataId: redis.yml refresh: true - dataId: mysql.yml refresh: true
-
可自定义Data ID,加载指定的多个配置文件
-
-
-
配置文件监控刷新
-
在 application.properties(或 bootstrap.properties)中开启配置的动态刷新: spring.cloud.config.refresh.enabled=true
-
在需要刷新的 Bean 上添加 @RefreshScope 注解:@RefreshScope
-
-
FAQ:
-
四种配置的优先级?
-
优先级大的会覆盖小的,并且形成互补
-
profile > 默认配置 > extension-configs > shared-configs
-
-
shared-configs 与extension-configs配置 有什么区别?
-
shared-configs:这是 Nacos 中的共享配置功能。具体来说,shared-configs 是指多个应用程序共享同一个配置。这样可以让多个应用程序使用同一份配置,避免了重复配置的问题。适合多个应用程序之间的配置信息完全相同的情况。
-
extension-configs:这是 Nacos 中的扩展配置功能。它允许应用程序继承和扩展来自其他配置的部分或全部内容。通过扩展配置,应用程序可以继承其他配置,并在其基础上做一些定制化的修改。适合应用程序之间的配置存在继承与差异化的情况。
区别:
-
共享配置适用于多个应用程序共享同一份配置的情况,它们可以直接引用相同的共享配置。而扩展配置则允许应用程序继承和扩展其他配置的部分或全部内容。
-
共享配置没有进行具体的继承与修改操作,而扩展配置可以基于其他配置进行修改和定制化。
-
共享配置在配置项发生变化时,所有引用该配置的应用程序都会受到影响。而扩展配置可以根据自身的需求对继承的配置进行修改,不受其他应用程序的影响。
-
-
六、权限管理
-
修改配置文件
-
如果要使用Nacos管理界面的权限控制功能,需要Nacos中的application.properties文件中nacos.core.auth.enabled=false,修改为true
-