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.implapp 模块
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条)