SpringCloudAlibaba----Nacos注册配置中心

一. 简介

nacos是阿里开源的分布式服务治理工具,集成了Eureka和分布式配置中心的功能,包括注册中心,配置中心等

二. 使用

1. 下载并启动nacos

①. 从github上下载nacos

nacos下载地址

②. 环境要求
  • JDK 1.8+
  • Maven 3.2.x+
③. 运行nacos

windows使用cmd直接运行便可,mac使用sh,进入bin目录下,执行(standalone代表着单机模式运行,非集群模式)

sh startup.sh -m standalone

SpringCloudAlibaba----Nacos注册配置中心_第1张图片

④. 进入nacos可视化界面

nacos默认地址

默认账号密码都是 nacos
SpringCloudAlibaba----Nacos注册配置中心_第2张图片

2. 注册中心

①. 创建一个SpringBoot工程
②. 引入maven依赖

这里使用的是SpringCloud对应的依赖,官网也也提供了SpringBoot对应的依赖
目前建议nacos使用2.2.5.RELEASE为最新版本,SpringBoot使用2.3.2.RELEASE版本

如果SpringBoot使用最新的2.5.0会产生很多的版本依赖问题,因为SpringCloudAlibaba目前还没有适配2.5.0这个版本,具体版本对照参考官网

SpringCloudAlibaba----Nacos注册配置中心_第3张图片

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>
③.编写配置文件
spring:
  application:
    # 设置服务名称
    name: nacos-demo
  cloud:
    nacos:
      discovery:
        # nacos注册中心地址
        server-addr: 127.0.0.1:8848
server:
  #端口号
  port: 9999
④. 启动项目

可以看到服务已经被成功注册了
SpringCloudAlibaba----Nacos注册配置中心_第4张图片

3. 配置中心

①. 引入maven依赖
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>
②. 在nacos创建命名空间和配置文件
  1. 创建命名空间

命名空间可以用来区分不同的配置文件,也可以用来区分不同的服务,类似创建了一个文件夹
SpringCloudAlibaba----Nacos注册配置中心_第5张图片

  1. 创建配置文件

SpringCloudAlibaba----Nacos注册配置中心_第6张图片

SpringCloudAlibaba----Nacos注册配置中心_第7张图片

②.编写配置文件

这里需要按照nacos config的官方要求,创建bootstrap.propertie作为其配置文件(bootstrap.properties会优先于application.properties和application.yml被读取)

# nacos config地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 命名空间
spring.cloud.nacos.config.namespace=3a3923af-f8e1-4e2e-bd49-bd8c9ec8273e
③.编写demo测试
package com.xx.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author aqi
 * DateTime: 2021/6/10 3:52 下午
 * Description: No Description
 */
@RestController
public class DemoController {

    @Value("${nacos.username}")
    private String username;

    @GetMapping("/demo")
    public void demo() {
        System.out.println(username);
    }
}

成功获取到了配置文件中的信息

SpringCloudAlibaba----Nacos注册配置中心_第8张图片

④. 动态刷新

新版的naocs默认开启了动态刷新,只要修改在nacos上修改了配置文件,代码层也是会实时生效的,但是我这里经常修改失败,就不演示了,直接删了,重新建一个也是可以生效的

三. 配置详解

nacos config提供了各种配置,包括:自定义配置文件,多配置文件,命名空间,分组,动态刷新等等,更多的配置可以查看官网的参数介绍

# nacos config地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 命名空间
spring.cloud.nacos.config.namespace=3a3923af-f8e1-4e2e-bd49-bd8c9ec8273e
# 动态刷新,默认为true,开启
spring.cloud.nacos.config.refresh-enabled=true

#文件后缀名(默认为properties,默认读取nacos-demo.properties如果修改为yml则读取nacos-demo.yml)
#spring.cloud.nacos.config.file-extension=yml

# 自定义配置文件(前提是nacos中没有nacos-demo.properties配置文件,否则依旧会有限读取nacos-demo.properties中的数据)
#spring.cloud.nacos.config.shared-configs=username.yml

# 定义多个配置文件,可以用于区分mysql.yml,oss.yml,或者其他第三方的配置信息
#spring.cloud.nacos.config.shared-configs[0]=usernamee.yml
#spring.cloud.nacos.config.shared-configs[1]=age.yml

# 也可以通过这种方式来定义多个配置文件,使用group来区分不同的环境,如dev或者prod
#spring.cloud.nacos.config.shared-configs[0].data-id=username.yml
#spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP
#spring.cloud.nacos.config.shared-configs[0].refresh=false


四. 总结

由于Eureka闭源,nacos成了非常不错的选择,但是选型的时候最好选择稳定的版本,因为我目前使用的2.0.1偶尔会出现各种bug,但是不影响其作为注册中心的功能,大部分的问题出现在作为配置中心的时候

你可能感兴趣的:(阿里云,java,nacos,spring,cloud,alibaba)