openFeign用的什么协议,dubbo用的什么协议

简单直接的答案是:

  • OpenFeign​:默认使用 ​HTTP​ 协议(通常是 HTTP/1.1,也支持 HTTP/2),通信格式为 ​RESTful JSON

  • Dubbo​:默认使用 ​Dubbo 协议​(一种自定义的、基于 TCP 的高性能二进制 RPC 协议),通信格式为 ​二进制序列化​(如 Hessian2, Kryo)。

下面我们进行详细的对比和解释。


1. OpenFeign

协议:HTTP (应用层协议)​

  • 本质​:OpenFeign 是一个声明式的 HTTP 客户端,它的目标是让远程 HTTP 调用像调用本地方法一样简单。它严格遵循 RESTful 风格的设计原则,将 API 调用映射为 HTTP 请求。

  • 通信过程​:

    1. 开发者定义一个接口,并使用 @FeignClient注解。

    2. OpenFeign 在运行时根据接口上的注解(如 @RequestMapping, @GetMapping)生成具体的 HTTP 请求。

    3. 请求的协议、主机名、端口来自于服务名(通过 Nacos 等注册中心解析)。

    4. 参数会被序列化成 JSON 放在请求体(Body)中,或作为查询参数(Query Param)。

    5. 响应体的 JSON 数据再被反序列化成 Java 对象。

  • 优点​:

    • 通用性强​:HTTP 是互联网通用标准,任何语言、任何平台都能理解和调用,非常适合做跨语言、跨平台的开放式 API

    • 可读性好​:使用 JSON 格式,日志、抓包都很容易阅读和调试。

    • 与 Spring Cloud 生态无缝集成​:天生就是为 RESTful 服务设计的,与 Spring MVC 的注解可以完美共用。

  • 缺点​:

    • 性能相对较低​:HTTP 协议的头部(Header)较大,且 JSON 序列化/反序列化的效率和传输后的数据体积都比二进制协议差。

    • 通信模型受限​:基于 HTTP 的请求-响应模型,不支持其他通信模式(如单向调用、流式处理)。


2. Dubbo

协议:Dubbo Protocol (传输层协议)​

  • 本质​:Dubbo 是一个高性能的 Java RPC 框架。RPC(Remote Procedure Call)的目标是让远程方法调用在表现上完全和本地调用一样,它更关注于服务治理和高性能。

  • 通信过程​:

    1. 提供者(Provider)向注册中心注册服务,并暴露自己的地址。

    2. 消费者(Consumer)从注册中心订阅服务,获取提供者地址列表。

    3. 消费者与提供者之间建立一条或多条长连接的 TCP 连接,而不是每次调用都像 HTTP 一样进行“三次握手、四次挥手”。

    4. 调用时,方法名、参数等被序列化成二进制字节流,通过长连接传输。

    5. 提供者接收后,将二进制流反序列化成参数对象,执行本地方法,再将结果序列化后返回。

  • 优点​:

    • 性能极高​:

      • 长连接​:省去了频繁建立 TCP 连接的开销。

      • 二进制协议​:协议头很小,有效负载高。

      • 高效序列化​:默认使用 Hessian2,也支持更快的 Kryo、FST 等,比 JSON 效率高得多。

    • 功能丰富​:原生支持更复杂的 RPC 模式,如异步调用、参数回调、泛化调用、流式处理等。

    • 服务治理能力强​:内置了强大的负载均衡、容错策略、隐式参数传递等。

  • 缺点​:

    • 通用性差​:自定义的二进制协议对语言和平台不友好。虽然 Dubbo 3 推出了 Triple 协议(基于 HTTP/2)以改善跨语言支持,但其核心默认仍是 Dubbo 协议。

    • 可读性差​:传输的是二进制流,需要专门的工具才能解析,调试不如 HTTP 方便。


对比总结表

特性

OpenFeign

Dubbo

核心定位

声明式 RESTful HTTP 客户端

高性能 Java RPC 框架

默认协议

HTTP/1.1​ (文本协议)

Dubbo 协议​ (二进制协议)

序列化方式

JSON​ (文本)

Hessian2​ 等 (二进制)

连接方式

通常为短连接​(HTTP/1.1可Keep-Alive)

长连接

性能

相对较低(头部大,序列化效率低)

极高​(头部小,序列化效率高)

通用性

极强,跨语言、跨平台

较弱,主要面向 Java 生态(默认协议下)

