在面试时,首先应说明典型的多层缓存架构:客户端缓存、边缘节点(Edge)、中间层(POPs / Regional CDN)、源站。设计要点包括合理划分TTL、采用分层缓存策略和缓存预热。
边缘节点侧重短TTL和高命中率以降低延迟;中间层用于长TTL和大流量分摊;源站负责最终一致性和冷数据。替换策略可以在边缘采用LRU/ARC,在中间层结合LFU以保留热点。
视频通常按分片(chunk)缓存,关键点是对关键帧或首段设短TTL以保证快速更新,对长期热门内容设长TTL并结合按需预取。可以对不同码率分别设定缓存权重。
解决一致性要在设计中区分强一致性需求和最终一致性可接受的场景。面试回答应提及主动失效(主动下发invalidate)、被动失效(基于TTL)和版本化(URL版本号或参数)。
对频繁更新的资源采用版本化URL可以避免复杂失效;对关键变更采用推送通知或控制平面RPC到边缘做主动失效,并设计幂等和退避机制以防风暴。
面试中需分别定义三类问题并给出对应策略:缓存穿透通过输入校验、布隆过滤器拦截非法请求;缓存击穿对单热点key加互斥锁或使用互斥更新(singleflight);缓存雪崩通过随机化TTL、分散失效时间和多级备援来缓解。
实践中可结合本地内存缓存做二级缓存、使用互斥锁或请求合并(singleflight)、在高并发时降级到限流或返回近实时稍旧的内容以保证可用性。
分片粒度与编码带来的大小和可seek性必须权衡:更小分片利于快速首屏和精细缓存,但会增加请求数和控制开销。常见做法是首片更小并高优先级缓存,后续分片较大以减少请求。
另一个要点是与自适应码率(ABR)协同:对不同码率建立独立缓存策略,热门分辨率或码率设更高缓存优先级,并对码率切换做熔断策略以避免频繁回源。
推荐遵循STAR或结构化设计法:先Clarify需求(延迟、QPS、命中率、成本、更新频率),再提出高层架构图(多层缓存、负载均衡、监控)、列出关键设计点(缓存策略、一致性、故障恢复)、最后讨论扩展性和权衡。
回答时要突出对关键指标的影响(P95延迟、回源QPS、缓存命中率)、给出可度量方案(埋点、指标阈值)并说明降级策略与演进路线,这样能体现工程思维与系统权衡能力。
