在很多团队中,当我们讨论“接口”时,大家默认想到的几乎是 RESTful 的 HTTP + JSON。
但在真正的后端系统里,HTTP 其实只是众多接口方式中的其中一种。 高性能、低延迟、微服务内部调用、实时消息推送、数据流处理…… 这些需求往往需要完全不同的通信方式。
一个成熟的后端系统,接口绝不止 HTTP 一种选择。 不同方案,是为不同问题而生的。
本文就用一篇技术分享,系统梳理: 除了 HTTP,还有哪些常用接口?它们适合什么场景?与 HTTP 有什么本质差异?

每一种接口存在的意义都不同,因此 不存在万能接口,只有合适的场景。
包括:gRPC、Dubbo、Thrift、Hessian 等
RPC 的思想很简单:
就像调用本地函数一样去调用远程服务。
它们通常具备:
下面是主流 RPC 简析👇
协议:HTTP/2 格式:Protobuf(二进制)
特点:
适用场景: ⭐ 微服务内部调用 ⭐ 大流量场景(推荐页、Feed流) ⭐ 实时推送 ⭐ 移动端节省流量
特点:
适合: ⭐ 大型 Java 后端,服务治理需求强的团队
特点:
适合: ⭐ 多语言团队 ⭐ 已有 Thrift 生态
包括:Kafka、RabbitMQ、RocketMQ、Pulsar
“当你的系统需要解耦、削峰、异步处理时,MQ 是最合适的接口。”
特点:
适用场景: ⭐ 异步任务处理(发短信、批量计算) ⭐ 流数据管线(埋点、日志、监控) ⭐ 解耦业务系统(订单系统 -> 库存系统) ⭐ 高并发削峰
GraphQL 的优势:
缺点:
适用场景: ⭐ 前端页面复杂、字段要求灵活 ⭐ 移动端带宽敏感 ⭐ 需要聚合数据(如一个页面需多个后端接口)
WebSocket 特点:
应用: ⭐ 聊天室 ⭐ 在线游戏 ⭐ 实时行情 ⭐ 后台推送通知
MQTT 特点:
应用: ⭐ 物联网设备 ⭐ 远程传感器 ⭐ 低带宽网络
特点:
如果没有遗留系统接入需求:不建议新项目使用。
指标 | HTTP/REST | RPC(gRPC/Dubbo) | 消息队列 | WebSocket |
|---|---|---|---|---|
模型 | 请求-响应 | 请求-响应 | 异步消息 | 双向通信 |
协议 | HTTP | HTTP/2 + 二进制 | TCP + Broker | TCP 长连接 |
性能 | 中等 | 最高 | 高吞吐 | 实时 |
是否跨平台 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
场景 | 外部 API、浏览器 | 内部微服务 | 异步处理 | 实时系统 |
一句话总结:
外部用 HTTP,内部用 RPC,异步用 MQ,实时用 WebSocket。
接口不是越少越好,而是应该按职责组合使用。
一个优秀架构师的职责: 是为每条链路找到最合适的接口,而不是让所有接口一刀切。