C/C++教程

nacos使用总结

本文主要是介绍nacos使用总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Nacos: 注册中心、配置中心

一、安装Nacos

1. 下载安装nacos

要注意和JDK的版本有无冲突,贼勾8坑,不行就换个低版本的nacos

zip下载地址

往下拉,看到最稳定版本
解压,进入bin目录(nacos\bin),编辑startup.cmd设置为单机启动

rem set MODE="cluster"
set MODE="standalone"

双击startup.cmd启动nacos

2. 登录nacos客户端

账号密码都是nacos

nacos登录页面

至此nacos已经安装完成

二、做注册中心 nacos discovery

1. 添加依赖

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

引入依赖应该注意和SpringBoot版本的兼容性,否则启动会报错

由于 `Spring Boot 1 和 Spring Boot 2 在 Actuator 模块的接口和注解有很大的变更,且 spring-cloud-commons 从 1.x.x 版本升级到 2.0.0 版本也有较大的变更,因此我们采取跟 SpringBoot 版本号一致的版本:

  • 1.5.x 版本适用于 Spring Boot 1.5.x
  • 2.0.x 版本适用于 Spring Boot 2.0.x
  • 2.1.x 版本适用于 Spring Boot 2.1.x
  • 2.2.x 版本适用于 Spring Boot 2.2.x

2. 在启动类添加@EnableDiscoveryClient注解

package com.example.nacos.discovery;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 
@SpringBootApplication
@EnableDiscoveryClient
public class NacosDiscoveryApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosDiscoveryApplication.class, args);
    }
}

3. 配置命名空间

4. 在bootstrap.yml中添加nacos服务的地址

bootstrap加载优先级高于application

spring:
  application:
    name: nacos-practise
  cloud:
    nacos:
      # 注册中心
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: ${namespaceID}

5. 启动项目,登录nacos查看项目是否已经被注册进去了

三、做配置中心 nacos config

nacos config可以动态读取配置文件的值

1. 配置命名空间

2. 编辑配置信息

在Nacos-Server中新建配置,其中Data ID它的定义规则是:${prefix}-${spring.profile.active}.${file-extension}

  • prefix默认为spring.application.name的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置。
  • spring.profile.active即为当前环境对应的profile,可以通过配置项spring.profile.active来配置。
  • file-exetension为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension来配置。目前只支持propertiesyaml类型。

注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}

3. 项目添加依赖

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

引入依赖同样需要注意和SpringBoot版本的兼容性

4. 在bootstrap.yml中添加nacos服务的地址

spring:
  application:
    name: nacos-practise
  profiles:
    active: practise
  cloud:
    nacos:
      # 配置中心
      config:
      	server-addr: 127.0.0.1:8848
      	namespace: ${namespaceID}
      	prefix: ${spring.application.name}
      	file-extension: yml #此处配置需要和 Data Id 配置的一致,即yaml-yaml;yml-yml
      	group: DEFAULT_GROUP

5. 多环境配置的三种方式

  1. 通过DataId和profiles实现

    在配置文件中指定spring.profiles.active = **,然后在nocas客户端新建对应的${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}配置来区分不同的环境。

  2. 通过Group实现

    为不同的环境新建不同的分组,然后在配置文件中指定spring.cloud.nacos.config.group=组名,这样也可以实现不同环境的区分。

  3. 通过Namespace实现

    这种方式是官方建议的方式,通过创建不同的命名空间使用不同的环境配置

6. 测试项目动态读取nacos配置文件中的数据

使用@RefreshScope动态刷新配置信息

7. 拓展

当微服务数量很庞大时,将所有配置都书写到一个配置文件中,显然不是太合适。对此我们可以将配置按照功能的不同,拆分为不同的配置文件。

例如:

数据库配置:

spring:
  datasource: 
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: 123456

redis配置:

spring:
  redis:
  	database: 0

mybatis配置:

mybatis:
  mapper-locations: classPath:mybatis/mapper/*.xml
  configuration: 
  	log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
  	
pagehelper:
  auto-dialect: mysql

此时在nacos中可以配置三个Data Id :datasource.yml、redis.yml、mybatis.yml

项目配置文件:

spring:
  application:
    name: nacos-practise
  profiles:
    active: practise
  cloud:
    nacos:
      # 配置中心
      config:
      	server-addr: 127.0.0.1:8848
      	namespase: ${namespaceID}
      	prefix: ${spring.application.name}
      	file-extension: yml 
      	group: DEFAULT_GROUP
      	extension-configs:
          - data-id: datasource.yaml
          	group: DEFAULT_GROUP   # 默认为DEFAULT_GROUP
          	refresh: true   # 是否动态刷新,默认为false
          - data-id: redis.yaml
          	group: DEFAULT_GROUP
          	refresh: true
          - data-id: mybatis.yaml
          	group: DEFAULT_GROUP
          	refresh: true

配置的优先级
目前提供了三种配置能力从 Nacos 拉取相关的配置

  • A: 通过 spring.cloud.nacos.config.shared-configs[n].data-id 支持多个共享 Data Id 的配置
  • B: 通过 spring.cloud.nacos.config.extension-configs[n].data-id 的方式支持多个扩展 Data Id 的配置
  • C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置

当三种方式共同使用时,他们的一个优先级关系是:A < B < C

这篇关于nacos使用总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!