綜述
最近項目升級使用Spring Cloud Alibaba,在使用nacos的時候發現官方文檔寫的非常含糊,網上的資料坑也很多,特整理一份給初學者使用
但是對於初學者來說看官網還是非常重要的
https://nacos.io/zh-cn/docs/what-is-nacos.html
什麼是Nacos
說人話就是可以把各個服務都註冊到註冊中心,服務之間就可以使用nacos互相調用;原本在項目的配置文件可以放到nacos中統一管理,本文主要講配置中心的使用
下載Nacos
https://github.com/alibaba/nacos/releases
在nacos/bin文件夾下執行
啓動命令:nohup sh startup.sh -m standalone &
停止命令:./shutdown.sh
啓動成功後訪問http://127.0.0.1:8848/nacos/index.htm輸入賬號密碼,默認都是nacos
可以執行下面兩個命令看看配置中心是否可用
新寫了一個配置文件,項目有時候會讀取不到,可以重啓nacos試試
curl -X POST “http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=HelloWorld”
curl -X POST “http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=HelloWorld”
項目Maven
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
項目配置
需要在原本 application.yml 處新建一個 bootstrap.yml
文件,它會比application.yml文件先執行。
項目配置使用需要一個格式
官方原文
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
prefix 默認爲 spring.application.name 的值,也可以通過配置項 spring.cloud.nacos.config.prefix來配置。
spring.profile.active 即爲當前環境對應的 profile,詳情可以參考 Spring Boot文檔。 注意:當 spring.profile.active 爲空時,對應的連接符 - 也將不存在,dataId 的拼接格式變成 {file-extension}
file-exetension 爲配置內容的數據格式,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支持 properties 和 yaml 類型。
翻譯一下就是需要一個三段的格式
server-name-dev.yml
這個名字就是後面要在nacos裏創建的 Data ID
spring:
application:
name: service-name #這裏就是你要註冊到nacos裏的服務名字
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yml #這個代表你的文件類型
profiles:
active: dev #這個代表你的環境 開發環境dev
Nacos裏新建配置
進入nacos頁面
這裏的Data ID就是上面拼出來的名字
類型選擇YAML
下面就可以把原來application.yml裏的配置信息放到這裏來了
拖到下面點擊發布
命名空間
如果服務多起來,可以給服務註冊和配置中心配一個命名空間
除了命名空間,還有Group和 歸屬應用 可以配置
命名空間看過去最直觀
新增一個命名空間再切換到配置列表,頂部就可以切換命名空間
bootstrap.yml 裏只需要多配一行代碼就能使用
spring:
application:
name: service-name #這裏就是你要註冊到nacos裏的服務名字
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: xxxxxxxx-xxxx-4517-b589-4e45eedfc111 #這裏就是填命名空間id
config:
server-addr: 127.0.0.1:8848
file-extension: yml #這個代表你的文件類型
namespace: xxxxxxxx-xxxx-4517-b589-4e45eedfc111
profiles:
active: dev #這個代表你的環境 開發環境dev
Nacos持久化
目前Nacos僅支持Mysql數據庫,且版本要求:5.6.5+
nacos/conf目錄裏有一個初始化文件:nacos-mysql.sql
創建一個數據庫 執行這個sql
打開同目錄的 application.properties 文件,在底部新增配置,
注意修改數據連接
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/mynacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
重啓項目再配置的文件就會存儲到 mynacos中的數據庫表 config_info裏面
Nacos通過集中式存儲來保證數據的持久化,同時也爲Nacos集羣部署奠定了基礎