MST

星途 面试题库

面试题:网络编程之微服务架构下常用网络通信协议

在微服务架构下,常见的网络通信协议有哪些?请简要说明它们各自的特点及适用场景,例如 HTTP/1.1、HTTP/2 和 gRPC 等。
18.1万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

HTTP/1.1

  • 特点
    • 文本格式:报文以文本形式传输,可读性强,便于调试。
    • 无状态:服务器不保留客户端状态,每次请求独立处理,降低服务器负担,但对于需要跟踪状态的应用,需额外处理(如使用 cookie、session)。
    • 队头阻塞:同一连接下,请求按顺序处理,若前面请求响应慢,会阻塞后续请求。
    • 缓存机制:有较为完善的缓存控制头字段,可实现强缓存和协商缓存,能有效减少重复请求。
  • 适用场景:适用于简单的 Web 应用、对可读性要求高的场景,如网页浏览、RESTful API 接口。因为其无状态和缓存机制有利于实现多平台、多设备的访问,且文本格式便于开发和维护。

HTTP/2

  • 特点
    • 二进制分帧:将报文分解为二进制帧,提高传输效率,且可在一个连接上并发处理多个请求和响应。
    • 多路复用:解决 HTTP/1.1 的队头阻塞问题,多个请求和响应可同时在一个连接上交错传输,提高了连接利用率。
    • 头部压缩:采用 HPACK 算法对请求和响应头部进行压缩,减少头部传输大小,加快传输速度。
    • 服务器推送:服务器可主动向客户端推送资源,提前将客户端可能需要的资源发送过去,提高用户体验。
  • 适用场景:适用于高并发的 Web 应用场景,特别是对性能要求较高的应用,如大型电商网站、在线视频平台等。多路复用和头部压缩等特性可显著提升性能。

gRPC

  • 特点
    • 基于 HTTP/2:继承了 HTTP/2 的多路复用、二进制分帧等优点,保证高效传输。
    • 强类型定义:使用 Protocol Buffers 定义服务接口和消息结构,具有强类型特性,提高代码的可读性和可维护性,同时生成多种语言的代码,方便不同语言的微服务间通信。
    • 高性能:序列化和反序列化速度快,数据传输体积小,适用于性能敏感的场景。
    • 双向流:支持客户端和服务器之间的双向流通信,适用于实时通信场景,如聊天应用、物联网设备通信等。
  • 适用场景:适用于内部微服务之间的通信,尤其是对性能、强类型有要求,且多语言开发的场景。例如大型分布式系统、云原生应用等,其高性能和多语言支持能有效降低开发和维护成本。