# :-: Nacos配置中心
## 4\. 配置中心
### 4.1. 集成项目
* 引入jar
~~~
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
~~~
* `bootstrap.yml`增加以下配置
~~~
spring:
cloud:
nacos:
config:
server-addr: ip:prot #nacos的地址
file-extension: yml #配置文件格式
shared-dataids: common.yml #公共配置文件
~~~
### 4.2. 核心功能介绍
#### 4.2.1. 全局共用配置
* 可通过以下方式配置所有项目共享的配置项
~~~
spring:
cloud:
nacos:
config:
shared-dataids: common.yml
refreshable-dataids: common.yml
~~~
> shared-dataids 配置全局的配置名称refreshable-dataids 配置需要自动刷新的全局配置(默认不支持自动刷新)
#### 4.2.2. 自动刷新
~~~
//配置类上添加RefreshScope注解
@RefreshScope
~~~
#### 4.2.3. 不同环境的配置文件隔离
1. Nacos本身的地址
* 直接通过运行参数设置
* 例如开发环境的nacos地址为127.0.0.1:8848,而生产环境的nacos地址为192.168.28.130,部署生产环境时只需要在项目的启动参数添加以下内容
2. ~~~
//以下参数是本项目个性化的,能同时影响配置中心和注册中心的地址
-Dzlt.nacos.server-addr=192.168.28.130:8848
~~~
3. 业务配置项总共有3种方法实现(选择一种即可)
1. 通过spring.profiles.active
4. ~~~
//通过运行参数设置
-Dspring.profiles.active=dev
~~~
![](https://www.kancloud.cn/book/zlt2000/microservices-platform/preview/images/profile.png)2\. 通过Nacos 的 Group
~~~
//通过运行参数设置
-Dspring.cloud.nacos.config.group=DEVELOP_GROUP
~~~
![](https://www.kancloud.cn/book/zlt2000/microservices-platform/preview/images/group.png)3\. 通过Nacos 的 Namespace
~~~
//通过运行参数设置,值是namespace对应的id,id值可以在Nacos的控制台获取
-Dspring.cloud.nacos.config.namespace=b3404bc0-d7dc-4855-b519-570ed34b62d7
~~~
![](https://www.kancloud.cn/book/zlt2000/microservices-platform/preview/images/screenshot_1548997069007.png)
##### 4.2.3.1. 多环境总结
**第一种**:通过`DataID`与`profile`实现。
* 优点:这种方式与Spring Cloud Config的实现非常像,用过Spring Cloud Config的用户,可以毫无违和感的过渡过来,由于命名规则类似,所以要从Spring Cloud Config中做迁移也非常简单。
* 缺点:这种方式在项目与环境多的时候,配置内容就会显得非常混乱。配置列表中会看到各种不同应用,不同环境的配置交织在一起,非常不利于管理。
* 建议:项目不多时使用,或者可以结合 `Group`对项目根据业务或者组织架构做一些拆分规划。
**第二种**:通过`Group`实现。
* 优点:通过 `Group`按环境讲各个应用的配置隔离开。可以非常方便的利用 `DataID`和 `Group`的搜索功能,分别从应用纬度和环境纬度来查看配置。
* 缺点:由于会占用 `Group`纬度,所以需要对 `Group`的使用做好规划,毕竟与业务上的一些配置分组起冲突等问题。
* 建议:这种方式虽然结构上比上一种更好一些,但是依然可能会有一些混乱,主要是在 `Group`的管理上要做好规划和控制。
**第三种**:通过`Namespace`实现。
* 优点:官方建议的方式,通过 `Namespace`来区分不同的环境,释放了 `Group`的自由度,这样可以让 `Group`的使用专注于做业务层面的分组管理。同时,Nacos控制页面上对于 `Namespace`也做了分组展示,不需要搜索,就可以隔离开不同的环境配置,非常易用。
* 缺点:没有啥缺点,可能就是多引入一个概念,需要用户去理解吧。
* 建议:直接用这种方式长远上来说会比较省心。虽然可能对小团队而言,项目不多,第一第二方式也够了,但是万一后面做大了呢?
>[success] 多环境注意:不论用哪一种方式实现。对于指定环境的配置(`spring.profiles.active=DEV`、`spring.cloud.nacos.config.group=DEV_GROUP`、`spring.cloud.nacos.config.namespace=83eed625-d166-4619-b923-93df2088883a`),都不要配置在应用的`bootstrap.properties`中。而是在发布脚本的启动命令中,用`-Dspring.profiles.active=DEV`的方式来动态指定,会更加灵活!。
>[danger] Nacos使用注意
> * Nacos本身的相关配置必须都放在`bootstrap.yml`文件中
> * 如果在Nacos添加了应用的配置文件1. **应用读取配置后只会覆盖本地相同key的配置**2\. **应用读取配置后会缓存起来,就算停掉Nacos也会生效**
- 项目介绍
- 项目声明
- 项目简介
- 架构设计
- 项目亮点功能介绍
- 技术栈介绍
- 核心功能
- 运行环境
- 项目更新日志
- 文档更新日志
- F&Q
- 部署教程
- 环境准备
- JDK安装
- JDK1.8,17共存
- maven
- 分布式缓存Redis
- 单机版
- 集群
- 注册&配置中心alibaba/nacos
- 介绍
- Nacos安装
- Nacos配置中心
- Nacos注册发现
- Nacos生产部署方案
- 服务监控-BootAdmin
- 基本介绍
- 如何使用
- 整合Admin-Ui
- 客户端配置
- 链路追踪
- 基本介绍
- SkyWalking-1
- Skywalking-1
- 消息队列
- Kafka
- docker安装kafka
- Linux集群
- Maven私服
- nexus安装部署
- nexus使用介绍
- 全文搜索elasticsearch
- windows集群搭建
- docker安装es
- ElasticHD
- linux集群部署
- 统一日志解决方案
- 日志解决方案设计
- 介绍与相关资料
- ELK安装部署
- elasticsearch 7.5
- logstash-7.5
- kibana-7.5
- filebeat
- 服务监控-Prometheus
- Prometheus安装配置
- Prometheus介绍
- grafana
- 持续集成部署CICD
- 自动化部署Jenkins
- 安装部署win
- 打包发布远程执行
- 安装部署linux
- jenkins+gitlab+docker容器化工程自动化部署
- Git
- CICD说明
- 阿里云效
- CentOS_MYSQL安装
- docker
- 安装
- Docker安装Nginx
- Docker部署启动springboot
- dockerCompose
- harbor
- Docker私有镜像仓库
- Portainer
- Docker远程连接设置
- 打包工程
- 必要启动模块
- 核心模块
- 登录认证
- 缓存功能
- 日志模块
- 分布式锁
- 消息队列
- 异常处理
- 系统接口
- 参数验证
- es检索
- 数据导出
- 系统设计
- 系统总体架构
- 扩展模块(可选)
- 限流熔断alibaba/sentinel
- 使用Sentinel实现gateway网关及服务接口限流
- Sentinel使用Nacos存储规则及同步
- 服务调用Feign
- Feign基本介绍
- 如何使用
- 负载均衡
- 请求超时
- 请求拦截器
- 分布式任务调度
- XXL-JOB
- 分布式事务
- TX-LCN
- Seata
- Seata原理解析
- 数据库分库分表
- swagger文档
- 分布式ID生成器解决方案
- 服务网关CloudGateway
- 基本介绍
- 使用网关
- 路由配置
- 全局过滤器
- 服务认证授权架构设计
- 认证服务流程
- 授权服务流程
- 系统幂等性设计与实践
- 分布式日志链路跟踪
- 实时搜索系统设计
- 应用性能
- 压力测试工具
- Apache JMeter介绍和安装
- ApacheJMeter使用
- JVM
- JVM性能调优
- 常见JVM内存错误及解决方案
- JVM 分析工具详解
- Spring Cloud性能调优
- Linux运维
- Linux 常用命令
- Linux开启端口