>>分享孙卫琴的Java技术专稿和著作 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 8299 个阅读者 刷新本主题
 * 贴子主题:  【Spring Cloud Alibaba专题】Nacos配置属性的持久化 回复文章 点赞(0)  收藏  
作者:sunweiqin    发表时间:2022-08-25 09:00:45     消息  查看  搜索  好友  邮件  复制  引用

本文参考孙卫琴,杜聚宾所创作的<<Spring Cloud Alibaba微服务开发宝典>>一书,即将出版

在Nacos服务器上创建了配置单元后,如果重启Nacos服务器,配置单元还存在吗?答案是,还存在的。Nacos服务器在运行时,会对配置单元的数据进行持久化,确保服务器重启后,还能获得原有的配置数据。

Nacos服务器对配置属性进行持久化有两种方式:
(1)默认情况下,Nacos服务器把配置属性保存到内嵌的Apache Derby数据库中。在Nacos服务器的data/derby-data目录下存放包含配置属性的文件。
(2)把配置属性保存到外部数据库中,目前支持MySQL数据库,将来可能会支持更多的外部数据库。

无论Nacos服务器以单机或集群方式运行,都支持内嵌的数据库和外部数据库。Nacos服务器使用外部MySQL数据库,有以下优点:
(1)便于在独立的主机上部署MySQL数据库,MySQL数据库与Nacos服务器无需运行在同一台主机上。
(2)可以方便地查看和维护MySQL数据库。

把Nacos服务器改为使用MySQL数据库作为配置属性的存储源,步骤如下。
(1)安装MySQL。MySQL的官方下载网址为:www.mysql.com。
(2)为Nacos服务器创建连接MySQL的用户名和口令。假定用户名为root,口令为1234。
(3)在MySQL中创建名为nacos_config的数据库,字符编码为UTF8,SQL命令如下:

create database nacos_config character set utf8;

(4)在nacos_config数据库中,运行Nacos服务器的conf/nacos-mysql.sql脚本,创建config_info等数据库表,这些表用于存储配置属性。
(5)修改Nacos服务器的conf/application.properties配置文件,设置连接MySQL数据源的信息:

spring.datasource.platform=mysql

db.num=1
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=Asia/Shanghai

db.user.0=root
db.password.0=1234

以上db.num属性表示数据源的个数,如果有两个数据源,可以按照以下方式配置:

db.num=2
db.url.0=……
db.user.0=root
db.password.0=1234

db.url.1=……
db.user.1=root
db.password.1=1234

在Nacos服务器的conf/application.properties配置文件的注释行中,已经提供了连接MySQL的参考代码。值得注意的是,参考代码的db.url.0属性中“127.0.0.1:3306/nacos”要改为“127.0.0.1:3306/nacos_config”,这样才能连接到在MySQL中创建的nacos_config数据库。
(6)启动Nacos服务器,会看到以下信息,表明使用外部数据源:

INFO Nacos started successfully in stand alone mode.
use external storage

再通过浏览器访问Nacos服务器的管理平台,参照4.1节创建Data ID为hello-config-service的配置单元。然后在MySQL中查看config_info表:
select * from config_info;

会看到在config_info表中增加了一条表示配置单元的记录,它的data_id字段的值为hello-config-service,group_id字段的值为DEFAULT_GROUP。



程序猿的技术大观园:www.javathinker.net

[这个贴子最后由 sunweiqin 在 2022-08-25 09:16:07 重新编辑]
  Java面向对象编程-->对象的生命周期
  JavaWeb开发-->Web运作原理(Ⅱ)
  JSP与Hibernate开发-->数据库事务的并发问题的解决方案
  Java网络编程-->用Spring整合CXF发布Web服务
  精通Spring-->虚拟DOM和render()函数
  Vue3开发-->绑定表单
  【Spring Cloud Alibaba专题】SkyWalking整合MySQL
  【Spring Cloud Alibaba专题】Seata的架构
  【Spring Cloud Alibaba专题】按照集群模式搭建Redis集群
  【Spring专题】Spring MVC是否过时?
  【Spring专题】控制器对象的生命周期
  【Spring专题】用AOP和SLF4J输出日志的范例
  【Spring专题】@Query和@Modifying注解的增删改操作
  【Vue专题】Vue3的计算属性实用范例:实现购物车
  【持久化专题】用orphanRemoval属性映射父子关系
  【持久化专题】Hibernate的配置文件
  【持久化专题】对象-关系的映射概念
  【持久化专题】映射Bag包(值类型的集合)
  【Java网络编程专题】用Apache FTPClient在FTP服务器上创建目...
  【Java网络编程专题】盘点用Java抓取HTTP服务器和FTP服务器的...
  【Java基础编程专题】定时器Timer类的用法
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。