【25年最新版】快速上手dubbo实现rpc远程过程调用

RPC Dubbo面试题汇总 Dubbo是一款高性能、轻量级的开源 WEB 和 RPC 框架。优点:高性能: Dubbo 在设计上注重性能,采用了简单的远程调用方式和高效的序列化机制。服务治理: 提供了丰富的服务治理功能,包括负载均衡、容错机制(如熔断、降级)、服务路由等,适合复杂的分布式场景。支持多协议: Dubbo 支持多种通信协议,如 Dubbo 协议、HTTP、RMI 等,能够灵活适配不同的应用需求。对中小型公司友好: 简单易用,适合中小型公司快速构建微服务架构。 阅读详情


部分内容来自:https://bugstack.cn/md/road-map/dubbo.html

一、Dubbo 是什么

Dubbo 是阿里巴巴开源的一款高性能、轻量级的 Java RPC(Remote Procedure Call,远程过程调用)框架。它主要用于构建分布式服务架构,帮助开发人员实现服务之间的高效通信和治理。在分布式系统中,不同的服务可能部署在不同的机器上,Dubbo 提供了一种简单而强大的方式来让这些服务相互调用,就好像它们在本地调用一样。

二、踩坑点

1. Serializable 接口

所有的 Dubbo 接口,出入参,默认都需要继承 Serializable 接口。

public interface IUserService {

    Response<UserResDTO> queryUserInfo(UserReqDTO reqDTO);

}
// UserReqDTO、UserResDTO、Response 这3个类,都得继承 Serializable 序列化接口。

2. @Service


