HTTP 与 RPC 协议对比总结

HTTP 与 RPC 协议对比总结

1. 基础概念对比

HTTP(超文本传输协议)

  • 定位:应用层协议,设计初衷是用于传输超文本(如网页、图片、音频等),采用请求-响应模式。

  • 特点

    • 基于文本传输,报文头(Header)和报文体(Body)均为字符串格式。

    • 默认使用长连接(Keep-Alive),但需依赖浏览器行为处理(如重定向、缓存)。

RPC(远程过程调用)

  • 定位:分布式系统中服务间通信的框架或概念,核心目标是解耦服务,实现跨网络的函数调用28。

  • 特点

    • 基于 TCP 或其他传输层协议,支持自定义通信规则。

    • 通常采用二进制序列化协议(如 Protobuf、Thrift),减少数据传输体积。


2. 底层实现差异

TCP 粘包问题与解决方案

  • 问题:TCP 是字节流协议,无法自动区分消息边界,导致多个请求/响应数据包粘连(粘包)。

  • 解决方案

    • HTTP:通过 Content-Length 或 Transfer-Encoding: chunked 明确 Body 长度,解决粘包问题。

    • RPC:自定义消息结构(如固定长度头 + 变长体),或依赖序列化协议自动处理。

连接管理

特性HTTP/1.1RPC
连接形式单 TCP 长连接复用连接池(多 TCP 连接复用)
性能优化浏览器限制并发连接数支持动态扩容连接池,降低延迟

3. 核心差异分析

传输内容与序列化

  • HTTP

    • 传输内容以字符串为主(如 JSON),Header 和 Body 均为文本格式。

    • 编码类型受限(如 URL 编码),需处理浏览器兼容性问题

  • RPC

    • 采用二进制序列化协议(如 Protobuf),体积更小、解析更快。

    • 支持复杂结构体传输,无需考虑浏览器行为(如重定向)

性能与效率

维度HTTPRPC
序列化JSON 体积大,解析慢Protobuf 体积小,解析快
连接开销长连接复用受限连接池提升吞吐量
适用场景浏览器/客户端交互内部微服务通信 

4. 应用场景选择

使用 HTTP 的场景

  • 跨平台交互:需兼容浏览器、移动端等多样化客户端。

  • 简单 API 调用:如 RESTful 接口,依赖标准状态码和缓存机制。

使用 RPC 的场景

  • 高性能微服务:内部服务间高频调用,需低延迟、高吞吐。

  • 复杂数据交互:传输结构体、流数据或二进制文件(如视频流)


5. 协议演进与优化

  • HTTP/2 与 HTTP/3

    • HTTP/2 引入多路复用和头部压缩,但受限于 TCP 层队头阻塞。

    • HTTP/3 基于 QUIC 协议(UDP),解决队头阻塞,但生态尚未完全成熟。

  • RPC 优化方向

    • 集成服务治理功能(如熔断、负载均衡)。

    • 支持跨语言调用(如 gRPC 的 IDL 定义)12。


总结:HTTP 更适合对外暴露标准化接口,而 RPC 在内部微服务通信中更具性能和灵活性优势。两者本质互补,实际应用中常结合使用(如对外 HTTP 网关 + 内部 RPC 调用)

如需查看完整图解或技术细节,可访问原文链接:小林coding - HTTP和RPC通讯协议比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值