Java面试题更新 2026-08-05

请从协议、传输效率、服务治理和适用场景等角度,阐述 HTTP 协议与 RPC 框架之间存在的差异。

后端开发技术原理技术选型方案权衡HTTPRPCSpring CloudTCP

考察说明

考查候选人对 HTTP 与 RPC 在通信协议层面本质差异的理解,以及在实际微服务架构中的选型能力。

回答思路

  1. 【回答框架 1】HTTP 是应用层协议,基于文本或二进制格式(如 JSON、XML)进行通信,通用性强,易于跨语言和跨平台,但报文格式相对冗余,传输效率较低。RPC 是远程过程调用框架,通常基于 TCP 或 HTTP 等传输层协议,并采用自定义高效的序列化方式(如 Protobuf、Hessian)封装请求与响应,调用方可以像调用本地方法一样调用远程服务。
  2. 【回答框架 2】HTTP 更侧重于资源访问,语义基于标准方法(GET、POST 等)与状态码,天然适合面向 Web 的应用与外部系统集成。RPC 更侧重于方法调用,适用于企业内部服务间的高频、低延迟调用,且通常自带服务注册与发现、负载均衡、超时与重试等治理能力。
  3. 【回答框架 3】在微服务架构中,Spring Cloud 生态下常用 OpenFeign(基于 HTTP)或 Dubbo(基于 RPC)。选择时需权衡:如果服务需暴露给外部或异构系统,HTTP 更合适;若追求高性能与强治理,RPC 更合适。实际场景中两者可以共存。
  4. 【关键点 1】HTTP 是应用层协议,RPC 常基于 TCP 或 HTTP,RPC 更为远程过程调用封装。
  5. 【关键点 2】HTTP 通用于跨语言跨平台,RPC 效率更高但耦合更紧。
  6. 【关键点 3】HTTP 语义面向资源,RPC 面向方法调用。
  7. 【关键点 4】RPC 通常集成服务治理,HTTP 可借助网关等实现类似能力。
  8. 【易错点 1】不要将 HTTP 等同于 REST,REST 是一种风格,HTTP 是协议。
  9. 【易错点 2】不要认为 RPC 一定比 HTTP 快,实际性能取决于序列化与网络开销。
  10. 【易错点 3】不要忽略 HTTP/2、HTTP/3 的改进,其性能差距可能缩小。