@DubboService(version = "1.0.0")
public class UserService implements IUserService {
...

Dubbo 提供了 @DubboService 注解。但是Dubbo 版本 2.7.* 它的注解也是 @Service,导入的时候别导入成 Spring 的 @Service了。

3. 工程配置

dubbo:
  application:
    name: paran-dubbo
    version: 1.0.0
  registry:
    address: zookeeper://127.0.0.1:2181 # N/A - 无zookeeper可配置 N/A 走直连模式测试
  protocol:
    name: dubbo
    port: 20881
  scan:
    base-packages: com.paran.dubbo.api

这里要注意
假如启动类在com.paran.dubbo包下,那么com.paran.dubbo.api要直接或者间接地通过pom.xml文件引入进来,Spring才能扫描到
另外Spring默认是扫描启动类所在包及其子包,不能把启动类放在com.paran.dubbo.a.b.xxx下面,这样也会扫描不到com.paran.dubbo.api

4. 引入jar包

有两个应用,一个Dubbo接口提供方、一个Dubbo接口使用方。在使用方使用接口的时候,需要引入接口提供方的jar包,例如接口提供方把com.paran.dubbo.api打包安装到maven仓库,接口使用方要把这个包引入进来。
执行服务提供方工程中的父pom的install,这时候子模块也会被install,引入的时候也是只引入子模块,但是如果只install子模块,在引入子模块的时候maven会报红

5. @EnableDubbo

在服务提供方的启动类上要加上@EnableDubbo

三、使用流程

请添加图片描述
api

public interface ISomeService {
    Response<ResDTO> query(ReqDTO reqDTO);
}

trigger

@Slf4j
@DubboService(version = "1.0.0")
public class SomeService implements ISomeService {
    @Override
    public Response<ResDTO> query(ReqDTO reqDTO) {
        ResDTO resDTO = ResDTO.builder()
                .id(reqDTO.getId())
                .name("paran")
                .age(23)
                .build();

        // 2. 返回结果
        return Response.<ResDTO>builder()
                .code(Constants.ResponseCode.SUCCESS.getCode())
                .info(Constants.ResponseCode.SUCCESS.getInfo())
                .data(resDTO).build();
    }
}

app

@SpringBootApplication
@EnableDubbo
public class Application 
{
    public static void main( String[] args )
    {
        SpringApplication.run(Application.class);
    }
}

测试

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class AppTest {
    @DubboReference(interfaceClass = ISomeService.class, version = "1.0.0")
    private ISomeService someService;
    @Test
    public void test_userService() {
        ReqDTO reqDTO = ReqDTO.builder().id("10001").build();
        Response<ResDTO> resDTO = someService.query(reqDTO);
        log.info("测试结果 req: {} res: {}", JSON.toJSONString(reqDTO), JSON.toJSONString(resDTO));
    }
}
Spring Cloud集成Dubbo实现RPC调用 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。Dubbo比起OpenFegin支持多种传输协议支持更多的负载均衡算法支持多种容错策略开箱即用高度可扩展。 阅读详情

相关推荐

【项目实战】Spring Boot工程整合Dubbo框架,实现RPC远程调用

【项目实战】Springboot 整合Dubbo, 项目中引入Dubbo实现远程调用

奶爸的编程之路,也就一周冷个三天 2364

Dubbo学习:RPC远程过程调用

Dubbo是一款高性能,轻量级,开源的服务架构;用于提供高性能和透明化的远程调用服务。作用1:透明化的远程方法调用,只需要在spring配置即可作用2:软负载均衡和容错机制作用3:服务自动注册与发现,不需要在代码中写死服务提供方地址。

qq_41546380的博客 436

Arduino--土壤湿度传感器使用(电阻式)

最近买了一个土壤湿度检测传感器,实物图是这样的: 我买这个模块是想要得到土壤湿度的模拟量。但我买的时候忘了买左边的蓝色模块,我开始以为这个模块是有运放功能的,但实际它是一个电压比较器和一个分压电路。 其模块的接线如图: 该模块的四线是带模拟量输出的,三线的只输出一个到达阈值的标志量。该模块的原理图如下: 该模块的测试原理为:把土壤当成一个可变电阻,随着土壤含水量的增加,土壤电阻减小。而该传感器其实就是两个电极,用来接土壤这个可变电阻。一般湿度的土壤电阻大概在几百K左右,其串连的分压电阻应该在这个数量级。

weixin_41866783的博客 1万+

Dubbo实现RPC

dubbo实现RPC...

wangdong的博客 2990

Code Ocean 上传代码 手把手教程

对于一些学术期刊,录用前会让把代码上传到Code Ocean上,但上传过程可能会遇到一些问题,小编分享一下自己的上传经验。他们会进行验证,验证通过,将自动发布。点此运行即可,但是运行比较慢。

u014071947的博客 1万+

常见的数值积分方法 (欧拉、中值、龙格-库塔,【常用于IMU中】)

1. 积分基本概念 设F(x)为函数f(x)的一个原函数,我们把函数f(x)的所有原函数F(x)+C(C为任意常数)叫做函数f(x)的不定积分(indefiniteintegral)。 非线性微分方程: 在有限的时间间隔Δt积分: 连续时间内积分: 工程上最常见的有三种:欧拉积分(Euler method)、中值积分(Midpoint method)和龙格-库塔法积分(Runge–Kutta methods)。他们的区别就是如何用数值方法模拟一个斜率。这里简单总结如下: ...

努力努力努力 2万+

【云原生】RPC调用-Dubbo

微服务在维基上对其定义为:一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。...

write less , do more 2630

一文搞懂深度学习:最全神经网络介绍

本文是深度学习系列文章的第二篇,我们将深入探讨各种类型的人工神经网络,探索它们独特的特性和应用。

2402_82802238的博客 2801

dubbo服务实现远程调用

⑥、mysql、redis、kafka、zk都是存数据的,但是他们的数据结构不同。zk数据结构是树形的,和目录一样,更适合做管理。b、定义dubbo的接口:new一个interface(一个服务对应一个dubbo接口)(注:dubbo服务的interface统一用Facade结尾)⑤、在service中新建一个配置文件application.yml(现在的文件图标和之前的不一样是因为我们没有引spring相关的依赖)①、服务消费者、服务提供者(a访问b,a是服务消费者,b是服务提供者)

qq_52240237的博客 3010

实战:爬取某小程序的订单数据(解析小程序 API 参数)

本文以美团外卖小程序为例,详细分析了电商类小程序订单数据接口的技术实现与采集方法。首先通过抓包定位核心接口,解析其请求参数;重点破解了token验证机制与sign签名加密算法,通过逆向分析还原参数生成逻辑;最后基于Python实现了订单数据的自动化爬取与存储。文章强调数据采集需遵守法律合规性,提供应对反爬机制的策略,并指出了必须在获得合法授权的前提下使用这些技术。该研究为数据采集工程师提供了实用的技术参考,但必须严格遵循"最小必要"原则,确保不违反平台规则和用户隐私保护法规。

2503_91057718的博客 2317

公文流转系统

公文录入区 | QLineEdit(文号/标题)、QComboBox(公文类型/紧急程度)、QTextEdit(正文)、QListWidget(附件列表)、QPushButton(上传附件/保存草稿/提交审批) |// 按时间范围获取。QStringList userNames = {"张三", "李四", "王五", "赵六", "钱七", "孙八", "周九", "吴十", "郑十一", "王十二"};

寒寒豆豆软件公司的博客 550

RPC框架与Dubbo完整使用

这并不是原理性的解释文章。只是快速入门,还有一个完整的Java例子。 一篇我觉得不错的文章推荐:深入浅出 RPC - 浅出篇 一、RPC 什么是RPC?RPC(Remote Procedure Call)远程过程调用。见名知意 - 从远程主机调用一个过程/函数。RPC的目标是:使得程序调用其它远程主机上的函数,好像调用本程序内的函数一样简单。并且屏蔽编程语言的差异性。要实现上述目标,首先的是设计一

「有且仅有」 5万+

音视频OSD——使用freetype将矢量字库的信息叠加至YUV

目录freetypes使用步骤1)包含头文件:2) 初始化库:3)加载face对象:4)设置字体大小5)设置字体位置,以及旋转度数:6)加载字形图像准备矢量字库代码.c.h效果叠加至YUV freetypes FreeType是一个完全开源的、可扩展、可定制且可移植的字体引擎,它提供TrueType字体驱动的实现统一的接口来访问多种字体格式文件 下载freetypes tar -xjf freetype-2.4.10.tar.bz2 cd freetype-2.4.10/ ./configure

