面试题:gRPC与HTTP协议的区别

一、面试问题

请说一下gRPC和HTTP协议有什么区别?

二、核心概念厘清

1. gRPC 本质 :gRPC不是独立通信协议 ,而是Google开源的高性能RPC框架。

  • 底层传输:强制基于 HTTP/2.0
  • 默认序列化:Protobuf(二进制)
  • 定位:服务间高性能远程调用

2. HTTP 本质 :通用应用层通信协议,是Web通信基础,面向客户端-服务器通用交互。

三、gRPC 与 HTTP 核心区别对比表

对比维度 gRPC HTTP(RESTful)
本质定位 RPC框架,面向服务间调用 通用应用层协议,面向C/S通信
底层传输 基于 HTTP/2.0,长连接+多路复用 主流 HTTP/1.1,并发需多TCP连接
序列化格式 Protobuf(二进制,体积小、速度快) JSON(文本,可读性高、体积大)
通信模式 支持4种:一元/服务端流/客户端流/双向流 仅支持 请求-响应 单向模式
性能表现 二进制+头部压缩+多路复用,低延迟 文本传输,头部冗余,HTTP/1.1队头阻塞
类型安全 强类型,编译期校验 弱类型,依赖约定
浏览器兼容 原生不支持,需gRPC-Web 全浏览器原生支持
适用场景 微服务内部、高并发、实时通信 前后端、对外API、通用Web服务

四、HTTP/2.0 核心优化(gRPC性能基础)

  • 二进制分帧:替换文本格式,解析更高效
  • 多路复用 :单TCP连接并行传输,解决应用层队头阻塞
  • HPACK头部压缩:减少头部冗余,降低带宽
  • 服务器推送:主动推送资源,无需重复请求
  • 流优先级:核心资源优先传输

重要说明 :HTTP/2.0 仅解决应用层队头阻塞,TCP层仍存在队头阻塞,HTTP/3 基于QUIC彻底解决该问题。

五、标准回答

复制代码
gRPC是基于HTTP/2.0的RPC框架,HTTP是通用应用层协议。
区别主要有四点:
第一,定位与场景:gRPC专注跨语言服务高性能调用,适合微服务、高并发、实时场景;HTTP是通用协议,适合前后端、对外公开API。
第二,底层与性能:gRPC基于HTTP/2.0,多路复用+头部压缩+二进制序列化,延迟低、并发强;HTTP主流用HTTP/1.1+JSON,头部冗余、存在队头阻塞。
第三,通信模式:gRPC支持一元、单向流、双向流四种全双工模式;HTTP仅支持请求-响应。
第四,类型安全:gRPC强类型校验,提前发现错误;HTTP弱类型,依赖文档约定。
补充:HTTP/2解决应用层队头阻塞,TCP层仍阻塞,HTTP/3用QUIC彻底优化。

六、常见认知误区纠正

  • 错误 :gRPC是独立协议,与HTTP并列 → 正确:gRPC基于HTTP/2.0,是框架而非协议
  • 错误 :gRPC使用Protobuf协议 → 正确:Protobuf是序列化格式,传输层是HTTP/2.0
  • 错误 :HTTP/2存在队头阻塞 → 正确:仅TCP层阻塞,应用层已解决
  • 错误 :区别=HTTP/2与HTTP/1区别 → 正确:核心是RPC框架与通用协议的本质差异
相关推荐
流浪0011 天前
计算机网络篇23:数据链路层——以太网帧格式与 MAC 地址,MTU 牵住 UDP 和 TCP,ARP 拿 IP 换 MAC
计算机网络·mac·数据链路层·arp·mtu·局域网通信
老秦包你会1 天前
计算机网络第二课 ----Socket(套接字)编程预备
开发语言·计算机网络·php
say_fall2 天前
【Linux网络编程】计算机网络基础:局域网与广域网、OSI七层模型与TCP/IP五层模型、封装解包与MAC/IP地址、端口号与socket编程接口
linux·网络·tcp/ip·计算机网络·信息与通信
流浪0012 天前
计算机网络篇21:网络层——网段划分与子网掩码,从分类地址到 CIDR 与可用主机数
计算机网络·子网划分·nat·子网掩码·cidr·网络层协议
咔_2 天前
有IPv6地址,为什么外面还是连不进来?让同一台服务分别卡在四个位置
linux·计算机网络
流浪0012 天前
计算机网络篇22:网络层——公网的三级地址划分与逐跳转发,从私网出口替换到 IP 分片组装
tcp/ip·计算机网络·路由器·公网搭建·报文分篇
Java成神之路-3 天前
TCP Socket 与 UDP Socket
tcp/ip·计算机网络·udp
流浪0014 天前
计算机网络篇20:网络层——IP 协议的定位与 IPv4 报头字段,从 20 字节首部到 TTL 防环
tcp/ip·计算机网络·ttl·网络层协议·ip报头
流浪0015 天前
计算机网络篇17:传输层——TCP 超时重传、三次握手与四次挥手,TIME_WAIT 为什么要等 2MSL
网络协议·tcp/ip·计算机网络·三次握手·四次挥手·超时重传
流浪0016 天前
计算机网络篇16:传输层——TCP 报头属性字段:16 位窗口大小撑起流量控制,六个标志位标识报文类型
网络协议·tcp/ip·计算机网络·urg紧急指针·tcp报头