参考和感谢

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控制台如下

验证是否持久化到数据库中

观察数据库mynacos中的数据库表 config_info , 如下



请求一下接口 http://127.0.0.1:9989/getValue 返回结果:

配置文件已持久化到数据库中...

总结

Nacos通过集中式存储来保证数据的持久化,同时也为Nacos集群部署奠定了基础

试想一下,如果我们以之前的方式启动Nacos,如果想组建Nacos集群,那各个节点中的数据唯一性就是最大的问题

Nacos采用了单一数据源,直接解决了分布式和集群部署中的一致性问题。



Nacos(八):Nacos持久化的更多相关文章

  1. Spring Cloud Alibaba基础教程:Nacos的数据持久化

    前情回顾: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方式> ...

  2. 【Nacos】Nacos安装

    1.Nacos简介 Nacos是阿里巴巴集团开源的一个易于使用的平台,专为动态服务发现,配置和服务管理而设计.它可以帮助您轻松构建云本机应用程序和微服务平台. Nacos基本上支持现在所有类型的服务, ...

  3. Nacos:Nacos与OpenFeign的对接使用

    Nacos(三):Nacos与OpenFeign的对接使用   上篇文章中,简单介绍了如何在SpringCloud项目中接入Nacos作为注册中心,其中服务消费者是通过RestTemplate+Rib ...

  4. Redis学习笔记(八)——持久化

    一.介绍 Redis的所有的数据都存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为"半持久化模式"):也可以把每一次数据变化都写入到一个append only file(a ...

  5. Spring Cloud Alibaba(6)---Nacos持久化Mysql8.0版本

    Nacos持久化Mysql8.0版本 有关Nacos之前写过三篇文章. Spring Cloud Alibaba(3)---Nacos概述 Spring Cloud Alibaba(4)---Naco ...

  6. seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案

    seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案 说明: 之所以只用nacos进行了注册与发现,因为seata使用naco ...

  7. (十八)整合Nacos组件,环境搭建和入门案例详解

    整合Nacos组件,环境搭建和入门案例详解 1.Nacos基础简介 1.1 关键特性 1.2 专业术语解释 1.3 Nacos生态圈 2.SpringBoot整合Nacos 2.1 新建配置 2.2 ...

  8. Sentinel Dashboard 规则 持久化到Nacos

    本篇文章基于sentinel1.8.4版本进行改造的.本篇主要记录改造步骤 1.下载源码 https://github.com/alibaba/Sentinel 2.打开下载的sentinel,到se ...

  9. Spring Cloud Alibaba基础教程:Nacos的集群部署

    继续说说生产环境的Nacos搭建,通过上一篇<Spring Cloud Alibaba基础教程:Nacos的数据持久化>的介绍,我们已经知道Nacos对配置信息的存储原理,在集群搭建的时候 ...

随机推荐

  1. Android使用webService(发送xml数据的方式,不使用jar包)

    Android使用webService可以用ksoap2.jar包来使用.但是我觉得代码不好理解,而且记不住. 所以我查询了好多资料,以及自己的理解.可以用代码发送http请求(发送xml数据)来访问 ...

  2. LiteDB源码解析系列(2)数据库页详解

    在这一篇里,我将用图文的方式展示LiteDB中页的结构及作用,内容都是原创,在描述的过程中有不准确的地方烦请指出. 1.LiteDB页的技术工作原理 LiteDB虽然是单个文件类型的数据库,但是数据库 ...

  3. Java设计模式——工厂设计模式

    工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...

  4. python课堂整理21---初识装饰器

    一.装饰器: 本质就是函数,功能:为其他函数添加附加功能 原则: 1.不能修改被装饰函数的源代码 2.不能修改被修饰函数的调用方式 一个简单的装饰器 import time def timmer(fu ...

  5. 林大妈的JavaScript基础知识(三):JavaScript编程(1)对象

    1. 对象的简单介绍与一些注意事项 JavaScript中具有几个简单数据类型:数字.字符串.布尔值.null值以及undefined值.除此之外其余所有值(包括数组.函数,甚至正则表达式)都是对象. ...

  6. 【Android Studio】提示代码忽略大小写

    在 Preference... 中找到如下,设置 Case sensitive completion 为 None 即可,如下图: PS: 该截图是 Intellij IDEA (Android St ...

  7. 记一次idea问题—performing vcs refresh...

    01.前言 本人出现该场景是,我把本地SVN A项目删了,而A项目与B项目同在一个SVN目录下,当我修改B项目且提交代码时,出现了该问题. idea不是很懂操作,就搜索了一下得出了三种答案,但只有其一 ...

  8. maven-assembly-plugin 进行打包

    maven-assembly-plugin使用描述(拷自 maven-assembly-plugin 主页) The Assembly Plugin for Maven is primarily in ...

  9. go单元测试

    testing模块 测试代码放在当前包以_test.go结尾的文件中 测试函数以Test为名称前缀 测试命令(go test) 正常编译操作(go build/install)会忽略测试文件 单例模式 ...

  10. [ubuntu][deepin]系统增加自定义开机启动项

    [ubuntu][deepin]系统增加自定义开机启动项 进行配置 cd /etc/init.d/ ls vim myScript nginx实例 #! /bin/sh # chkconfig: # ...