Springboot、Dubbo、Zookeeper 整合|学习笔记

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

开发者学堂课程【SpringBoot 快速掌握 - 高级应用:Springboot、Dubbo、Zookeeper 整合】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/613/detail/9318


Springboot、Dubbo、Zookeeper 整合

内容介绍

一、服务提供者

二、服务消费者

三、运行结果


一、服务提供者

创建两个工程,一个是服务器提供者一个是服务的消费者,来测试  Dubbo。

为了整合,创建一个空工程,命名为 Springboot-06-Dubbo。

由于是空工程所以创建完成后需要加入一些子工程。点击 File-New,创建一个 module。选中 Spring 初始化向导,点击 Next。

首先创建一个服务提供者,group 是 com.atguigu,Artifact 是 provider-ticket,把 package 改为 com.atguigu.ticket 。为了测试方便,加入 web 模块,改为1.5.12版本,点击 finish,这样就会在工程创建出一个模块。

//在模块中写入 service,把这个 service 做成接口。

//规定一个方法。表示返回一个电影票。

Public String getTicket();

//写上这个接口的实现,新建一个 class,命名为 TicketServicelmpl。

public c1ass TicketServiceImpl implements TicketService {

@override

public String getTicket() {

return"《厉害了,我的国》”;

}

}


二、服务消费者

新建一个服务作为消费者。group 是 com.atguigu,Artifact 是 consumer-user,package 是 com.atguigu.user,表示用户购买电影票。为了测试方便,加入 web 模块,改为1.5.12版本,点击 finish。在 user service 中新建一个类,命名为 sevice.user service。

在 user service 中想要用到票的服务。步骤如下:使用 Dubbo 将服务提供者注册到注册中心里,user 要消费 ticket 服务,就要同时从注册中心中订阅 ticket 服务。得到 ticket 服务的提供者地址列表后,user 就可以直接调用 ticket 服务了。中间的调用也是 Dubbo做的。

//第一步是将服务提供者注册到注册中心。在 pom.xml 中整合 Dubbo。在 Dubbo官方网站的 Github 中可以查看相关源码。把 spring-boot-dubbo-starter 的依赖放入 pom 文件中。

<dependency>

<groupid>com.alibaba.boot</groupId>

<artifactId>dubbo-spring-boot-starter<,/artifactId>

<version>0.1.0</version>

</dependency>

//由于 dubbo 要操作 zookeeper,所以需要引入 zookeeper 的客户端工具。在 maven respository 中搜索 zkclient 引入客户端工具。这样就引入了依赖。

<!-https:mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->

<dependency>

<groupId>com.github.sgroschupf</groupId>

<artifactId>zkclient</artifactId>

<version>0.1</version>

</dependency>

//配置 application.properties 中 dubbo 的相关属性。

dubbo.application.name=provider-ticket

// dubbo 把应用发布到注册中心。虚拟机的地址是118.24.44.169:2181,端口是2181。

dubbo.registry.address=zookeeper://118.24.44.169:2181

//把 sevice 包下的服务发布出去。

dubbo.scan.base-packages=com.atguigu.ticket.service

//把服务发布出去需要在 TicketServiceImpl 中加一个注解@service,这个 sevice 是 dubbo的 service。@service 的作用就是把服务发布出去。通过 @component 把它加在 Spring 容器中。

@component

@service

