深度比较Dubbo和OpenFeign进行微服务远程调用的区别-Spring Cloud微服务开发专题

下文摘自孙卫琴的经典著作《Spring Cloud Alibaba微服务开发零基础入门到实操》,帮助您理解Dubbo和OpenFeign进行微服务远程调用的区别。
在这里插入图片描述

Dubbo和OpenFeign都可以进行远程微服务访问。Dubbo采用RPC协议通信,是一个远程调用框架,分布于消费者和提供者两端。OpenFeign是一个远程调用组件,位于消费者端,底层采用HTTP协议通信。

Dubbo是阿里巴巴公司开发的支持RPC通信的远程调用框架,如今已成为Apache的一个开源项目,官方网址参见本文技术支持网页(http://www.javathinker.net/alibaba)的【链接12】。

Dubbo与OpenFeign相比,具有以下区别:

(1)Dubbo是框架,而OpenFeign是组件。Dubbo作为远程调用框架,需要同时部署到微服务的提供者和消费者中。OpenFeign仅仅是消费者方的远程调用组件。

(2)Dubbo提供了名副其实的RPC远程调用,而OpenFeign实际上仅仅提供了伪RPC调用。图1演示OpenFeign的远程调用过程,消费者访问HelloFeignService接口,OpenFeign为该接口提供具体的实现,该实现按照HTTP协议请求访问提供者的URL资源。提供者方并没有实现HelloFeignService接口,所以说这是伪RPC调用。

在这里插入图片描述
图1 OpenFeign提供的伪RPC调用

图2演示Dubbo的远程调用过程,消费者访问HelloService接口,消费者方的Dubbo为该接口提供代理实现。在提供者方,HelloServiceImpl类真正实现了HelloService接口。提供者方的Dubbo会根据消费者的请求调用HelloServiceImpl类的相应方法。例如当消费者调用HelloService接口的sayHello()方法,那么提供者方的Dubbo就会调用HelloServiceImpl对象的sayHello()方法。
在这里插入图片描述
图2 Dubbo提供的RPC调用过程

(3)Dubbo在进行远程调用时,消费者与提供者之间采用专门的dubbo协议通信。而OpenFeign与提供者之间采用HTTP协议通信。HTTP协议要求消费者发送的请求数据中包含庞大的请求头,要求提供者发送的响应数据中包含庞大的响应头。而dubbo协议则不需要通信双方发送许多额外数据,因此是轻量级的通信协议,比HTTP协议具有更好的通信性能。

提示:Dubbo框架实际上支持多种通信协议:dubbo、HTTP、RMI、Redis等,允许用户根据不同的场景灵活地选择特定的协议。不过,Dubbo官方推荐使用的是dubbo协议。


想要循序渐进学习Spring Cloud微服务开发,强烈推荐看孙卫琴老师的经典著作《Spring Cloud Alibaba微服务开发零基础入门到实操》,还附赠121集配套视频课程,免费观看网址参见http://www.javathinker.net/alibaba

本书深入浅出地讲解了利用Spring Cloud Alibaba框架开发分布式微服务系统的技术,详细阐述了各种组件的用法,包括:注册和配置中心Nacos、负载均衡器LoadBalancer、远程调用组件OpenFeign、远程调用框架Dubbo、流量控制组件Sentinel、网关Gateway、链路追踪组件SkyWalking、消息中间件Stream和 RocketMQ、分布式事务管理框架Seata、分库分表中间件ShardingSphere、分布式缓存数据库Redis、分布式任务调度框架XXL-JOB。

本书以一位学习微服务开发的新手阿云向答主(本书作者)请教微服务开发技术为线索,激发读者主动探索知识的学习兴趣,把本来看似深奥复杂的分布式微服务系统如庖丁解牛般剖析得淋漓尽致,浅显易懂。本书不仅详细介绍各种技术的使用步骤,而且运用了许多生动形象的生活化的比喻,帮助读者理解这些技术的运作原理。

本书的范例很具有实用性,整合了Spring Boot、Spring Cloud Alibaba、Hibernate、Mybatis、DruidDataSource、HikariDataSource、lombox软件包、SLF4J等流行的框架或工具软件。

本书主要面向所有具有Java编程基础的开发人员和在校学生。对于不熟悉Java编程的读者,阅读本书,也能领略Spring Cloud Alibaba框架的基本用法和微服务开发的核心思想。本书还可作为高校和企业的微服务开发教材。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java技术集锦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值