什么是Nacos
Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,具有配置管理和服务发现两大功能
配置中心
-
系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移
-
这样配置就分散了,不仅如此,分散中还包含着冗余
为什么使用配置中心
-
应用程序在启动和运行的时候往往需要读取一些配置信息
-
配置基本上伴随着应用程序的整个生命周期
-
配置中心将配置从应用中剥离出来,再通过加载配置文件的顺序不同,实现差异化配
安装并启动 Nacos
去 github
下载 Nacos
压缩包,解压缩到本地即可,地址
以 Nacos-1.1.4
为分界线,1.1.4
之上的版本,对应的 mysql
版本为 8.0
;1.1.4
之下对应的是 mysql 5.7
,与 mysql
版本不匹配,无法使用
下载解压缩之后
-
首先要创建一个名为
nacos-mysql
的数据库,创建数据库的sql
文件位于${nacos_dir}/conf/nacos-mysql.sql
-
修改其中的配置文件
${nacos_dir}/conf/application.properties
,在其中添加mysql
相关信息
# 链接外部mysql数据库
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1/nacos-mysql?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=uour_username
db.password=your_password
- 双击
${nacos-dir}/bin/startup.cmd
启动nacos
,出现如下界面,启动成功
nacos
的默认启动端口为8848
,登录账户和密码均为nacos
,登录之后,页面如下
3 Nacos 应用于微服务
3.1 读取微服务的配置
- 在微服务项目中要使用
Nacos
,首先要引入依赖
<!--SpringCloud Alibaba依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--SpringCloud依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--SpringBoot依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--jsckson依赖需要引入,否则有概率项目无法启动-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.2</version>
</dependency>
<!--SpringCloud Alibaba Nacos 配置依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
<!--SpringBoot Web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
- 在微服务项目中,
Nacos
依赖于SpringCloud Alibaba
、SpringCloud
、SpringBoot
相互依赖,需要确定一直对应的版本号,否则项目启动会出错,具体的版本对应关系如下
SpringBoot、SpringCloud、SpringCloud Alibaba 毕业版本对照表:
SpringCloud Alibaba 各组件版本对照表
- 接下来是项目中配置文件的编写(文件命名必须是
bootstrap.yml
,否则读取到的配置为空)
server:
port: 8082
spring:
application:
name: service-two
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml # dataId = name + file-extension(必须是yaml,不能是yml)
namespace: 08714022-716d-438b-8d20-1c52a9b5a205
group: SKG
注意点:
Nacos
配置文件的名称必须是:bootstrap.yml
,在项目中会变成一个带云朵的小绿叶
-
在
Nacos
配置中心管理端,假如配置的dataId
为nacos-test.yaml
,那么在项目的配置文件中,name
必须为nacos-test
,file-extension
必须为yaml
,项目启动后会根据dataId = name + file-extension
的形式去匹配dataId
-
配置文件中的
namespace
必须是那一长串号码,直接写namespace
的名称(dev
、public
等)无效
- 配置文件写好之后,在项目中想要读取配置中心的配置,直接使用
@Value
注解便可取到值
@Value("${spring.port}")
private String port;
- 使用
@Value
注解拿到的值,不会根据远程配置的修改而变化,想要达到远程与项目配置同时更改的效果,需要使用环境上下文来实现
@Autowired
private ConfigurableApplicationContext applicationContext;
@GetMapping("/config1")
public String config(){
return applicationContext.getEnvironment().getProperty("spring.port");
}
标签:配置文件,spring,配置,Nacos,笔记,nacos,mysql
From: https://www.cnblogs.com/wudaojiuxiao/p/16893911.html