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
- 文章链接: 本文首发于个人博客:
- 发布方式:openwrite 最懂你的科技自媒体管理平台
- 版权声明: 本博客所有文章除特别声明外,均采用 cc by-nc-sa 4.0 许可协议。转载请注明来自 larscheng's blog!
推荐阅读
-
Nacos(八):Nacos持久化
-
Nacos数据持久化不支持MySQL8.x高版本
-
如何基于 Nacos 和 Sentinel ,实现灰度路由和流量防护一体化 阿里巴巴中间件框架restbean
-
Linux下Nacos安装集群配置及Mysql持久化配置
-
Redis学习笔记(八):RDB持久化
-
Redis学习笔记(八) RDB持久化
-
Lua教程(八):数据持久化
-
sentinel学习第一章:sentinel数据持久化到influxdb,实现流控和服务降级规则持久化到nacos,并实现推模式将规则推送到服务
-
Spring Cloud Alibaba实战(八) - Dubbo + Nacos
-
【持久化框架MyBatis3八】Spring集成MyBatis3