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

设计一个支持千万级请求/秒的快手信息流广告投放系统,需要考虑哪些关键技术?请从请求路由、缓存、预加载、容错等方面说明。

快手算法类难度:中等

答案

1) 【一句话结论】

设计千万级请求/秒的信息流广告投放系统,核心是通过分布式请求路由(负载均衡+智能调度)、多级缓存(CDN+分布式缓存+本地缓存)、预加载策略(提前拉取广告素材)、以及容错机制(熔断、降级、重试),结合微服务架构和异步处理,确保系统高可用、低延迟、高吞吐。

2) 【原理/概念讲解】

  • 请求路由:系统需将海量请求高效分发到后端服务节点。类比“交通指挥中心”,根据节点负载、服务能力(如广告策略计算能力)动态分配请求,常用策略有加权轮询(根据节点处理能力分配权重)、一致性哈希(减少节点切换时的请求重分布)。
  • 缓存:降低后端计算压力。分为多级:CDN缓存静态广告素材(如图片、视频),分布式缓存(如Redis)缓存广告策略计算结果、用户画像等热点数据,本地缓存(如服务端缓存)缓存高频访问的预加载资源。
  • 预加载:提前拉取广告素材(如视频预加载、图片预转码),避免用户点击时加载延迟。类比“提前备货”,在用户浏览时,后台异步拉取下一个广告的素材,存储在本地或缓存中。
  • 容错:应对服务故障。如熔断(当后端服务超时率过高时,直接返回失败,避免级联故障)、降级(减少功能调用,如简化广告展示逻辑)、重试(对非关键请求进行重试,如广告素材加载失败后重试)。

3) 【对比与适用场景】

以请求路由策略为例:

策略类型定义特性使用场景注意点
轮询按顺序循环分发请求简单,负载均衡效果一般小规模、负载较均匀的服务可能导致节点负载不均
加权轮询根据节点处理能力分配权重负载均衡更合理大规模、节点能力差异大的服务需要实时监控节点负载
一致性哈希基于哈希环分发请求节点增删时请求重分布少需要高可用、低切换开销的场景哈希环维护复杂

4) 【示例】

请求路由示例(加权轮询):

# 伪代码:请求路由器
def route_request(request, node_list):
    # node_list: [(node_id, load, capacity), ...]
    total_capacity = sum(node[2] for node in node_list)  # 总处理能力
    weight = request.ad_type.weight  # 广告类型权重(如视频广告权重更高)
    selected_node = None
    max_utilization = 0
    for node in node_list:
        utilization = node[1] / node[2]  # 负载率
        if utilization < 0.8 and (selected_node is None or utilization < max_utilization):
            selected_node = node
            max_utilization = utilization
    return selected_node[0]  # 返回节点ID

5) 【面试口播版答案】

“面试官您好,设计千万级请求/秒的信息流广告投放系统,核心是通过分布式请求路由、多级缓存、预加载、容错四大技术,结合微服务架构。首先,请求路由采用加权轮询+动态负载均衡,根据节点处理能力和广告类型权重分配请求,比如视频广告请求优先分配给计算能力强的节点;其次,缓存分三级:CDN缓存静态素材,Redis缓存广告策略结果,服务端缓存热点数据,降低后端计算压力;然后,预加载策略提前拉取下一个广告的素材(如视频预转码、图片预加载),避免用户点击时延迟;最后,容错机制包括熔断(超时率过高时直接失败)、降级(简化功能)、重试(非关键请求),确保系统高可用。具体来说,比如用户请求广告时,路由器根据节点负载和广告权重选择节点,缓存命中则直接返回,否则调用后端计算,同时预加载下一个广告素材,若后端服务超时则熔断,避免级联故障。”

6) 【追问清单】

  • 问:如何保证请求路由的负载均衡效果?
    回答要点:通过实时监控节点负载(如CPU、内存、QPS),动态调整权重,结合一致性哈希减少节点切换开销。
  • 问:缓存击穿/雪崩如何解决?
    回答要点:缓存击穿用互斥锁或分布式锁,缓存雪崩用随机TTL或热点数据预热。
  • 问:预加载的触发条件和资源浪费问题?
    回答要点:触发条件是用户浏览时,后台异步拉取下一个广告的素材,资源浪费通过控制预加载数量(如只预加载当前页面的下一个广告)避免。
  • 问:容错机制中熔断的阈值如何设定?
    回答要点:根据业务指标(如超时率超过50%或错误率超过30%),动态调整阈值,避免误判。

7) 【常见坑/雷区】

  • 忽略节点能力差异,用简单轮询导致负载不均;
  • 缓存未考虑热点数据,导致缓存失效频繁;
  • 预加载资源过多,导致带宽浪费或存储压力;
  • 容错机制过于复杂,影响系统性能;
  • 请求路由未考虑广告类型权重,导致视频广告加载慢。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1