乐趣区

Nacos八Nacos持久化

参考和感谢

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/nac…
  • 发布方式:OpenWrite 最懂你的科技自媒体管理平台
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LarsCheng’s Blog!

退出移动版