nacos
下载nacos
单机启动方式
服务发现与注册
配置中心
动态更新
配置外置Mysql
集群搭建
下载nacos
https://nacos.io/zh-cn/docs/quick-start.html
单机启动方式
以2.1.0版本的nacos为例,bin/startup.cmd默认模式是cluster会启动失败。
使用命令行启动,指定模式为standalone
控制台地址,默认的账号密码是 nacos nacos
http://169.254.14.221:8848/nacos/
服务发现与注册
注意springcloud需要与springcloud-alibaba与nacos版本对照。贴一下我这里使用的版本。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.datang</groupId>
<artifactId>api</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<spring-cloud.version>Hoxton.SR9</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
配置yml文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
server:
port: 8080
spring:
application:
name: api
cloud:
nacos:
discovery:
server-addr: 127.00.1:8848
启动项目后,在nacos控制台可以看到服务已经注册。
指定namespace和group
namespace需要在控制台创建,group需要在配置文件中指定。命名空间->分组->服务名
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
spring:
cloud:
nacos:
discovery:
namespace: 025c6a5b-cc0d-45a4-ba81-bc25eb530789
group: group1
server-addr: 127.00.1:8848
配置中心
首先在nacos控制台增加配置文件,注意Data ID是服务名也就是spring.application.name。
在项目中创建bootstrap.yml文件,bootstrap.yml的优先级高于application.yml,需要有以下配置。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
spring:
application:
name: api
cloud:
nacos:
config:
server-addr: 127.00.1:8848
file-extension: yml
项目启动后,依然是注册到了namespace1中的group1里,说明配置文件生效了,这里也可以看出,注册中心和配置中心使用的不是一个namespace和group也可以,如果想要设置namespace和group需要以下配置。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
spring:
application:
name: api
cloud:
nacos:
config:
namespace: 025c6a5b-cc0d-45a4-ba81-bc25eb530789
group: group1
server-addr: 127.00.1:8848
file-extension: yml
动态更新
动态更新主要依赖于@RefreshScope注解,在nacos修改配置后不用重启也可以刷新配置。
多环境配置首先在bootstrap中声明使用环境,然后再nacos配置中心配置对应的文件。需要注意的是,如果使用多环境Data Id就不能只是服务名了,要带上文件后缀。其实不是多环境也可以带上文件后缀。以下代码api,api-dev,api-test的端口号分别是8080,7080,6080,启动项目后可以看到端口号是有变化的。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
spring:
application:
name: api
profiles:
active: dev
cloud:
nacos:
config:
namespace: 025c6a5b-cc0d-45a4-ba81-bc25eb530789
group: group1
server-addr: 127.00.1:8848
file-extension: yml
配置外置Mysql
nacos只支持配置mysql数据库并且要求mysql的版本必须是5.6.5+。
修改application.properties文件,配置自己的mysql数据源
找到conf文件夹下的nacos-mysql.sql执行sql脚本。
数据库中只存了配置管理的内容。
集群搭建
集群搭建只需要新增一个集群文件cluster.conf,不需要修改其他内容,java客户端连接时指定多个server-addr即可。
169.254.14.221:8840
169.254.14.221:8850
169.254.14.221:8860
2022-06-28 22:06:27,712 INFO Nacos started successfully in cluster mode. use external storage