SpringCloud - Spring Cloud Alibaba 之 Nacos Config配置数据;MySQL持久化;Nacos集群

Posted MinggeQingchun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud - Spring Cloud Alibaba 之 Nacos Config配置数据;MySQL持久化;Nacos集群相关的知识,希望对你有一定的参考价值。

阅读本文可先参考博文

https://blog.csdn.net/MinggeQingchun/article/details/125613600

https://blog.csdn.net/MinggeQingchun/article/details/125614065

https://blog.csdn.net/MinggeQingchun/article/details/125621111

https://blog.csdn.net/MinggeQingchun/article/details/125633893

一、Nacos Config 服务配置数据 

Nacos 服务配置数据模型主要由如下三部分组成

1、命名空间  (类似 Java中的 包 package: com.company.service / controller)

用于配置隔离,不同命名空间下,可以存在相同的Group或Data ID配置,Namespace的常用场景之一是不同环境的配置进行区分隔离,例如开发环境、测试环境和生产环境的资源(如配置、服务)隔离等;

2、Group

Nacos中的一组配置集合,是组织配置的维度之一,通过一个有意义的字符串(如 Buy 或 Trade)对一组配置集合进行分组,从而区分Data ID相同的配置集合,当在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP,配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url配置和MQ_topic配置;

3、Data Id

Nacos中的某个配置集合的ID,配置集合ID是组织划分配置的维度之一,Data ID通常用于组织划分系统的配置集合,一个系统或者应用可以包含多个配置集合,每个配置集都可以被一个有意义的名称标识;

因此 Nacos Config 也可以出现 3 种组合方案 

Java中 配置文件  bootstrap.properties 主要配置如下:

#通过nacos config 配置中心配置
#指定命名空间(复制命名空间的ID)
spring.cloud.nacos.config.namespace=4609e54c-da0d-482e-b4f9-ea97ee19049c
#nacos配置文件的扩展后缀(默认.properties) .properties 或者 .yaml
spring.cloud.nacos.config.file-extension=yaml
#GROUP不配置默认使用DEFAULT_GROUP,可自定义 DEV_GROUP
spring.cloud.nacos.config.group=DEV_GROUP
#通过nacos discovery 服务注册发现中心配置
#指定命名空间(复制命名空间的ID)
#spring.cloud.nacos.discovery.namespace=4609e54c-da0d-482e-b4f9-ea97ee19049c
#spring.cloud.nacos.discovery.group=DEV_GROUP

#激活使用哪一份配置,原来在springboot中代表:application-dev.properties
#现在在nacos config中代表: serviceName-test.propertoes
# $spring.application.name-$spring.profiles.active.$file-extension:properties
spring.profiles.active=dev

1、默认命名空间(public) + 默认Group分组(DEFAULT_GROUP) + 自定义Data Id(没有默认值)

默认命名空间:public

默认Group:DEFAULT_GROUP

自定义Data Id:

$spring.application.name-$spring.profiles.active.$file-extension

2、 默认命名空间(public) + 自定义Group分组(DEV_GROUP) + 自定义的Data Id(没有默认值);

默认命名空间:public

自定义Group:DEV_GROUP

自定义Data Id:

$spring.application.name-$spring.profiles.active.$file-extension

 3、自定义命名空间(dev) + 自定义Group分组(DEV_GROUP) + 自定义的Data Id(没有默认值);

 注:创建命名空间之后,会自动生成一个命名空间ID

自定义命名空间:dev

自定义Group:DEV_GROUP

自定义Data Id:

$spring.application.name-$spring.profiles.active.$file-extension

二、Nacos 使用mysql数据持久化

Nacos默认情况下是采用apache derby内嵌数据库进行数据存储,在单机模式时可以使用nacos嵌入式数据库实现数据存储