可读性/调试

,可直接查看 HTTP 请求和 JSON 内容

,需要工具解析二进制流

通信模式

主要支持请求-响应

支持异步、流式、回调等多种模式

适用场景

对外提供开放 API、内部对性能要求不极高的微服务

内部对性能要求极高的微服务调用

在 Spring Cloud Alibaba 中如何选择?

  • 选择 OpenFeign​:

    • 你的服务需要提供给前端、移动端其他语言团队​(如 Python, Go)调用。

    • 系统内部大部分是 ​CRUD 操作,性能瓶颈通常在数据库,HTTP 的性能开销可以接受。

    • 团队非常熟悉 Spring MVC 和 RESTful 风格,希望开发简单、调试方便。

  • 选择 Dubbo​:

    • 系统内部存在大量高性能、高并发内部服务调用​(如核心交易链路上的服务)。

    • 对响应延迟(Latency)非常敏感。

    • 需要利用 Dubbo 的高级特性(如异步调用、泛化调用等)。

    • 服务调用方和提供方基本都是 Java 技术栈。

值得注意的是​:Spring Cloud Alibaba 完美支持这两种方式,你甚至可以在一个项目中同时使用 Feign 和 Dubbo,让它们分别应用于不同的场景。例如,对外用 OpenFeign 提供 RESTful API,内部核心服务之间用 Dubbo 进行高性能 RPC 调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96909.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android SystemServer 系列专题【篇四:SystemServerInitThreadPool线程池管理】

本篇重点介绍一下SystemServerInitThreadPool,顾名思义此类针对SystemServer进程的提供了一套ThreadPool线程池的统一标准方案,下面从源码和日志的角度来剖析一个这个类。1、SystemServerInitThreadPool单例设计SystemServerInitThreadPool的源码路径在f…

2014-2024高教社杯全国大学生数学建模竞赛赛题汇总预览分析

