RPC(Remote Procedure Call,远程过程调用)和 HTTP(HyperText Transfer Protocol,超文本传输协议)都是用于网络通信的协议/思想,但它们的设计目标、使用场景和抽象层次不同。下面从多个维度对比说明。
目标:让调用远程服务像调用本地函数一样简单
核心思想:
示例(伪代码):
User user = userService.getUserById(1);
背后可能是:
目标:传输数据(最初用于 Web)
核心思想:
示例:
GET /users/1 HTTP/1.1
Host: api.example.com
| 对比维度 | RPC | HTTP |
|---|---|---|
| 抽象层次 | 方法调用级 | 资源传输级 |
| 使用体验 | 像调用本地函数 | 像发请求 |
| 协议依赖 | 可用 TCP / HTTP / 自定义 | 基于 HTTP |
| 性能 | 通常更高(二进制协议) | 相对较低(文本协议) |
| 可读性 | 较低 | 高(尤其 REST) |
| 跨语言 | 依赖 IDL(如 Protobuf) | 天然支持 |
| 调试难度 | 较难 | 容易(浏览器 / curl) |
| 典型应用 | 微服务内部调用 | 前后端、开放 API |
RPC 是“调用方式”,HTTP 是“传输协议”
RPC 追求“像本地一样调用”,HTTP 追求“通用、可读、跨平台”
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。