Nacos 2.x 系列【6】持久化

文章目录

    • 1. 前言
    • 2. Derby
    • 3. Mysql
      • 3.1 初始化脚本
      • 3.2 服务端配置
      • 3.3 验证
    • 4. 数据源插件

1. 前言

Nacos中的用户、租户、服务配置等信息,需要使用关系型数据库进行存储,在实际开发中,可能还会面临各种数据库适配问题。

2. Derby

DerbyApache一个开源用纯Java编写的关系数据库管理系统。

Derby最大的特点就是简单易用,可以直接嵌入到JAVA应用程序中,所以Nacos默认使用Derby作为内嵌数据库。

\nacos\data目录下可以看到相关数据文件:
在这里插入图片描述

3. Mysql

Derby虽然简单易用,但是数据不好维护,在集群环境下,无法共享数据,所以Nacos默认也支持Mysql数据库。

3.1 初始化脚本

/nacos/conf配置文件目录下,提供了mysql-schema.sql脚本:
在这里插入图片描述

首先在Mysql中创建数据库,并执行脚本,成功创建了12张表:
在这里插入图片描述

表说明如下:

表名说明
config_info配置信息表
config_info_aggr配置聚合表
config_info_beta灰度配置信息表
config_info_tag标签对应的特殊配置信息表
config_tags_relation配置标签信息表
group_capacity集群、各分组容量信息表
his_config_info配置历史信息表
tenant_capacity租户容量信息表
tenant_info租户信息表
users用户信息表
roles角色表
permissions角色权限表

说明: 这里使用的是Mysql 8.0.29

3.2 服务端配置

服务端默认已经引入了Mysql驱动:
在这里插入图片描述

所以我们只需要在application.properties中配置一些连接信息即可:

#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
### spring.datasource.platform=mysql
spring.sql.init.platform=mysql### Count of DB:
db.num=1### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/pearl_nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2

3.3 验证

在控制台添加一个新用户,查看users表:
在这里插入图片描述

4. 数据源插件

在目前信创计划的环境下,很多软件系统都需要适配国产数据库,Nacos也不例外。在Nacos之前的版本中,想适配国产数据库是比较难的,只能自己修改很多源码。

之前版本所有的SQL操作的执行是通过直接使用JdbcTemplate执行固定SQL语句的形式,使得SQL语句与业务逻辑高度耦合,并且只支持DerbyMySQL两种数据源。

原有架构如下:

在这里插入图片描述

Nacos2.2.0版本开始,可通过SPI机制注入多数据源实现插件,并在引入对应数据源实现后,便可在Nacos启动时通过读取application.properties配置文件中spring.datasource.platform配置项选择加载对应数据源插件。

数据源插件通过SPI机制,将SQL操作按照数据表进行抽象出多个Mapper接口,Mapper接口的实现类需要按照不同的数据源编写对应的SQL方言实现。现在插件默认提供Derby以及MySQLMapper实现,可直接使用,而其他的数据源则需要用户使用数据源插件进行加载。

其改造后架构图如下:

在这里插入图片描述

注意: 目前多数据源插件处于Beta测试阶段,其API及接口方法定义可能会在后续版本升级而有较大修改,请注意您的插件适用版本。

由于目前还不是正式发布版本,所以后续再进行国产数据库适配演示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/17578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio 中gradle的bin和all区别

1.在android studio中设置安装gradle时,真各种版本看到眼花缭乱,还有疑惑gradle-*.*-all.zip与gradle-*.*-bin.zip的区别是什么。下面解压如下: bin: all: 其实,用bin就可以了,all文件就是多了docs(文档)和src(源码)两…

Linux网络-Socket套接字_Windows与Linux端双平台基于Udp传输协议进行多线程跨平台的服务器与客户端网络通信的简易聊天室实现

