# :-: 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
~~~
2\. 通過Nacos 的 Group
~~~
//通過運行參數設置
-Dspring.cloud.nacos.config.group=DEVELOP_GROUP
~~~
3\. 通過Nacos 的 Namespace
~~~
//通過運行參數設置,值是namespace對應的id,id值可以在Nacos的控制臺獲取
-Dspring.cloud.nacos.config.namespace=b3404bc0-d7dc-4855-b519-570ed34b62d7
~~~

##### 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開啟端口