參考和感謝
Spring Cloud Alibaba基礎教程:Nacos的數據持久化
前言
前景回顧:
- Nacos(七):Nacos共享配置
- Nacos(六):多環境下如何“管理”及“隔離”配置和服務
- Nacos(五):多環境下如何“讀取”Nacos中相應環境的配置
- Nacos(四):SpringCloud項目中接入Nacos作為配置中心
前面的七篇文章,從Nacos介紹,到Nacos做注冊中心、做配置中心,一直都沒有提及持久化的問題。
我們服務的信息、配置的信息都放在哪的?
當我們使用默認配置啟動Nacos時,所有配置文件都被Nacos保存在了內置的數據庫中。
在0.7版本之前,在單機模式時nacos使用嵌入式數據庫實現數據的存儲,不方便觀察數據存儲的基本情況。0.7版本增加了支持mysql數據源能力
如果使用內嵌數據庫,注定會有存儲上限,本文帶大家一起將Nacos中的數據實現持久化
我的環境
- Windows10
- JDK8
- SpringCloud:Finchley.RELEASE
- SpringBoot:2.0.4.RELEASE
- spring-cloud-alibaba-dependencies:0.2.2.RELEASE
- Nacos-server:1.0.1
本文的項目Demo繼續沿用之前文章中的聚合工程Nacos
,若小伙伴還沒有之前的環境,可至源碼地址中下載
本文的演示環境為:windows平台
項目准備
本文使用Nacos(四)項目代碼作為演示
項目內容不做修改
安裝數據庫
目前Nacos僅支持Mysql
數據庫,且版本要求:5.6.5+
初始化數據庫
Nacos的數據庫腳本文件在我們下載Nacos-server時的壓縮包中就有
進入nacos-server-1.0.1\nacos\conf
目錄,初始化文件:nacos-mysql.sql
此處我創建一個名為 mynacos
的數據庫,然后執行初始化腳本,成功后會生成 11
張表
修改配置文件
這里是需要修改Nacos-server的配置文件
Nacos-server其實就是一個Java工程或者說是一個Springboot項目,他的配置文件在nacos-server-1.0.1\nacos\conf
目錄下,名為 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
啟動Nacos-server和Nacos-config
先啟動Nacos-server,啟動方式不變,直接雙擊執行nacos-server-1.0.1\nacos\bin
下的startup.cmd
文件
啟動成功后進入Nacos控制台,此時的Nacos控制台中煥然一新,之前的數據都不見了
因為加入了新的數據源,Nacos從mysql中讀取所有的配置文件,而我們剛剛初始化的數據庫是干干凈凈的,自然不會有什么數據和信息顯示。
在公共空間(public)中新建一個配置文件DataID: nacos-config.yml
, 配置內容如下:
server:
port: 9989
nacos:
config: 配置文件已持久化到數據庫中...
再啟動Nacos(四)中的demo項目。服務啟動成功后,觀察Nacos控制台如下
驗證是否持久化到數據庫中
觀察數據庫mynacos
中的數據庫表 config_info
, 如下
請求一下接口 http://127.0.0.1:9989/getValue 返回結果:
配置文件已持久化到數據庫中...
總結
Nacos通過集中式存儲來保證數據的持久化,同時也為Nacos集群部署奠定了基礎
試想一下,如果我們以之前的方式啟動Nacos,如果想組建Nacos集群,那各個節點中的數據唯一性就是最大的問題
Nacos采用了單一數據源,直接解決了分布式和集群部署中的一致性問題。
- 文章作者: LarsCheng
- 文章鏈接: 本文首發於個人博客:https://www.larscheng.com/nacos-namespace/
- 發布方式:OpenWrite 最懂你的科技自媒體管理平台
- 版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY-NC-SA 4.0 許可協議。轉載請注明來自 LarsCheng's Blog!