1.nacos安装
请参考 : docker 安装 nacos 1.X
2.项目父工程
请参考 : SpringCloud H系列 alibaba 2.1.1 (一) nacos1.X 注册中心 服务端
3.项目结构
4.创建Dubbo api 子工程(存放公共类)
pom.xml
<parent>
<groupId>com.alibaba</groupId>
<artifactId>spring-cloud-hoxton</artifactId>
<version>1.0</version>
</parent>
<artifactId>alibaba-dubbo-api</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
TestService.java 创建测试接口
/**
* 测试API接口
*/
public interface TestService {
String test(String name);
}
5.创建Dubbo 服务端子工程(双端负载均衡)
首先在nacos创建两个配置文件 application-dubbo-server-1.yml 与 application-dubbo-server-2.yml
application-dubbo-server-1.yml
dubbo:
protocol:
# 使用dubbo协议通信
name: dubbo
# dubbo 协议端口(-1表示自增端口,从20880开始)
port: -1
# 挂载到 Spring Cloud 注册中心
registry:
address: spring-cloud://localhost
scan:
# 指定 Dubbo 服务实现类的扫描基准包
base-packages: com.alibaba.dubbo.server.service
server:
port: 8000
application-dubbo-server-2.yml 将 端口改为 8001
创建服务端子工程
pom.xml
<parent>
<groupId>com.alibaba</groupId>
<artifactId>spring-cloud-hoxton</artifactId>
<version>1.0</version>
</parent>
<artifactId>alibaba-dubbo-server</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>alibaba-dubbo-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</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-nacos-config</artifactId>
</dependency>
</dependencies>
DubboServerApplication.java 启动类
@EnableDiscoveryClient // 开启注册中心客户端
@SpringBootApplication
public class DubboServerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboServerApplication.class, args);
}
}
TestServiceImpl.java 实现测试接口
/**
* 测试接口实现
*/
@Service // 这里使用的是dubbo的 @Service 注解 将注册到注册中心
@RefreshScope // nacos 配置自动刷新
public class TestServiceImpl implements TestService {
// 获取远程配置文件中的端口号
@Value("${server.port:}")
private String port;
@Override
public String test(String name) {
return "服务器::端口:"+port+"::返回值 => " + name;
}
}
bootstrap.yml 配置文件 (一号服务器)
spring:
application:
name: alibaba-dubbo-server
cloud:
# Nacos 服务发现与注册配置
nacos:
discovery:
server-addr: 192.168.1.141:8848
config:
# 配置中心地址
server-addr: 192.168.1.141:8848
# 文件后缀
file-extension: yml
# 文件前缀
prefix: application-dubbo-server-1
# 命名空间ID
namespace: 21c7d9a6-4b92-4313-b28b-7ba5a9328902
二号服务器 将 prefix 改为 application-dubbo-server-2
启动 一号 与 二号 服务器
点击1所在 查看nacos服务列表
2所在 是服务名
3所在 是服务实例数量 与 健康数量
点击4所在 查看服务详情
一号二号服务器 启动注册成功
6.创建Dubbo 客户端子工程
首先在nacos创建配置文件 application-dubbo-client.yml
dubbo:
cloud:
# 订阅服务名
subscribed-services: alibaba-dubbo-server
protocol:
# 使用dubbo协议通信
name: dubbo
# dubbo 协议端口(-1表示自增端口,从20880开始)
port: -1
# 挂载到 Spring Cloud 注册中心
registry:
address: spring-cloud://localhost
server:
port: 8002
创建服务端子工程
pom.xml
<parent>
<groupId>com.alibaba</groupId>
<artifactId>spring-cloud-hoxton</artifactId>
<version>1.0</version>
</parent>
<artifactId>alibaba-dubbo-client</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>alibaba-dubbo-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</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-nacos-config</artifactId>
</dependency>
</dependencies>
DubboClientApplication.java 启动类
@EnableDiscoveryClient // 开启注册中心客户端
@SpringBootApplication
public class DubboClientApplication {
public static void main(String[] args) {
SpringApplication.run(DubboClientApplication.class, args);
}
}
TestController.java 外部暴露接口
@Slf4j
@RestController
public class TestController {
@Reference // dubbo注入接口 从nacos注册中心获取服务器地址
private TestService testService;
@GetMapping("/test")
public String test(String name) {
// 远程调用服务端接口
return testService.test(name);
}
}
bootstrap.yml
spring:
application:
name: alibaba-dubbo-client
cloud:
# Nacos 服务发现与注册配置
nacos:
discovery:
server-addr: 192.168.1.141:8848
config:
# 配置中心地址
server-addr: 192.168.1.141:8848
# 文件后缀
file-extension: yml
# 文件前缀
prefix: application-dubbo-client
# 命名空间ID
namespace: 21c7d9a6-4b92-4313-b28b-7ba5a9328902
启动 客户端 查看nacos服务列表
服务注册成功
7.测试 功能 与 服务端负载均衡
请求客户端接口 localhost:8002/test?name=Lion Li
一号服务器响应
dubbo默认负载均衡策略为随机 所以需要尝试多请求几次
二号服务器响应
来源:CSDN
作者:Lion Li
链接:https://blog.csdn.net/weixin_40461281/article/details/103538679