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