Nacos相关官网
springclpudalibaba官网:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
nacos下载地址:https://github.com/alibaba/nacos/releases
官方网址:http://nacos.io
什么是nacos
Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。
官方介绍是这样的:
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。
安装nacos
进入bin 启动nacos
访问 http://127.0.0.1:8848/nacos/index.html 账号密码nacos
快速上手
父pom
<?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>com.atguigu.springcloud</groupId>
<artifactId>cloud20</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>cloud-provider-payment8001</module>
<module>cloud-consumer-order80</module>
<module>cloud-api-commons</module>
<module>cloud-eureka-server7001</module>
<module>cloud-eureka-server7002</module>
<module>cloud-provider-payment8002</module>
<module>cloud-provider-payment8002</module>
<module>cloud-provider-zookeeper8004</module>
<module>cloud-consumer-feign-order80</module>
<module>cloud-consumer-hystrix-dashoard9001</module>
<module>cloud-consumer-hystrix-dashoard9001</module>
<module>springcloud-gatway-gatway9527</module>
<module>cloud-stream-rabbitmq-provider8801</module>
<module>cloud-stream-rabbitmq-consumer8802</module>
<module>cloudalibaba-provider-payment9001</module>
</modules>
<packaging>pom</packaging>
<!-- 统一管理jar包版本 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<junit.version>4.12</junit.version>
<log4j.version>1.2.17</log4j.version>
<lombok.version>1.16.18</lombok.version>
<mysql.version>5.1.47</mysql.version>
<druid.version>1.1.21</druid.version>
<mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
</properties>
<!-- 子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version -->
<dependencyManagement>
<dependencies>
<!--spring boot 2.2.2-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring springcloud Hoxton.SR1-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring springcloud alibaba 2.1.0.RELEASE-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring.boot.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
</project>
新建工程cloudalibaba-provider-payment9001
<?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">
<parent>
<artifactId>cloud20</artifactId>
<groupId>com.atguigu.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloudalibaba-provider-payment9001</artifactId>
<dependencies>
<!-- SpringCloud alibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 引入自定义的api通用包 -->
<dependency>
<groupId>com.atguigu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
</project>
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #配置nacos地址
management:
endpoints:
web:
exposure:
include: "*"
然后启动工程cloudalibaba-provider-payment9001(成功)
nacos服务配置
nacos可以从服务中心拉取配置文件
快速上手
<?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">
<parent>
<artifactId>cloud20</artifactId>
<groupId>com.atguigu.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloudalibaba-config-nacos-client3377</artifactId>
<dependencies>
<!-- nacos config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- SpringCloud alibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
</project>
bootstrap.yml(加载优先于yml)
server:
port: 3377
spring:
profiles:
active: dev
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # Nacos 服务注册中心地址
config:
server-addr: 127.0.0.1:8848 # Nacos 作为配置中心地址
file-extension: yaml #指定yaml格式的配置 yml会报错,nacos识别yaml
namespace: e62370c3-1878-4fce-b508-f66b3c993626
group: DEFAULT_GROUP
@RestController
@RefreshScope //通过SpringCloud原生注解 @RefreshScope 实现配置自动更新
public class ConfigClientController {
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo() {
return configInfo;
}
}
然后需要从nacos中心拉取配置文件信息
1.新建命名空间(命名空间id对应bootstrap配置文件中的namespace)
- 新建nacos-config-client-dev.yaml 命名规则(对应bootstrap配置文件{spring.application.name}-{spring.profile.active}.{spring.cloud.nacos.config.file-extension})
所以新建文件名字叫nacos-config-client-dev.yaml (也可以不写分支dev)
(下图是bootstrap和nacos中心配置文件对应关系)
内容如下
访问http://localhost:3377/config/info
总结
nacos配置中心文件命名spring.applicantion.name+格式yaml
如果有分支则spring.applicantion.name+spring.profiles.active+格式yaml
nacos多环境配置
bootstrap.yml
server:
port: 8888
spring:
profiles:
active: dev
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: 192.168.174.10:8848 # Nacos 服务注册中心地址
config:
server-addr: 192.168.174.10:8848 # Nacos 作为配置中心地址
file-extension: yaml #指定yaml格式的配置 yml会报错,nacos识别yaml
namespace: e62370c3-1878-4fce-b508-f66b3c993626
group: DEFAULT_GROUP
nacos如图这两份配置都起效果
nacos-config-client.yaml (服务名.yaml)
nacos-config-client-dev.yaml (服务名+分支.yaml)
从注册中心引入配置下来
bootstrap.yml
server:
port: 8888
spring:
profiles:
active: dev
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: 192.168.174.10:8848 # Nacos 服务注册中心地址
config:
server-addr: 192.168.174.10:8848 # Nacos 作为配置中心地址
file-extension: yaml #指定yaml格式的配置 yml会报错,nacos识别yaml
group: DEFAULT_GROUP
shared-dataids: all-service.yaml #从配置中心要引入的配置
refreshable-dataids: all-service.yaml #可以刷新