Nacos(八):Nacos持久化

參考和感謝

Spring Cloud Alibaba基礎教程:Nacos的數據持久化mysql

前言

前景回顧:git

前面的七篇文章,從Nacos介紹,到Nacos作註冊中心、作配置中心,一直都沒有說起持久化的問題。github

咱們服務的信息、配置的信息都放在哪的?spring

當咱們使用默認配置啓動Nacos時,全部配置文件都被Nacos保存在了內置的數據庫中。sql

在0.7版本以前,在單機模式時nacos使用嵌入式數據庫實現數據的存儲,不方便觀察數據存儲的基本狀況。0.7版本增長了支持mysql數據源能力數據庫

若是使用內嵌數據庫,註定會有存儲上限,本文帶你們一塊兒將Nacos中的數據實現持久化windows

個人環境

  • 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,若小夥伴尚未以前的環境,可至源碼地址中下載app

本文的演示環境爲:windows平臺socket

項目準備

本文使用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採用了單一數據源,直接解決了分佈式和集羣部署中的一致性問題。


相關文章
相關標籤/搜索