Nacos学习笔记

Nacos数据库持久化

1、创建数据库结构

执行nacos\conf目录下有一个nacos-mysql.sql的数据库脚本
在这里插入图片描述

2、修改配置文件配置

修改nacos\conf目录下的application.properties文件
在这里插入图片描述

#*************** Config Module Related Configurations ***************#
### If user MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:  单实例配置
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://10.0.0.45:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root



### Count of DB:  集群实例配置
#db.num=2

### Connect URL of DB:
#db.url.0=jdbc:mysql://10.0.0.45:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
#db.url.1=jdbc:mysql://10.0.0.46:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
#db.user=root
#db.password=root

Nacos集群配置

1.创建3个nacos节点

2. 修改节点下\conf\application.properties配置

### Specify local server's IP:
nacos.inetutils.ip-address=127.0.0.1

3.每个节点下添加cluster.conf文件

在这里插入图片描述

#每个节点的ip
127.0.0.1:8848
127.0.0.1:8849
127.0.0.1:8850

4.启动nacos

  • windows下需要修改startup.cmd脚本内容

    将if判断内的参数调换,默认使用集群模式启动

    if %MODE% == "standalone" (
        set "JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
        set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%BASE_DIR%\logs\java_heapdump.hprof"
        set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages"
    ) else (
        set "JAVA_OPT=%JAVA_OPT% -Xms512m -Xmx512m -Xmn256m"
        set "JAVA_OPT=%JAVA_OPT% -Dnacos.standalone=true"
    )
    
  • linux下命令启动

    sh startup.sh -m cluster
    

5.成功启动后截图

在这里插入图片描述
在这里插入图片描述

6. 服务注册nacos集群

注意:加载配置中心的资源文件必须为bootstrap.yml,否则无法加载nacos配置文件

spring:
  cloud:
    nacos:
      discovery:
      	# 也可以通过域名+vip绑定多个实例的ip和端口
        server-addr: 127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850

Nacos配置中心

1.引入nacos配置依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

2.Nacos配置中心创建配置文件

在这里插入图片描述

Nacos下Data Id有默认的生成规则

${prefix}-${spring.profile.active}.${file-extension}
  • prefix默认为spring.application.name的值,也可以通过spring.cloud.nacos.config.prefix来指定
  • spring.profile.active为空时,对应的连接符"-"也将不存在,dataId格式变为
${prefix}.${file-extension}
  • file-extension为配置内容的数据格式,通过spring.cloud.nacos.config.file-extension来配置。目前只支持properties和yaml类型。
spring:
  application:
  	# 服务实例名称
    name: lagou-service-resume
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850
      config:
        server-addr: 127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850
        # 文件后缀
        file-extension: yaml
        # 命名空间
        namespace: b8be4061-13d1-485b-8d59-f4633552b847
        # 配置文件所属分组
        group: DEFAULT_GROUP
        # 读取多个配置文件
        ext-config[0]:
          data-id: abc.yaml
        ext-config[1]:
          data-id: def.yaml

3.代码示例

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
    // 和取本地配置信息⼀样
    @Value("${lagou.message}")
    private String lagouMessage;
    @Value("${mysql.url}")
    private String mysqlUrl;

    @Value("${abc.test}")
    private String abc;
    @Value("${def.test}")
    private String def;

    @GetMapping("/viewconfig")
    public String viewconfig() {
        return "lagouMessage==>" + lagouMessage + " mysqlUrl=>" + mysqlUrl
                + " abc=>" + abc+ " def=>" + def;
    }
}

4.管理基础配置数据

在不同环境的配置文件普遍存在固定的配置项,例如:spring.application.name=lagou-service-resume。对于这种基础的全局配置,我们将其存放到单独的lagou-service.yml文件中。因为不带环境名的配置文件必然会被加载。

5.配置文件优先级

  • lagou-service-resume.yaml
    lagou-service-resume.yaml

  • abc.yml
    abc.yaml

  • def.yaml
    def.yaml

测试结果
在这里插入图片描述
当主配置类文件和扩展配置类文件同时拥有${lagou.message}参数时候以主配置类文件信息为准

当多个扩展配置类拥有${def.test}参数时,根据ext-config中的配置顺序,顺序越靠后的优先级越高

6.配置热加载原理

Nacos采用的是Pull拉取模式。
是一种长轮训机制。客户端采用长轮询的方式定时发起pull请求去检查服务端配置是否发生了变更,如果变更了,客户端会获取最新的配置。
简单来说就是,客户端发起轮训请求后,服务端有配置发生变化,就直接返回。

如果客户端发起Pull请求后,服务端和客户端配置一致,服务端拿到该链接后在指定时间内会一直不返回结果,直到服务端配置发生变更才回返回。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值