
Apache Dubbo 官网:https://dubbo.apache.org/zh/
Apache Dubbo 是一款微服务开发框架,提供了 RPC【远程过程调用 Remote Procedure Call】通信与微服务治理 两大关键能力。这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用 Dubbo 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。同时 Dubbo 是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。
Dubbo 提供的基础能力包括:
服务发现流式通信负载均衡流量治理…… Zookeeper 简介
Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境。
SpringBoot 项目整合需要搭建 Zookeeper 环境:https://blog.csdn.net/qq_20185737/article/details/122202628
示例项目分为三个模块:
romantik:maven 多模块聚合项目
common:提取公共的实体类和服务接口,普通 Java 项目
app:服务消费者,远程调用 service 提供的服务,SpringBoot 项目
service:服务提供者,common 的服务接口具体实现,SpringBoot 项目
父模块在父项目的 pom.xml 用 dependencyManagement 管理 Dubbo,Zookeeper 的依赖版本
common 模块1.8 3.0.5 org.apache.dubbo dubbo-spring-boot-starter${dubbo.version} org.apache.dubbo dubbo-dependencies-zookeeper${dubbo.version} //排除冲突的依赖 org.slf4j slf4j-log4j12pom
在 common 模块的 pom.xml 中引入父项目的坐标
romantic com.example 1.0.0
导入 service 模块和 app 模块公共依赖,这样在 service 模块和 app 模块中添加 common 模块依赖时就会导入这些依赖
service 模块org.springframework.boot spring-boot-starterorg.apache.dubbo dubbo-dependencies-zookeeperpom org.apache.dubbo dubbo-spring-boot-starterorg.projectlombok lombok1.18.20 provided
service 模块的 pom.xml 中添加对 common 模块的依赖和其他依赖的导入
com common1.0.0
配置 Service 模块的配置文件
#数据源配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
username: root
password: 123456
#防止端口冲突
server:
port: 8001
#dubbo 配置
dubbo:
application:
#应用名称
name: provider
registry:
#注册中心地址
address: zookeeper://49.232.212.119:2181
#超时时间,单位毫秒
timeout: 30000
#元中心地址
metadata-report:
address: zookeeper://49.232.212.119:2181
protocol:
#协议名称
name: dubbo
#协议端口
port: 20880
scan:
#扫描服务包的位置
base-packages: com.service.impl
app 模块
app 模块的 pom.xml 中添加对 common 模块的依赖和其他依赖的导入
dubbo-api com.example 1.0.0
配置 app 模块的配置文件
#防止端口冲突
server:
port: 8002
dubbo:
application:
#应用名称
name: consumer
registry:
#注册中心地址
address: zookeeper://49.232.212.119:2181
timeout: 30000
测试
在 common 模块下编写 User 实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
private Integer id;
private String username;
private String password;
}
编写 User 的服务接口 UserService
public interface UserService {
User getUser();
}
在 Service 模块中进行实现 common 模块的服务接口 UserService
@DubboService(version = "1.0")
public class UserServiceImpl implements UserService {
@Override
public User getUser() {
return new User(20,"喵喵","123456");
}
}
使用 @DubboService 注解向注册中心注册服务
在 app 中编写 controller
@RestController
public class UserController {
@DubboReference(version = "1.0")
private UserService userService;
@RequestMapping("/user")
public User getUser(){
return userService.getUser();
}
}
使用 @DubboReference 远程调用注册中心中的服务
启动两个模块,访问 localhost:8002/user,就可以看到执行成功了
我们也可以在 dubbo-admin 中看见 Service 向注册中心注册的服务。安装 dubbo-admin 的教程:Linux 通过 Maven 安装 Dubbo-admin -CSDN博客
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)