1、环境准备
- 我的环境
- Windows10
- JDK8
- SpringBoot:2.2.5.RELEASE
- spring-cloud-alibaba-dependencies:2.2.1.RELEASE
- Nacos-server:1.1.4
组件版本关系参考官网
父类工程POM文件
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<groupId>com.ads.nacos</groupId>
<artifactId>spring-cloud-dubbo-nacos</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<modules>
<module>nacos-api</module>
<module>nacos-provider</module>
<module>nacos-concumer</module>
</modules>
</project>
API 工程POM文件
<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>
<parent>
<groupId>com.ads.nacos</groupId>
<artifactId>spring-cloud-dubbo-nacos</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>nacos-api</artifactId>
</project>
provider POM文件
<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>
<parent>
<groupId>com.ads.nacos</groupId>
<artifactId>spring-cloud-dubbo-nacos</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>nacos-provider</artifactId>
<dependencies>
<dependency>
<groupId>com.ads.nacos</groupId>
<artifactId>nacos-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
consumer POM文件
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.ads.nacos</groupId>
<artifactId>spring-cloud-dubbo-nacos</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>nacos-concumer</artifactId>
<dependencies>
<dependency>
<groupId>com.ads.nacos</groupId>
<artifactId>nacos-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<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>
2、配置文件
Spring Boot 配置文件的加载顺序,依次为 bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml ,其中 bootstrap.properties 配置为最高优先级,配置如下:
nacos-config:
- group:config的分组
- file-extension:动态配置文件类型
注意:
若是引用了config的pom,这里必须使用 bootstrap.properties
进行配置,否则启动回报连接超时
注意:你可以使用 spring.cloud.nacos.config.refresh.enabled=false 来关闭动态刷新
可通过spring.profiles.active切换部署环境配置
其Data ID它的定义规则是:${prefix}-${spring.profile.active}.${file-extension}
2.1添加本地配置
bootstrap.properties修改spring.cloud.nacos.config.prefix=application-provider-1
application.yml 修改server.port:8008和dubbo.protocol.port:8998
application-provider-1.yml添加如下配置
localConfig: abc
bootstrap.properties修改spring.cloud.nacos.config.prefix=application-provider-2
application.yml 修改server.port:8009和dubbo.protocol.port:8999
application-provider-2.yml添加如下配置
localConfig: ABC
在引入配置文件的类上增加 @RefreshScope
注解,表示这个类下的配置内容支持动态刷新
2.2修改服务端配置
服务发现:
2.3配置文件
服务提供方 - 服务消费方
4、服务注册发现
启动2个配置下的consumer可以发现实例数为2,点开详情dubbo的2个端口发现为8998、8999
3、RPC服务调用
服务提供:
服务调用:
调用的version、group需保持一致
服务调用结果:
调用查看配置接口,可以发现服务端实现负载均衡