一、分析赛题核心意义收集近 11 年的赛题并非简单的 “题目存档”,而是为了从历史规律、能力匹配、实战准备三个维度为参赛者或研究者提供价值。1.1把握竞赛命题趋势,降低选题盲目性赛题命题往往紧扣当年社会热点、科技前沿与行业痛点(如 202…

一个头像图片滚动轮播组件(React实现)

遇到一个效果,组件库里没有现成能用的组件,于是手搓了一个,传入图片url列表,和其他配置项即可直接使用。 轮播效果实现思路 假设共有10张图片轮流滚动,轮播图展示3张图片。给正在轮播的图片绑定visible类,轮…

从入门到理解:支持向量机的核心原理与实战思路

一、SVM 的核心目标:找 “最好” 的超平面。1.1 什么是 “超平面”?超平面是一个几何概念,简单来说:在 2 维空间(平面)中,超平面是一条直线(1 维);在 3 维空间…

Python 办公自动化实战:Excel 批量处理 + 自动发邮件

Python 办公自动化实战:Excel 批量处理 自动发邮件关键词: Python办公自动化 • Pandas • OpenPyXL • Email • 定时任务 摘要: 每月底还在手动处理几十份Excel报表并邮件发送?快来学习如何用Python全自动完成!本文…

高教杯数学建模2021-C 生产企业原材料的订购与运输

某建筑和装饰板材的生产企业所用原材料主要是木质纤维和其他植物素纤维材料, 总体可分为 A,B,C 三种类型。该企业每年按 48 周安排生产,需要提前制定 24 周的原 材料订购和转运计划,即根据产能要求确定需要订购的原材料供应商&…

【Python系列】Flask 和 FastAPI对比

博客目录1. 类型和设计目标2. 性能3. 异步支持4. 数据验证和文档5. 学习曲线和生态6. 使用场景示例对比Flask(同步)FastAPI(异步)总结Flask 和 FastAPI 都是 Python 中流行的 Web 框架,但它们的设计目标、特性和适用场…

把 AI 塞进「空调遥控器」——基于 MEMS 温湿阵列的 1 分钟极速房间热场扫描

标签:MEMS 阵列、热场扫描、极速空调、TinyML、RISC-V、零样本、离线推理、节能 ---- 背景:为什么空调遥控器要「画图」? 传统空调只有一个温湿度探头,经常“东边冷、西边热”。 • 大客厅 30 ㎡,温差 5 ℃&#xff1…

【机器学习】8 Logistic regression

本章目录 8 Logistic regression 245 8.1 Introduction 245 8.2 Model specification 245 8.3 Model fitting 245 8.3.1 MLE 246 8.3.2 Steepest descent 247 8.3.3 Newton’s method 249 8.3.4 Iteratively reweighted least squares (IRLS) 250 8.3.5 Quasi-Newton (variabl…

C++中如何使用互斥(1)------std::lock_guard

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 算法描述 std::lock_guard 是 C11 引入的一个 RAII(Resource Acquisition Is Initialization)风格的锁管理类,用于自动管理互斥锁(mutex&#x…

AI算力提升7.5倍!英伟达发布新一代机器人超级计算机Jetson Thor,驱动物理AI革命

今天,NVIDIA 宣布其专为物理 AI 和机器人打造的新一代机器人计算机 Jetson Thor 正式发售。其中,Jetson AGX Thor 开发者套件售价为 3499 美元(约合人民币 2.5 万元)。NVIDIA 创始人兼首席执行官黄仁勋表示:“Jetson T…

【数学建模】如何总结数学建模中的层次分析法最好

模型简介模型名称:层次分析法核心问题类型:评价类核心思想和适用场景 核心思想:将大决策问题拆解成小比较问题,通过数学计算综合最终结论:本质是人的主观判断转换为客观数据的工具[[适用场景]] 个人决策企业 / 项目决策…

`mmap` 系统调用详解

mmap 是 Unix/Linux 系统中一个强大且多用途的系统调用,用于将文件或设备映射到进程的地址空间,实现内存映射I/O。 1. 函数的概念与用途 mmap(内存映射)函数允许程序将文件或其他对象直接映射到其地址空间,这样文件内容…

深度剖析Spring AI源码(二):Model抽象层 - “驯服”天下AI的“紧箍咒”

深度剖析Spring AI源码(二):Model抽象层 - “驯服”天下AI的“紧箍咒”上一章我们鸟瞰了Spring AI的宏伟蓝图,今天,我们要深入这座大厦的基石——Model抽象层。如果说Spring AI是连接Java与AI世界的桥梁,那…

永磁同步电机无速度算法--高频脉振正弦波注入到两相静止坐标系

一、原理介绍采用一种改进的永磁同步电机低速无位置传感器控制策略。与传统的旋转高频信号注入法和脉振高频信号注入法不同,该策略选择向静止坐标轴系注入高频脉振信号,转子位置估计信息可以通过载波电流响应提取。并使用一种类似于简化型扩展卡尔曼滤波…

嵌入式学习日志————ADC模数转换器之实验

1.配置ADC的步骤①开启RCC时钟,包括ADC和GPIO的时钟②配置GPIO,把相应端口配置成模拟输入模式③配置多路开关,把左边的通道接入右边的规则组列表里④配置ADC转换器⑤调用ADC_Cmd函数,开启ADC2.库函数配置ADCCLK分频器void RCC_ADC…

Java设计模式之《状态模式》

目录 1、状态模式 1.1、介绍 1.2、设计背景 1.3、适用场景 2、实现 2.1、if-else实现 2.2、状态模式实现 2.3、最终版 1、关于if-else的优化 2、状态模式下的优化 3、ArrayList 配置“状态流” 3、总结 前言 关于Java的设计模式分类如下: 对于状态模式…

three.js+WebGL踩坑经验合集(9.2):polygonOffsetFactor工作原理大揭秘

本篇延续上篇内容: three.jsWebGL踩坑经验合集(9.1):polygonOffsetUnits工作原理大揭秘-CSDN博客 跟polygonOffsetUnits相比,polygonOffsetFactor的系数m要复杂得多,因为它跟平面的视角相关,而不像r那样,在一个固定的…

C++高级特性与设计模式答案

目录 C++高级特性与设计模式:从资源管理到架构设计 一、C++高级特性:超越基础语法的利器 1. 什么是RAII(资源获取即初始化)?它有什么作用? 实现原理 核心作用 2. 什么是Pimpl惯用法?它有什么优势? 实现方式 核心优势 3. 什么是CRTP(奇异递归模板模式)?它的应用场景是…

论文阅读:arxiv 2025 Can You Trick the Grader? Adversarial Persuasion of LLM Judges

总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Can You Trick the Grader? Adversarial Persuasion of LLM Judges https://arxiv.org/pdf/2508.07805 https://www.doubao.com/chat/17534937260220418 文章目录论文翻译…