Nacos(八):Nacos持久化


參考和感謝

Spring Cloud Alibaba基礎教程: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控制台如下

nacos-consloe

驗證是否持久化到數據庫中

觀察數據庫mynacos中的數據庫表 config_info , 如下

config_info
請求一下接口 http://127.0.0.1:9989/getValue 返回結果:

配置文件已持久化到數據庫中...

總結

Nacos通過集中式存儲來保證數據的持久化,同時也為Nacos集群部署奠定了基礎

試想一下,如果我們以之前的方式啟動Nacos,如果想組建Nacos集群,那各個節點中的數據唯一性就是最大的問題

Nacos采用了單一數據源,直接解決了分布式和集群部署中的一致性問題。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM