nacos服务配置和持久化配置

目录

  • 一、Nacos服务注册中心对比提升
    • CAP模型
  • 二、Nacos服务配置中心
    • 1. 添加依赖
    • 2. 配置application.yaml
    • 3. 配置bootstrap.yaml
    • 4. 平台创建配置规则
    • 5. 业务层编写
    • 6. 访问获取配置内容
    • 7. Nacos动态刷新(@RefreshScope注解)
  • 三、切换不同环境
    • 1. DateId方案
    • 2. Group方案
    • 3. Namespace空间方案
  • 四、Nacos持久化配置
    • 1. derby数据库
    • 2. 切换MySql数据库
      • ① 创建数据库
      • ② 在数据库中执行navos-mysql.sql脚本
      • ③ 修改application.properties文件
      • ④ 测试


在这里插入图片描述

一、Nacos服务注册中心对比提升

服务注册与发现框架 CAP模型 控制台管理 社区活跃度
Eureka AP 支持 低(2.x版本闭源)
Zookeeper CP 不支持
Consul CP 支持
Nacos AP 支持

CAP模型

  • 一致性(Consistency):同一时刻的同一请求的实例返回的结果相同,所有的数据要求具有强一致性(Strong Consistency)
  • 可用性(Availability):所有实例的读写请求在一定时间内可以得到正确的响应
  • 分区容错性(Partition tolerance):在网络异常(光缆断裂、设备故障、宕机)的情况下,系统仍能提供正常的服务

以上三个特点就是CAP原则(又称CAP定理),但是三个特性不可能同时满足,所以分布式系统设计要考虑的是在满足P(分区容错性)的前提下选择C(一致性)还是A(可用性),即:CP或AP。

二、Nacos服务配置中心

1. 添加依赖

<dependency>
    <groupId>com.alibaba.cloudgroupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
    <version>2021.1version>
dependency>
<dependency>
    <groupId>com.alibaba.cloudgroupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
    <version>2021.1version>
dependency>

2. 配置application.yaml

spring:
  profiles:
    active: dev #表示开发环境

3. 配置bootstrap.yaml

# nacos配置
server:
  port: 3377
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery: #注册
        server-addr:
          localhost: 8848 #Nacos服务注册中心地址
      config: #开启配置中心
        server-addr:
          localhost: 8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置

# 官方给出的格式
# ${prefix}-${spring.profiles.active}.${file-extension}
# ${spring.application.name}-${spring.profiles.active}.${file-extension}

# 实际格式
# nacos-config-client-dev.yaml

4. 平台创建配置规则

nacos服务配置和持久化配置_第1张图片
nacos服务配置和持久化配置_第2张图片

5. 业务层编写

@RestController
@RefreshScope //支持Nacos动态刷新功能
public class ConfigClientController {
    @Value("${config.info}")
    private String configInfo;
    @GetMapping("/config/info")
    public String getConfigInfo(){
        return configInfo;
    }
}

6. 访问获取配置内容

nacos服务配置和持久化配置_第3张图片

7. Nacos动态刷新(@RefreshScope注解)

业务层引入的注解@RefreshScope支持Nacos动态刷新功能

nacos服务配置和持久化配置_第4张图片nacos服务配置和持久化配置_第5张图片
nacos服务配置和持久化配置_第6张图片

三、切换不同环境

1. DateId方案

首先按照之前的步骤,在平台创建两个配置(dev和test)

nacos服务配置和持久化配置_第7张图片
nacos服务配置和持久化配置_第8张图片
重启项目,测试是否切换到test环境的配置nacos服务配置和持久化配置_第9张图片

2. Group方案

Group分组默认是DEFAULT_GROUP,所以我们需要分出两组:一组是dev开发组,一组为test测试组
nacos服务配置和持久化配置_第10张图片nacos服务配置和持久化配置_第11张图片查看配置列表,检查是否配置成功
nacos服务配置和持久化配置_第12张图片
变更application.yamlbootstrap.yaml配置文件,测试info下的test:
nacos服务配置和持久化配置_第13张图片
重新访问,查看是否切换成功分组
nacos服务配置和持久化配置_第14张图片

3. Namespace空间方案

新建test和dev两个命名空间
nacos服务配置和持久化配置_第15张图片
nacos服务配置和持久化配置_第16张图片
nacos服务配置和持久化配置_第17张图片
nacos服务配置和持久化配置_第18张图片
修改配置文件nacos服务配置和持久化配置_第19张图片
手动在test命名空间下新建三个分组
nacos服务配置和持久化配置_第20张图片
访问测试
nacos服务配置和持久化配置_第21张图片

四、Nacos持久化配置

1. derby数据库

Nacos中会默认自带嵌入式数据库derby,所以我们每次创建一个Nacos实例就会有一个derby,当有多个Nacos节点的时候,就会出现一致性问题,所以Nacos支持外部数据库统一管理MySql。

2. 切换MySql数据库

① 创建数据库

在数据库中创建nacos_config库
CREATE DATABASE nacos_config;

② 在数据库中执行navos-mysql.sql脚本

nacos服务配置和持久化配置_第22张图片
该库中会出现如下的表:

nacos服务配置和持久化配置_第23张图片

③ 修改application.properties文件

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC
db.user=nacos_devtest
db.password=youdontknow

nacos服务配置和持久化配置_第24张图片nacos服务配置和持久化配置_第25张图片

④ 测试

启动nacos
nacos服务配置和持久化配置_第26张图片
新建配置
nacos服务配置和持久化配置_第27张图片
查看本地数据库,数据存在,说明切换mysql数据库成功!
nacos服务配置和持久化配置_第28张图片

你可能感兴趣的:(spring,cloud,微服务,java)