常见 RPC 协议类别对比

RPC(Remote Procedure Call,远程过程调用)协议是分布式系统中实现跨进程通信的核心机制之一。它允许客户端像调用本地函数一样调用远端服务器上的函数。

根据通信方式、数据编码方式和平台兼容性不同,常见的 RPC 协议分为以下几类,每类都有各自的优缺点和适用场景:


✅ 一、常见 RPC 协议类别对比

类别 代表协议 编码格式 传输协议 优点 缺点 典型应用场景
基于 HTTP/JSON RESTful API、JSON-RPC JSON HTTP/HTTPS 易用、调试方便、语言无关 性能较低、无严格接口约束 Web 服务、跨语言微服务通信
基于 HTTP/Protobuf gRPC Protobuf(二进制) HTTP/2 高性能、强类型、支持流、IDL 生成代码 学习曲线略高、调试困难 微服务通信、移动端、边缘计算
基于 TCP/自定义协议 Thrift、Dubbo、Hessian 自定义或 Protobuf TCP 高性能、灵活、支持多语言 上手复杂、配置多 大规模分布式系统、企业后端
基于消息队列 RabbitMQ RPC、Kafka RPC JSON/Protobuf AMQP、Kafka 解耦强、支持异步 实时性略低、依赖 MQ 系统 解耦服务、任务分发、微服务架构
基于 Socket 自定义 RPC 任意 TCP/UDP 灵活、无依赖 开发难度大、易出错 游戏服务器、实时通讯、嵌入式系统
WebSocket RPC JSON-RPC over WebSocket JSON WebSocket 全双工通信、低延迟 复杂性略高、浏览器兼容问题 浏览器与服务器实时通信
GraphQL over HTTP Apollo GraphQL JSON HTTP 灵活查询、多字段聚合 缺乏标准的错误处理机制 前后端分离接口、聚合微服务数据

🧩 二、各类代表协议简介与特点

1️⃣ gRPC(Google RPC)

  • 编码方式:Protobuf

  • 传输协议:HTTP/2

  • 特点:

    • 自动生成代码(强接口约束)

    • 支持双向流通信、拦截器

    • 高性能(压缩+二进制)

适用场景:微服务、高性能内网通信、移动/边缘服务


2️⃣ JSON-RPC / RESTful API

  • 编码方式:JSON

  • 传输协议:HTTP/HTTPS

  • 特点:

    • 人类可读,调试方便

    • 与浏览器、前端框架天然兼容

    • 语言无关、易跨平台

适用场景:开放 API、跨语言服务、前后端接口通信


3️⃣ Apache Thrift

  • 支持多种语言(Java、C++、Python...)

  • 可选传输协议和数据编码方式

  • 特点:

    • 高度可配置(协议+传输分离)

    • 性能好、支持异步

适用场景:大型分布式系统、跨语言后端通信


4️⃣ Dubbo(阿里)

  • 支持多种协议(Dubbo、REST、gRPC)

  • 特点:

    • 支持服务治理、动态路由

    • Java 生态深度整合(Spring)

适用场景:企业 Java 微服务系统,阿里系架构


5️⃣ 基于消息队列的 RPC(如 RabbitMQ)

  • 模式:RPC 请求通过 MQ 发到远端,响应回调再写回

  • 特点:

    • 解耦通信,支持异步处理

    • 消息可靠性高

适用场景:任务队列、低频调用、系统解耦


📌 三、总结表格

维度 gRPC JSON-RPC/REST Thrift Dubbo MQ RPC 自定义 Socket
性能 ⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐⭐
易用性 ⭐⭐ ⭐⭐⭐⭐ ⭐⭐ ⭐⭐ ⭐⭐
可读性 ⭐⭐⭐⭐ ⭐⭐ ⭐⭐ ⭐⭐
跨语言支持 ⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐
推荐用途 微服务、移动端 开放 API、前端 分布式后端 Java 后端 解耦异步 游戏、物联网
相关推荐
paopaokaka_luck2 小时前
基于springboot3+vue3的智能文库平台(AI智能搜索、AI智能汇总、实时在线状态展示、多格式文档预览与富文本编辑、Echarts图形化分析)
前端·网络·spring boot·网络协议·echarts
发光小北4 小时前
SG-RS232/485/422-Fiber-110 串口光纤收发器如何使用?
网络协议
M158227690556 小时前
工业跨网段通信零改造方案!SG-NAT-210/410 NAT 网关全功能解析,不改 PLC IP 实现多协议互通
网络·网络协议·tcp/ip
发光小北6 小时前
HTL/TTL 编码器光纤转换模块如何应用?
网络协议
游戏开发爱好者87 小时前
TraceEagle 代理抓包详解,无感代理、去证书绑定与 HTTP/3 解密能力解析
网络协议·计算机网络·网络安全·ios·adb·https·udp
2401_873479409 小时前
IPv6支持不足怎么办?用双栈兼容IP离线库实现平滑过渡
数据库·网络协议·tcp/ip·ip
sbjdhjd12 小时前
零基础 Web 安全笔记:文件包含 / 命令执行 / CSRF 漏洞攻防、PHP 函数与防御方案
android·网络协议·安全·php·漏洞·csrf·dvwa
.ZGR.1 天前
internet-v2-v3-evolution-blog
websocket·网络协议·https·udp·p2p
2501_915918411 天前
抓包鹰 抓包会话重放与压力测试,接口回归验证与性能压测的方法
网络协议·计算机网络·网络安全·ios·adb·https·压力测试
WWJA王文举1 天前
HTTP 和 HTTPS 详解:工作原理、通信流程、使用方法及核心区别
网络协议·软件开发·通信协议