RPC 是一个通用概念(Remote Procedure Call, RPC),它允许运行在不同进程、不同设备上的程序像调用"本地函数"一样相互通信。
| 特性 | JSON-RPC | gRPC | Apache Thrift |
|---|---|---|---|
| 开发者 | 社区标准 | Facebook (现 Apache) | |
| 序列化格式 | JSON (文本,易读) | Protobuf (二进制,极快) | Thrift Binary (二进制/多格式) |
| 传输协议 | 任意 (HTTP, TCP, WebSocket) | HTTP/2 (强制) | 任意 (TCP, HTTP 等) |
| 性能 | 一般 (文本解析慢,体积大) | 极高 (压缩率高) | 极高 (性能略胜 gRPC) |
| IDL (接口定义) | 无 (动态、灵活) | 有 (.proto 文件) | 有 (.thrift 文件) |
| 复杂度 | 非常简单 | 较复杂 (需编译代码) | 较复杂 (配置较多) |
| 流处理 | 不原生支持 | 原生支持双向流 | 支持有限 |