51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

投放系统与广告主后台的实时通信,如何保证低延迟和高可用?请说明使用的协议、消息队列设计以及网络优化策略。

360Web服务端开发工程师-投放方向难度:中等

答案

1) 【一句话结论】采用gRPC/HTTP/2等低延迟协议结合Kafka/RocketMQ消息队列解耦,通过负载均衡、CDN、TCP优化等网络策略,实现投放系统与广告主后台的实时通信低延迟和高可用。

2) 【原理/概念讲解】
投放系统与广告主后台的实时通信需兼顾“低延迟”(毫秒级响应)和“高可用”(99.9%以上可用性)。

  • 协议选择:优先选gRPC(基于HTTP/2的二进制协议)或HTTP/2,因HTTP/2支持多路复用(减少连接建立开销)、二进制传输(压缩比高),gRPC还支持流式RPC,比HTTP/1.1的短连接模式更高效,能显著降低请求延迟。
  • 消息队列设计:引入Kafka/RocketMQ等消息队列,核心作用是解耦系统(投放系统与广告主后台异步通信)、削峰填谷(应对广告主后台突发流量)、保证可靠性(即使后台短暂不可用,请求仍能写入队列,恢复后处理)。类比:消息队列像“快递中转站”——投放系统是“寄件人”,广告主后台是“收件人”,中转站确保即使收件人暂时“不在家”(不可用),寄件人也能投递包裹(请求),同时处理突发的大批量包裹(削峰填谷)。
  • 网络优化:通过负载均衡(如Nginx/HAProxy分发请求到多台广告主后台实例)、CDN缓存静态资源/热点请求、TCP优化(如开启TCP Fast Open、调整TCP窗口大小)减少网络传输延迟,进一步提升低延迟体验。

3) 【对比与适用场景】

  • 协议对比(HTTP/1.1 vs HTTP/2 vs gRPC):
    | 方面 | HTTP/1.1 | HTTP/2 | gRPC |
    |------------|----------------|-----------------|---------------|
    | 协议类型 | 面向连接,短连接 | 多路复用,二进制 | RPC,流式传输 |
    | 延迟 | 较高(每个请求独立连接) | 低(多路复用减少连接数) | 低(二进制+RPC语义) |
    | 适用场景 | 传统简单请求 | 低延迟、多请求并发场景 | 微服务间强一致性通信 |
  • 消息队列对比(Kafka vs RocketMQ):
    | 方面 | Kafka | RocketMQ |
    |------------|----------------|-----------------|
    | 特性 | 分布式,高吞吐,持久化 | 高可用,顺序性,延迟低 |
    | 适用场景 | 实时数据流,大规模消息 | 金融、广告等对延迟敏感场景 |

4) 【示例】
以gRPC+Kafka组合为例:
投放系统代码(伪代码):

# 1. 发送gRPC请求(低延迟)
client = GrpcClient()
response = client.send_bid_request(bid_request)  # 广告主后台gRPC服务

# 2. 同时写入Kafka(保证高可用)
producer = KafkaProducer()
producer.produce("advertiser-bid-queue", bid_request)  # 异步写入队列

# 广告主后台消费Kafka代码(伪代码):
consumer = KafkaConsumer("advertiser-bid-queue")
while True:
    msg = consumer.poll()
    process_bid_request(msg)  # 处理请求

广告主后台通过消费Kafka队列,即使投放系统直接调用gRPC失败(如后台短暂不可用),也能通过队列恢复通信,同时Kafka的高吞吐保证突发流量处理。

5) 【面试口播版答案】
“投放系统与广告主后台的实时通信,核心是通过低延迟协议+消息队列+网络优化三重保障。首先,协议选gRPC(基于HTTP/2),它用二进制传输+流式RPC,比HTTP/1.1的短连接模式延迟更低,适合实时请求。其次,引入Kafka消息队列解耦系统——投放系统将请求写入队列,即使广告主后台短暂不可用,也能保证请求不丢失,恢复后处理,实现高可用。最后,网络优化上用负载均衡分发请求到多实例,CDN缓存热点资源,TCP优化减少传输延迟,整体实现毫秒级低延迟和99.9%以上高可用。”

6) 【追问清单】

  • 问题1:消息队列的持久化机制如何保证数据不丢失?
    回答要点:采用持久化存储(如磁盘+日志),确保消息在消费前不会丢失,结合ACK机制(消费确认后删除消息)。
  • 问题2:为什么选gRPC而不是HTTP/1.1?
    回答要点:gRPC基于HTTP/2的二进制协议,支持多路复用和流式传输,比HTTP/1.1的短连接模式延迟更低,且RPC语义更清晰,适合微服务通信。
  • 问题3:网络优化中,负载均衡的具体策略是什么?
    回答要点:用Nginx/HAProxy做四层/七层负载均衡,根据请求负载、实例健康状态(如CPU/内存)动态分发请求,避免单点故障。
  • 问题4:消息队列的延迟如何控制?
    回答要点:通过调整队列分区数、消费线程数,以及消息压缩(如Kafka的压缩算法)降低延迟,同时保证吞吐。

7) 【常见坑/雷区】

  • 坑1:只谈协议或消息队列,忽略网络优化。
    雷区:面试官会质疑“高可用”是否仅靠协议/队列,而未考虑网络层面的流量分发和延迟控制。
  • 坑2:高可用设计未考虑流量分发。
    雷区:仅说“用消息队列保证高可用”,未提及负载均衡、多实例部署,显得架构不完整。
  • 坑3:消息队列选型错误。
    雷区:比如用Kafka处理金融级顺序性场景,或用RabbitMQ处理高吞吐实时流场景,选型与业务需求不匹配。
  • 坑4:协议选择错误(如用HTTP/1.1)。
    雷区:HTTP/1.1的短连接模式会导致高延迟,不符合“低延迟”需求,显得对协议理解不深。
  • 坑5:忽略消息队列的可靠性机制。
    雷区:未提及ACK机制、重试策略,导致高可用设计不严谨。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1