public c1ass TicketServiceImpl implements TicketService {

@override

public String getTicket() {

return"《厉害了,我的国》”;

}

这样就将服务发布出去了。Application 应用一启动,dubbo 就会按照 base-packages 扫描规则,将标了 @service 的服务按照配置的注册中心的地址发布出去。总结一共有三个步骤:1、引入 dubbo 和 zkcLient 相关依赖2、配置 dubbo 的扫描包和注册中心地址3、使用 @Service 发布服务。

启用项目,在控制台中 dubbo 的服务就注册成功了。

image.png

在消费者 consumeruserapplication 中测试,假设 userservice 要使用 ticketservice 的功能。做法如下:1、引入依赖2、配置 dubbo 的注册中心地址3、引用服务。

//从原来的 pom 文件中,把 spring-boot-dubbo-starter 以及 zkcLient 复制到消费者的 pom 文件中。

<dependency>

<groupid>com.alibaba.boot</groupId>

<artifactId>dubbo-spring-boot-starter<,/artifactId>

<version>0.1.0</version>

</dependency>

<!-https:mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->

<dependency>

<groupId>com.github.sgroschupf</groupId>

<artifactId>zkclient</artifactId>

<version>0.1</version>

</dependency>

//配置 resource

dubbo.application.name=consumer-user

//配置 dubbo 的注册中心地址,地址和 application.properties 用的是同一个注册中心。这里是消费服务。

dubbo.registry.address=zookeeper:/ /118.24.44.169:2181

// userservice 如果要使用 ticketservice ,做法如下:将 prodiver-ticket 下的 ticketservice 复制到 consumer-user 下的 com.atguigui中,并且要全类名相同。删除 ticket 包的实现类。只需要 ticketservice 中的接口。在 usersevice 中书写如下代码:

import org.springframework.stereotype.Service;

@Service

public c1ass UserService{

}

//这是 spring 的一个组件,它来用 ticketservice 。需要加注解@reference 远程引用。远程引用是按照 ticketService 全类名进行匹配,看哪里在注册中心注册了 ticketService 这个全类名的服务。而在之前的 ticketservice 中发布服务时就是按照 ticketService 这个全类名发布的,所以这里就能够获取到。

import com.alibaba.dubbo.config.annotation.Reference;

import com.atguigu.ticket.service.TicketService;

import org.springframework.stereotype.Service;

@Service

public c1ass UserService{

@reference

TicketService ticketService;

//写一个方法,在hello中调用 ticketservice,只是调接口的方法。这个方法就会远程调用提供者的相关功能。

public void hello(){

String ticket=ticketService.getTicket();

System.out.println("买到票了:“+ticket);

//在测试类中测试能否使用,将 userservice 注入进来。

@Autowired

UserService userService;

//调用 userservice 的 hello 方法,hello 方法会远程调用 ticketservice 的 getTicket 方法。

UserService.hello()


三、运行结果

启动服务,注意在运行中 provider 服务器必须一直保持运行。

运行效果如下:表示运行成功。

image.png

买到票了,《厉害了,我的国》这个内容是 provider 提供的。

以上即是利用 dubbo 分布式做一个消费者,做一个提供者。Dubbo 能让应用以非常简约的方式实现远程调用能力。

相关文章
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
12月前
|
存储 负载均衡 监控
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
这篇文章是关于Apache Dubbo框架与Zookeeper的关系,以及如何下载、安装和启动Zookeeper的教程,包括解决启动过程中可能遇到的报错问题。
421 3
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
|
11月前
|
Dubbo Java 应用服务中间件
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
348 1
|
12月前
|
Dubbo 应用服务中间件 Apache
Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损?
135 4
|
12月前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
786 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
Dubbo Java Nacos
【实战攻略】破解Dubbo+Nacos+Spring Boot 3 Native打包后运行异常的终极秘籍——从零开始彻底攻克那些让你头疼不已的技术难题!
【8月更文挑战第15天】Nacos作为微服务注册与配置中心受到欢迎,但使用Dubbo+Nacos+Spring Boot 3进行GraalVM native打包后常遇运行异常。本文剖析此问题及其解决策略:确认GraalVM版本兼容性;配置反射列表以支持必要类和方法;采用静态代理替代动态代理;检查并调整配置文件;禁用不支持的功能;利用日志和GraalVM诊断工具定位问题;根据诊断结果调整GraalVM配置。通过系统排查方法,能有效解决此类问题,确保服务稳定运行。
395 0
|
Dubbo Java 应用服务中间件
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
|
12月前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
216 2
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
在 Apache Dubbo 突破 4w Star 之际,Apache Dubbo 团队正式宣布,Dubbo 3.3 正式发布!作为全球领先的开源微服务框架,Dubbo 一直致力于为开发者提供高性能、可扩展且灵活的分布式服务解决方案。此次发布的 Dubbo 3.3,通过 Triple X 的全新升级,突破了以往局限,实现了对南北向与东西向流量的全面支持,并提升了对云原生架构的友好性。
299 101
|
Dubbo Java 应用服务中间件
💥Spring Cloud Dubbo火爆来袭!微服务通信的终极利器,你知道它有多强大吗?🔥
【8月更文挑战第29天】随着信息技术的发展,微服务架构成为企业应用开发的主流模式,而高效的微服务通信至关重要。Spring Cloud Dubbo通过整合Dubbo与Spring Cloud的优势,提供高性能RPC通信及丰富的生态支持,包括服务注册与发现、负载均衡和容错机制等,简化了服务调用管理并支持多种通信协议,提升了系统的可伸缩性和稳定性,成为微服务通信领域的优选方案。开发者仅需关注业务逻辑,而无需过多关心底层通信细节,使得Spring Cloud Dubbo在未来微服务开发中将更加受到青睐。
168 0