路人coder 2364

【知识科普】远程过程调用RPC知识科普

RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,它允许一个计算机程序通过网络调用另一个计算机程序中的子程序(即远程过程),并获取返回值。RPC是分布式计算的重要基础,它极大地简化了分布式系统之间的通信和交互过程,使得开发者可以像调用本地方法一样调用远程方法,而无需关心底层的网络通信细节。

wendao76的专栏 2053

安卓手机强制清理数据恢复出厂设置后无法设置密码怎么办?(分享亲身经历的有效解决方案)

📱安卓手机强制清数据恢复出厂设置后,竟无法设置锁屏密码!本文将解析问题根源,分享亲测有效的解决方案,帮你快速摆脱困扰🎉

XiaoqiangClub的博客 242

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用

Dubbo是一个基于Java的高性能RPC (远程过程调用)框架。作者:牵着猫散步的鼠鼠

qq_35716689的博客 2万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

rpc、dubbo和http的区别

什么是RPC PRC全称是Remote Procedure Call,即远程过程调用。比如我发送了一个 rpc 请求:POST /getUser?user_id=123;相当于是我本地的电脑调用了远在服务器的 getUser(user_id) 方法,这就叫远程过程调用,这个远不一定是跨网络的调用,同一台电脑的2个进程之间调用也可以称为是RPC; 还有一点,RPC也是一种“API设计风格”,因为rpc只有GET 和 POST 请求,它不像restful风格那样有多种请求: DELETE、PU...

叶新东老师的博客 6629

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【后端】RPC(远程过程调用):技术浅析

RPC是一种远程过程调用协议,它允许一个程序调用另一个程序在不同的地址空间上执行的子程序。在分布式系统中,RPC通过封装远程调用的细节,提供了一种透明化的方法,使得开发人员可以像调用本地函数一样调用远程函数,从而简化了分布式系统的开发和维护工作。RPC基本概念是建立在Client-Server架构上的通信模式。Client通过调用本地的Stub(本地代理)代理对象,Stub负责将调用参数封装并通过网络发送至Server端,Server端接收到消息后执行相应的逻辑,再将结果返回至Client端。

