RPC(远程过程调用)和HTTP调用都是实现跨服务通信的方式,但它们在设计理念、使用场景、性能等方面有显著区别,以下是核心差异对比:
1. 本质与设计目标
-
RPC:
核心是“像调用本地函数一样调用远程服务”,屏蔽了网络通信的细节(如序列化、网络传输、反序列化等),让开发者无需关注底层网络协议。
设计目标是高效、紧密的服务间通信,通常用于同一系统内部的服务协作(如微服务架构中)。 -
HTTP调用:
基于HTTP协议(应用层协议)的通信方式,通过URL定位资源,使用GET/POST等方法传递数据(通常是JSON/XML格式)。
设计目标是跨系统、跨平台的资源交互,更强调通用性和可读性(如前后端通信、开放API)。
2. 通信协议
-
RPC:
不局限于特定协议,可基于TCP、HTTP甚至自定义协议。
常见的RPC框架(如gRPC、Dubbo)多基于TCP协议,性能更高(减少协议开销)。 -
HTTP调用:
严格基于HTTP协议(1.1/2.0/3.0),协议本身包含较多头部信息(如Cookie、缓存控制等),开销相对较大。
3. 数据格式与序列化
-
RPC:
支持更高效的二进制序列化格式(如Protobuf、Thrift),数据体积小、解析快,但可读性差(二进制)。
序列化逻辑通常由框架封装,开发者无需手动处理。 -
HTTP
8693



被折叠的 条评论
为什么被折叠?