文章目录 一、Socket套接字二、socket 常见API1. int socket(int domain, int type, int protocol);2. int bind(int socket, const struct sockaddr *address, socklen_t address_len);struct sockaddr 3. ssize_t recvfrom(int socket, void *restrict buffer, size_t length…

go defer

type _defer struct {siz int32started boolopenDefer boolsp uintptrpc uintptrfn *funcval_panic *_paniclink *_defer }runtime._defer 结构体是延迟调用链表上的一个元素,所有的结构体都会通过 link 字段串联成链表。 只…

【全开源】酒店订单管理系统源码(FastAdmin+ThinkPHP)

一款基于FastAdminThinkPHP开发的旨在为民宿、酒店、宾馆等提供房态、订单、财务、客史等数据化、信息化的智慧管理工具,实现一站式订房管理,帮助酒店、民宿、宾馆提升管理效率,降低管理成本,提升行业竞争力。 打造高效、便捷的酒…

Generate Anything Anywhere in Any Scene #论文阅读

URL https://arxiv.org/pdf/2306.17154 TD;DR 2023 年 6 月 Wisconsin 的文章。围绕 ip 保持做的扩展任务,核心目标是对指定 ip 可以生成任意大小的(指定 ip)、任意背景的图片,同时可以通过 bbox 控制物体位置和多物体生成。主…

SOLIDWORKS教育版代理商应该如何选择?

SOLIDWORKS作为目前流行的三维设计软件在工程设计,制造和建筑中有着广泛的应用前景。教育版SOLIDWORKS软件是学生及教育机构学习教学的理想平台。 下面介绍几个挑选SOLIDWORKS教育版代理的关键要素: 1、专业知识与经验:代理商应掌握SOLIDWORKS等软件的丰…

ResNet残差网络的学习【概念+翻译】

基于何明凯前辈论文的学习 1.主要内容(背景) 1、首先提了一个base:神经网络的深度越深,越难以训练。 2、原因:因为随着神经网络层数的增加,通常会遇到梯度消失或梯度爆炸等问题,这会导致训练变…

gem5模拟器入门(三)——在配置脚本中添加Cache

使用gem5模拟器入门(二)——创建一个简单的配置脚本-CSDN博客配置脚本作为起点,本章将介绍一个更复杂的配置。我们将向系统添加一个缓存层次结构,如下图所示。此外,本章还将介绍如何理解gem5的统计输出,并向您的脚本添加命令行参数。 1.创建Cache对象 我们将使用经典的缓…

Robot Framework自动化测试基础入门

1、什么是Robot Framework Robot Framework是一个基于Python的关键字驱动的自动化测试框架。以下是关于Robot Framework的几个特点: 基于关键字驱动: 它允许测试人员使用Python封装关键字,这些关键字可以在非编码环境下被用来构建可执行的测试用例。易于扩展: 作为一个开源工…

20240528解决飞凌的OK3588-C的核心板的TYPE-C1接口识别问题

20240528解决飞凌的OK3588-C的核心板的TYPE-C1接口识别问题 2024/5/28 16:46 缘起: 现阶段碰到的USB相关的问题:(LINUX R4版本) 1、USB3.0插USB摄像头 lsusb找不到设备 2、刷机口只接了3根线,GND/D/D-,可以…

2024HBCPC:E Breakfast II

题目描述 作为一个合格的大学生,你不仅需要学习成绩好,还需要会买包子和鸡蛋。 今天,又轮到你们给你的导师买早饭了! 这一次你们一共需要给导师买 n n n 个包子和 m m m 个鸡蛋(请注意,这一次可能不再只…

搭贝财务管理助您轻松掌控财务大局

在当今竞争激烈的商业环境中,有效的财务管理是企业成功的关键之一。搭贝财务管理平台为您提供了一揽子解决方案,助您轻松掌握财务大局,实现财务管控的全面数字化。 📈 基础信息管理 搭贝财务管理平台首先提供了完善的基础信息管理…

3D开发工具HOOPS在BIM系统中的应用

建筑信息模型是一种革命性的建筑设计、施工和管理方法。它通过创建和利用数字信息来优化建筑项目的设计、施工和运营过程。在这个过程中,3D开发工具HOOPS扮演着至关重要的角色,为BIM系统提供了强大的技术支持和丰富的功能。HOOPS中文网http://techsoft3d…

RAG架构的数据准备流程

虽然现成的大型语言模型 (LLM) 功能强大,但企业发现,根据其专有数据定制 LLM 可以释放更大的潜力。检索增强生成 (RAG) 已成为这种定制的主要方法之一。RAG 模型将大型语言模型强大的语言理解能力与检索组件相结合,使其能够从外部数据源收集相…

5V升压充电8.4V芯片4A输出电流-AH3330

AH3330-5V升压充电8.4V芯片,采用SSOP-10封装,配备外挂的MOS管,可支持4.5V到32V的输入电压范围,输出功率高达40W。该芯片广泛应用于多节电池充电控制领域,尤其适用于锂电池、磷酸铁锂电池和铅酸电池等不同类型的充电控制…

什么是erp仓储管理系统?ERP系统的价值体现在哪些方面?

ERP仓储管理系统是一个帮助企业管理仓库的工具。想象一下,如果你是一个仓库管理员,里面堆满了各种各样的产品和货物,如何确保这些产品数量准确、摆放有序,以及快速找到自己需要的产品呢? 这时,如果企业引用…

【MySQL数据库】 MySQL主从复制

MySQL主从复制 MySQL主从复制主从复制与读写分离的意义主从数据库实现同步(主从复制)三台mysql服务器搭建主从复制,要求不可以用root帐号同步,要求第三台服务器在测试过1、2的主从复制之后进行主从复制配置 MySQL主从复制 主从复…

conda 环境找不到 libnsl.so.1

安装prokka后运行报错 perl: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory 通过conda list 可以看到 有libsnl 2.00版本,通过修改软链接方式进行欺骗

代码随想录算法训练营Day2|977.有序数组的平方、59.螺旋矩阵||、 209.长度最小的子数组

977.有序数组的平方 这道题给出的原数组有两个特点: 1、由小到大 2、有负数有正数 因此,这个数组平方后的数应该是从两头向中间的0减小的,但是两头的大小需要我们用两个指针便历之后去判断大小。在遍历的同时left指针向右走,righ…

详谈 Java中的list.forEach()和list.stream().forEach() 异同点

涉及的文章链接:ArrayList 循环Remove遇到的坑 一、想总结本篇博客的原因 在日常开发中,需要对集合数据进行或多或少的赋值修改,那么循环赋值或者做一些处理就是最常见的一种操作了,但是用习惯了stream流,所以在循环的…