在上章节我们通过调用 Nacos 的 Open API 实现了服务注册、发布配置,如下图:
那么,这些数据 Nacos 保存在哪里的呢?Nacos 默认情况下将数据保存在 Apache Derby 嵌入式数据库中,如下图:
Apache Derby(以前称为 IBM Cloudscape)是一个基于 Java 的关系型数据库管理系统(RDBMS),它是一个完全的事务性、嵌入式数据库引擎。Derby 是一个开源项目,由Apache 软件基金会进行维护和开发。
Apache Derby 具有以下特点:
嵌入式数据库:Derby 可以作为一个嵌入式数据库引擎,可以直接嵌入到 Java 应用程序中,不需要独立的数据库服务器。
轻量级:Derby 的核心引擎非常小巧,占用资源少,适合于轻量级的应用程序。
100% Java:Derby 完全由 Java 编写,可以在任何支持 Java 的平台上运行。
标准兼容:Derby 遵循 SQL 标准,支持常见的 SQL 操作和语法。
ACID事务:Derby 支持原子性、一致性、隔离性和持久性(ACID)的事务处理,保证数据的完整性和一致性。
多用户支持:Derby 支持多个并发用户同时访问数据库,提供了基于锁和 MVCC(多版本并发控制)的并发控制机制。
内存数据库:Derby 可以将整个数据库加载到内存中,提供了快速的数据访问和查询性能。
原生支持网络访问:Derby 可以作为一个独立的数据库服务器运行,通过网络提供数据库访问服务。
Apache Derby 可以用于各种应用场景,从小型嵌入式应用到中等规模的企业应用都适用。它提供了丰富的功能和工具,如 SQL 支持、事务管理、安全性、备份和恢复等,可以满足不同应用的需求。此外,Derby 还可以与其他 Java 技术和框架集成,如 Hibernate、Spring 等,提供更加便捷和高效的开发体验。
在生产环境中,我们可能并不想将 Nacos 中的配置信息放置到默认的嵌入式 Derby 数据库,而是想将数据外部放到 MySQL 数据中,这样更安全,更高效。下面将介绍怎样配置 Nacos 将数据放到 MySQL。
准备一个 MySQL 服务,笔者这里采用 MySQL 5.7.24 版本。关于如何安装 MySQL 这里不再赘述。
在 MySQL 中创建 nacos-config 数据库,如下图:
执行 Nacos 提供的 SQL 脚本,脚本位于 Nacos 主目录的 config/mysql-schema.sql 文件,执行方式如下图:
点击 ”Start“ 开始执行,执行完成如下图:
此时,刷新数据库,可以看到创建了很多表,如下图:
打开 Nacos 主目录中 config/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 # 放开注释,指定为 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/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=root db.password.0=aaaaaa ...
配置完成后,记得重启 Nacos 服务。
使用 curl 命令发起配置发布请求,如下:
C:\Users\Administrator>curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld" true
访问 Nacos 页面查看数据,如下图:
继续查看数据库表,如下图: