Skip to content

RPC vs REST

⚔️ RPC vs REST 对比

对比维度 RPC REST
架构风格 面向过程 面向资源
通讯协议 HTTP/2 或自定义协议 HTTP/1
数据格式 Protocol Buffers、MessagePack 等二进制序列化格式(也支持 JSON, XML 等格式) JSON, XML 等格式
相关 Framework gRPC、Dubbo、Thrift 等 HttpClient、RestTemplate 等
使用场景 微服务内部,注重性能和效率,对服务调用的实时性和低延迟要求高 对外提供的 API,方便不同客户端(如 Web 应用、移动应用)接入

🏗️ 架构选型建议

在微服务架构中,通常采用混合模式:

  • 内部服务间: 使用 RPC 可提高系统整体性能。
  • 对外提供服务: 使用 RESTful API 能让更多类型的客户端轻松接入,提升系统的开放性和扩展性。

🚀 RPC 比 REST 快的主要原因

RPC(特别是基于 HTTP/2 的 gRPC)之所以高性能,主要归功于以下几点:

  • 二进制数据格式: 比 JSON 更紧凑,序列化/反序列化速度更快。
  • 多路复用: 单个连接可以并发处理多个请求,减少连接开销。
  • 直接调用方法: 减少了协议层面的冗余开销。
  • 连接复用: 减少 TCP 握手和请求时延。
  • 支持流式通信: 适用于大数据传输和实时双向通信。

⚖️ RPC 的优缺点权衡

虽然 RPC 性能卓越,但也存在一定的门槛:

缺点:

  • 调试难度大: 不像 REST 可以直接用浏览器或简单的 curl 命令访问,通常需要专门的工具或代码。
  • 协议复杂: 往往需要代码生成器(如 .proto 文件),不如 REST 直接使用 HTTP 语义简单直观。

总结建议:

  • 如果追求高性能、低延迟、实时通信RPC(特别是 gRPC)通常是更好的选择。
  • 如果追求简单、跨语言兼容性好、易于调试REST 可能更适合。

Comments