SpringBoot整合Dubbo+Zookeeper

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: SpringBoot整合Dubbo+Zookeeper

Dubbo简介

Apache Dubbo 官网:https://dubbo.apache.org/zh/


Apache Dubbo 是一款微服务开发框架,提供了 RPC【远程过程调用 Remote Procedure Call】通信与微服务治理 两大关键能力。这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用 Dubbo 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。同时 Dubbo 是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。8c8d1cc5f0f24608b063f0c769df5b0f.pngDubbo 提供的基础能力包括:

  • 服务发现
  • 流式通信
  • 负载均衡
  • 流量治理
  • ……

Zookeeper 简介

Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境。8c73ae2d8bad490783a2c81484f8b84b.jpg

SpringBoot 项目整合

需要搭建 Zookeeper 环境:https://blog.csdn.net/qq_20185737/article/details/122202628

示例项目分为三个模块:

  • romantik:maven 多模块聚合项目
  • common:提取公共的实体类和服务接口,普通 Java 项目
  • app:服务消费者,远程调用 service 提供的服务,SpringBoot 项目
  • service:服务提供者,common 的服务接口具体实现,SpringBoot 项目
    804c51a0ab10cd0dafc75a9d930e8d6f.png

父模块

在父项目的 pom.xml 用 dependencyManagement 管理 Dubbo,Zookeeper 的依赖版本

<properties><java.version>1.8</java.version><dubbo.version>3.0.5</dubbo.version></properties><dependencyManagement><dependencies><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper</artifactId><version>${dubbo.version}</version><exclusions>//排除冲突的依赖<exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions><type>pom</type></dependency></dependencies></dependencyManagement>

common 模块

在 common 模块的 pom.xml 中引入父项目的坐标

<parent><artifactId>romantic</artifactId><groupId>com.example</groupId><version>1.0.0</version></parent>

导入 service 模块和 app 模块公共依赖,这样在 service 模块和 app 模块中添加 common 模块依赖时就会导入这些依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper</artifactId><type>pom</type></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version><scope>provided</scope></dependency></dependencies>

service 模块

service 模块的 pom.xml 中添加对 common 模块的依赖和其他依赖的导入

<dependencies><!--common依赖--><dependency><groupId>com</groupId><artifactId>common</artifactId><version>1.0.0</version></dependency></dependencies>

配置 Service 模块的配置文件

#数据源配置spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTCusername: rootpassword: 123456#防止端口冲突server:
port: 8001#dubbo配置dubbo:
application:
#应用名称name: providerregistry:
#注册中心地址address: zookeeper://49.232.212.119:2181#超时时间,单位毫秒timeout: 30000#元中心地址metadata-report:
address: zookeeper://49.232.212.119:2181protocol:
#协议名称name: dubbo#协议端口port: 20880scan:
#扫描服务包的位置base-packages: com.service.impl

app 模块

app 模块的 pom.xml 中添加对 common 模块的依赖和其他依赖的导入

<dependencies><dependency><artifactId>dubbo-api</artifactId><groupId>com.example</groupId><version>1.0.0</version></dependency></dependencies>

配置 app 模块的配置文件

#防止端口冲突server:
port: 8002dubbo:
application:
#应用名称name: consumerregistry:
#注册中心地址address: zookeeper://49.232.212.119:2181timeout: 30000

测试

  1. 在 common 模块下编写 User 实体类
@Data@AllArgsConstructor@NoArgsConstructorpublicclassUserimplementsSerializable {
privateIntegerid;
privateStringusername;
privateStringpassword;
}
  1. 编写 User 的服务接口 UserService
publicinterfaceUserService {
UsergetUser();
}


  1. 在 Service 模块中进行实现 common 模块的服务接口 UserService
/*** @author Jie*/@DubboService(version="1.0")
publicclassUserServiceImplimplementsUserService {
/*** 实现 UserService 的 getUser() 方法* @return 返回一个 User*/@OverridepublicUsergetUser() {
returnnewUser(20,"喵喵","123456");
    }
}
  1. 使用 @DubboService 注解向注册中心注册服务


  1. 在 app 中编写 controller
@RestControllerpublicclassUserController {
@DubboReference(version="1.0")
privateUserServiceuserService;
@RequestMapping("/user")
publicUsergetUser(){
returnuserService.getUser();
    }
}
  1. 使用 @DubboReference 远程调用注册中心中的服务


  1. 启动两个模块,访问 localhost:8002/user,就可以看到执行成功了image.png


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
2月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
10天前
|
Dubbo Java 应用服务中间件
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
26 1
|
1月前
|
存储 负载均衡 监控
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
这篇文章是关于Apache Dubbo框架与Zookeeper的关系,以及如何下载、安装和启动Zookeeper的教程,包括解决启动过程中可能遇到的报错问题。
51 3
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
|
21天前
|
Dubbo 应用服务中间件 Apache
Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损?
17 4
|
1月前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
79 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
Dubbo 关系型数据库 Java
SpringBoot 整合 Dubbo&amp;Zookeeper 实现分布式
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36367789/article/details/81665692 1. 安装 Zookeeper 环境 Zookeeper 环境搭建&zk命令详解 2. 服务提供者 因为用了父工程的版本管理,所以这里没有显示版本,我把用到的版本给大家分享下。
2251 0
|
Dubbo 关系型数据库 Java
SpringBoot 整合 Dubbo&Zookeeper 实现分布式
1. 安装 Zookeeper 环境 Zookeeper 环境搭建&zk命令详解 2. 服务提供者 因为用了父工程的版本管理,所以这里没有显示版本,我把用到的版本给大家分享下。
2041 0
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
143 1
|
17天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
95 62
|
15天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
34 2