微服务搭建-配置中心Nacos

前言

目前测试成功的是SpringBoot 2.3.12.RELEASE 版本,更高的版本还不行。

现在IDEA创建项目默认的是2.6.3版本,还未找到对应的Nacos版本

服务器

下载地址:https://github.com/alibaba/nacos/releases/tag/1.4.0

服务端是使用Java开发的,同时支持Linux和Windows

环境要求

  1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
  2. 64 bit JDK 1.8+。

注意

  1. 必须配置JAVA_HOME
  2. 路径中不能包含中文和数字,否则会报错此时不应有 \nacos"\logs\java_heapdump.hprof -XX:-UseLargePages"

安装

使用本地数据库不用配置 直接运行即可,使用MySQL就要修改一下配置文件,推荐使用MySQL方式。

使用本地数据库

Linux/Unix/Mac

启动命令(standalone代表着单机模式运行,非集群模式):

1
sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

1
bash startup.sh -m standalone

Windows

启动命令(standalone代表着单机模式运行,非集群模式):

1
startup.cmd -m standalone

使用MySQL

  1. 新建一个实例名为nacos的数据库,并执行nacos/conf下的nacos-mysql.sql文件创建表

  2. 修改数据库配置

    打开conf下的application.properties文件,修改以下配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ### If use MySQL as datasource:
    spring.datasource.platform=mysql

    ### Count of DB:
    db.num=1

    ### Connect URL of DB:
    db.url.0=jdbc:mysql://dbtest.xhkjedu.com:13306/wn_nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    db.user.0=root
    db.password.0=_xhkjedu!@#07
  3. 修改为单机模式

    如果不是部署nacos集群,则将模式修改为单机模式

    打开bin/startup.cmd 文件,将MODEcluster改为standalone

  4. 修改完后双击bin/startup.cmd文件,启动成功,推荐在CMD中运行startup.cmd文件,这样如果报错能看到错误信息。

访问

打开浏览器访问:

http://localhost:8848/nacos/index.html

输入用户名/密码访问 nacos/nacos 登录nacos

添加配置

启动好Nacos之后,在Nacos添加如下的配置:

Data ID:nacos-config.properties
Group:DEFAULT_GROUP
配置格式:Properties
配置内容:

1
2
user.name=小明
user.age=18

客户端

依赖

注意Spring Boot和Nacos版本必须匹配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath/>
</parent>

<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
</dependencies>

项目下添加配置文件bootstrap.properties

1
2
spring.application.name=nacos-config
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

这样Application中就能取到值了

1
2
3
4
5
6
7
8
9
10
11
12
13
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class SConfigApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(SConfigApplication.class, args);
String userName = applicationContext.getEnvironment().getProperty("user.name");
String userAge = applicationContext.getEnvironment().getProperty("user.age");
System.err.println("user name :"+userName+"; age: "+userAge);
}
}

运行就会打印

user name :小明; age: 18