2023-06-28 09:50:10 177阅读
Nacos作为微服务注册配置中心,需要存储用户创建的配置和永久实例等信息,需要有持久化方案。目前Nacos支持使用内嵌的Derby数据库和外部的MySQL数据库作为存储。当我们使用单机模式或者集群模式下使用默认存储(即使用startup.sh -p embedded启动)时,Nacos会使用内嵌的Derby数据库来存储数据。那么接下来简要介绍下Derby数据库。
Apache Derby 是100% Java 编写的内存数据库,属于 Apache 的一个开源项目,并且是一个容易管理的关系数据库管理系统,Apache Derby 是一个与平台无关的数据库引擎,它以 Java 类库的形式对外提供服务。与其他难以部署的数据库不同, Derby 数据库体积小、安装非常简单,只需要将其 *.jar 文件复制到系统中并为用户的项目添加该 *.jar 文件即可。
Derby数据库与应用程序共享同一个JVM,通常由应用程序负责启动和停止,对除启动它的应用程序外的其它应用程序不可见,即其它应用程序不可访问它;Nacos主要使用此种模式来运行Derby数据库。
Derby数据库独占一个JVM,做为服务器上的一个独立进程运行。在这种模式下,允许有多个应用程序来访问同一个Derby数据库。
只需要从Derby官方网站下载Derby的zip或者tar包,解压就可以了。这里以db-derby-10.4.1.3-bin版本为例,解压后得到以下目录:
建立连接:在命令行中找到bin目录,使用输入ij使用ij工具(或单击ij.bat后启动ij工具)。然后通过如下命令创建数据库,并与数据库创建连接
connect 'jdbc:derby:dedb;user=root;password=root;create=true';
SQL操作:与数据库连接上后,就可以开始执行SQL语句了,也可以通过run命令来执行sql文件:
run '/derby/demo/nacos_schema.sql';
最后通过exit来退出ij工具,你可以在当前你命令行下所在的目录中找到一个derby.log的日志文件,derby在其中记录的数据库启动、关闭的信息。
当我们使用单机模式或者集群模式下使用默认存储(即使用startup.sh -p embedded启动)时,Nacos会使用内嵌的Derby数据库来存储数据。服务启动后,在Nacos工作目录下data目录中生成derby-data目录
该目录即为derby的数据库工作目录,里面存储了derby数据库的所有信息
可以按照前文所述的方法,使用Derby自带的ij脚本连接内嵌模式运行的Derby数据库,可以看到NACOS逻辑库
该库中包含了Nacos用户侧信息,包含账号密码,名称空间,配置等。对于需要持久化的数据,Nacos会将其写入Derby数据库中。
最后,由于Derby是一个单体嵌入式数据库,Nacos各节点组成集群的时候,各自的存储是分离的,因此,需要由上层CP协议来保证数据一致性,这里会涉及到集群节点间的日志重放和同步等细节操作,我们会在后续的系列中进行深入解析。
2023-06-28 09:50:10 177阅读
Nacos作为微服务注册配置中心,需要存储用户创建的配置和永久实例等信息,需要有持久化方案。目前Nacos支持使用内嵌的Derby数据库和外部的MySQL数据库作为存储。当我们使用单机模式或者集群模式下使用默认存储(即使用startup.sh -p embedded启动)时,Nacos会使用内嵌的Derby数据库来存储数据。那么接下来简要介绍下Derby数据库。
Apache Derby 是100% Java 编写的内存数据库,属于 Apache 的一个开源项目,并且是一个容易管理的关系数据库管理系统,Apache Derby 是一个与平台无关的数据库引擎,它以 Java 类库的形式对外提供服务。与其他难以部署的数据库不同, Derby 数据库体积小、安装非常简单,只需要将其 *.jar 文件复制到系统中并为用户的项目添加该 *.jar 文件即可。
Derby数据库与应用程序共享同一个JVM,通常由应用程序负责启动和停止,对除启动它的应用程序外的其它应用程序不可见,即其它应用程序不可访问它;Nacos主要使用此种模式来运行Derby数据库。
Derby数据库独占一个JVM,做为服务器上的一个独立进程运行。在这种模式下,允许有多个应用程序来访问同一个Derby数据库。
只需要从Derby官方网站下载Derby的zip或者tar包,解压就可以了。这里以db-derby-10.4.1.3-bin版本为例,解压后得到以下目录:
建立连接:在命令行中找到bin目录,使用输入ij使用ij工具(或单击ij.bat后启动ij工具)。然后通过如下命令创建数据库,并与数据库创建连接
connect 'jdbc:derby:dedb;user=root;password=root;create=true';
SQL操作:与数据库连接上后,就可以开始执行SQL语句了,也可以通过run命令来执行sql文件:
run '/derby/demo/nacos_schema.sql';
最后通过exit来退出ij工具,你可以在当前你命令行下所在的目录中找到一个derby.log的日志文件,derby在其中记录的数据库启动、关闭的信息。
当我们使用单机模式或者集群模式下使用默认存储(即使用startup.sh -p embedded启动)时,Nacos会使用内嵌的Derby数据库来存储数据。服务启动后,在Nacos工作目录下data目录中生成derby-data目录
该目录即为derby的数据库工作目录,里面存储了derby数据库的所有信息
可以按照前文所述的方法,使用Derby自带的ij脚本连接内嵌模式运行的Derby数据库,可以看到NACOS逻辑库
该库中包含了Nacos用户侧信息,包含账号密码,名称空间,配置等。对于需要持久化的数据,Nacos会将其写入Derby数据库中。
最后,由于Derby是一个单体嵌入式数据库,Nacos各节点组成集群的时候,各自的存储是分离的,因此,需要由上层CP协议来保证数据一致性,这里会涉及到集群节点间的日志重放和同步等细节操作,我们会在后续的系列中进行深入解析。