Derby数据库存放数据 位置 (nacos安装位置路径下的 /nacos/data/derby-data/log/log1.dat

/xx/nacos/data/derby-data/log/log1.dat

derby数据库不方便观察数据存储的基本情况,从nacos 0.7版本开始增加了支持mysql数据源能力

1、安装MySQL数据库,版本要求:5.6.5+

2、启动MySQL服务,手动安装,或者 Docker安装皆可(需要先启动Docker)

3、初始化MySQL数据库,创建数据库 nacos_conf ,该sql文件 nacos-mysql.sql 存放在 nacos安装包下的 conf 目录下

 

 4、修改 nacos安装包下 conf 目录下 的  application.properties文件 (/xx/conf/application.properties文件)

增加支持MySQL数据源配置,添加(目前只支持mysql)数据源的url、用户名和密码,文件原文内容如下:

修改后: 

#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.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=root
db.password=admin123456

注:

配置了 nacos的数据库信息,一定要启动mysql服务,并且保证数据库以及表存在,不然报错如下

5、关闭 nacos server,重启,重新在配置列表中新建配置,发现 config_info 表中存放最新的配置列表数据

 

三、Nacos集群部署

Nacos Server 集群化部署的基本架构如下:

1、准备三个nacos,3个或3个以上Nacos节点才能构成集群;

2、在Nacos的conf目录下有一个cluster.conf.example,可以直接把example扩展名去掉来使用,也可以单独创建一个cluster.conf文件,然后在该文件中每行配置一个ip:port

192.168.133.128:8801

192.168.133.128:8802

192.168.133.128:8803

 博主条件有限,配置相同IP 下 不同端口号来测试 nacos集群

3、分别编辑三台机器 application.properties  改端口分别为8801,8802,8803

4、修改三台机器内存大小

5、按照nacos持久化的方式配置好数据持久化到MySQL

6、在 Java代码中的 bootstrap.properties 文件中 配置

#将Nacos设置为服务注册发现,默认为true
spring.cloud.nacos.discovery.enabled=true
#nacos注册中心的连接地址
#nacos单机
#spring.cloud.nacos.discovery.server-addr=192.168.133.129:8848
#nacos集群
spring.cloud.nacos.discovery.server-addr=192.168.133.129:8801,192.168.133.129:8802,192.168.133.129:8803
#nginx部署访问nacos集群
#spring.cloud.nacos.discovery.server-addr=192.168.133.129:80


#nacos配置中心的连接地址
#spring.cloud.nacos.config.server-addr配置的方式为,域名:port,如 Nacos的域名为nacos.com,监听的端口为80
#则spring.cloud.nacos.config.server-addr=nacos.com:80,注 80 端口不能省略
#nacos单机
#spring.cloud.nacos.config.server-addr=192.168.133.129:8848
#nacos集群
spring.cloud.nacos.config.server-addr=192.168.133.129:8801,192.168.133.129:8802,192.168.133.129:8803
#nginx部署访问nacos集群
#spring.cloud.nacos.config.server-addr=192.168.133.129:80

Nginx代理Nacos集群

1、修改 Nginx 安装包下 的 nginx.conf 配置文件

2、在 Java代码中的 bootstrap.properties 文件中 配置

#将Nacos设置为服务注册发现,默认为true
spring.cloud.nacos.discovery.enabled=true
#nacos注册中心的连接地址
#nacos单机
#spring.cloud.nacos.discovery.server-addr=192.168.133.129:8848
#nacos集群
#spring.cloud.nacos.discovery.server-addr=192.168.133.129:8801,192.168.133.129:8802,192.168.133.129:8803
#nginx部署访问nacos集群
spring.cloud.nacos.discovery.server-addr=192.168.133.129:80

#nacos的用户名和密码
spring.cloud.nacos.username=nacos
spring.cloud.nacos.password=nacos

#是否开启配置的自动刷新,默认是true表示自动刷新
spring.cloud.nacos.config.refresh-enabled=true

#nacos配置中心的连接地址
#spring.cloud.nacos.config.server-addr配置的方式为,域名:port,如 Nacos的域名为nacos.com,监听的端口为80
#则spring.cloud.nacos.config.server-addr=nacos.com:80,注 80 端口不能省略
#nacos单机
#spring.cloud.nacos.config.server-addr=192.168.133.129:8848
#nacos集群
#spring.cloud.nacos.config.server-addr=192.168.133.129:8801,192.168.133.129:8802,192.168.133.129:8803
#nginx部署访问nacos集群
spring.cloud.nacos.config.server-addr=192.168.133.129:80

以上是关于SpringCloud - Spring Cloud Alibaba 之 Nacos Config配置数据;MySQL持久化;Nacos集群的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud总结29.Zuul的FallBack回退机制

基于consul的服务注册(含踩坑过程)

Oauth2.0 整合springCloud的Zuul 解决关键BUG 报错信息:Principal must not be null

Spring Cloud Alibaba - 02 SpringCloud SpringCloud Alibaba SpringBoot的生产版本选择

Spring Cloud

spring cloud 服务注册、发现了解