wnm23的专栏 6340

Dubbo 双模块RPC调用示例:快速上手分布式服务

Dubbo 双模块RPC调用示例:快速上手分布式服务 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代微服务架构中,RPC(远程过程调用)是实现服务间通信的关键技术之一。Apache Dubbo作为一款高性能的RPC框架,广泛应用于各大企业的分布式系统中。为了帮助开发者快速掌握Dubbo的使用,我们推出了一个名为 dubbo.rpc.demo.rar 的资源文件,...

gitblog_09749的博客 807

Dubbo——初识RPC、Dubbo框架、使用直连方式实现Dubbo

Dubbo——初识RPC、Dubbo框架、使用直连方式实现Dubbo

贝尔摩德苦艾酒 8369

RPC、HTTP、DSF、Dubbo,每个都眼熟,就是不知道有什么联系?

HTTP协议与RPC技术对比与分布式服务架构解析 摘要:本文首先澄清HTTP与RPC的本质区别,指出HTTP是通信协议而RPC是远程调用技术。通过分布式架构的演进过程,分析了从单体架构到分布式服务的转型动因及优缺点,并介绍了分布式服务框架(DSF)的核心组件。重点剖析了Dubbo作为开源RPC框架的三中心架构(注册中心、配置中心、元数据中心),及其在服务治理方面的实现机制。文章还分享了分布式实践中的常见问题与解决方案,为构建可靠分布式系统提供技术参考。

nhb000000的博客 1024

【RPC】—RPC介绍一篇就够了&RPC的选择

RPC远程调用的概念最早可以追溯到20世纪80年代,当时Sun Microsystems公司提出了一种名为ONC RPC(Open Network Computing Remote Procedure Call)的协议,用于在NFS(Network File System)中进行远程过程调用。此后,RPC成为了分布式系统中的一种重要通信方式,被广泛应用于各种分布式系统和应用中

一棵灬大树的博客 7487

Dubbo Golang快速开发Rpc服务

Dubbo Golang快速开发Rpc服务

qq_36070104的博客 1165

Dubbo 快速入门教程

文章目录一、Apache Dubbo概述1. Dubbo简介2. Dubbo架构二、Dubbo快速入门1.创建两个maven工程,添加web2. 配置dubbodemo_provider3. 配置dubbodemo_consumer 一、Apache Dubbo概述 1. Dubbo简介 Apache Dubbo是一款高性能的Java RPC框架。 它是阿里巴巴公司开源的、轻量级的开源Java RPC框架,可以和Spring框架无缝集成,2018年阿里巴巴把这个框架捐献给了apache基金会。 Dubbo

哔哔丶的博客 3004

Java RPC (远程过程调用) 框架概述。从RPC核心组件角度深入解读Apache Dubbo。Apache Dubbo最新使用指南。Spring Cloud Feign与RPC的关系解析。

RPC (Remote Procedure Call) 是一种分布式系统间通信的技术,允许程序调用另一个地址空间(通常是另一台机器上)的过程或函数,就像调用本地方法一样。主流Java RPC框架gRPCApache DubboApache ThriftHessianRPC核心组件选择RPC框架的考虑因素一、通信协议:多协议支持与高性能传输默认Dubbo协议扩展协议支持二、序列化:灵活可插拔的机制核心序列化方案关键优化三、服务注册与发现:多中心化治理注册中心抽象层服务发现特性四、负载均衡:智能流量调度内置算法

一行坚书的博客 1034

总结Dubbo开源RPC框架

集群:多个机器提供一样的服务(实现高性能、高可用、 可伸缩、高可扩展 )分布式:多个机器提供不同的服务,合起来为一个大服务。

Flora的博客 1305
上一篇: 快速入门Zookeeper实现配置中心
下一篇: 一文搞懂SpringBoot自动装配原理
Paran-ia
博客等级 码龄6年 204粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值