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

设计一个分布式文件存储系统,用于存储课程视频(视频大小从几十MB到几个GB不等),需要考虑高可用、低延迟访问和成本控制。请说明存储架构、缓存策略、负载均衡方案。

深圳大学上海交运难度:困难

答案

1) 【一句话结论】采用分层存储架构(对象存储为核心存储层、CDN为边缘缓存层、本地节点为热点缓存层),结合多副本高可用机制与负载均衡策略,在保证高可用、低延迟的同时,通过对象存储的按需付费、边缘节点共享等手段控制成本。

2) 【原理/概念讲解】分布式文件存储的核心是“分而治之”,将大文件拆分为对象(如S3的Object模型),每个对象有唯一ID,存储在分布式节点上。高可用需通过多副本(如3副本)+跨区域复制实现,避免单点故障。低延迟则依赖分层缓存:本地节点缓存热点视频(如最近一周访问量高的课程),CDN边缘节点缓存区域内的热门视频,用户请求优先从本地/边缘获取。负载均衡采用一致性哈希+动态权重调整,将请求分发到负载低的节点,同时结合请求频率(热点数据优先分配更多资源)。
类比:对象存储就像一个“分布式仓库”,每个视频是“货物”,仓库分布在多个节点(高可用);CDN是“区域快递点”,把热门货物放在离用户近的地方(低延迟);本地缓存是“用户家门口的快递柜”,最近访问的货物放在柜子里(热点缓存)。

3) 【对比与适用场景】
存储架构对比:

架构类型定义特性使用场景注意点
对象存储(如S3)基于对象的分布式存储,通过Key-Value模型存储数据高扩展性、多副本、按需付费大文件存储(视频)、非结构化数据需要客户端API操作,不适合小文件频繁读写
块存储(如Ceph)基于块的分布式存储,提供高性能I/O高性能、高并发、自愈需要直接I/O的应用(如数据库)配置复杂,成本较高

缓存策略对比:

策略定义优点缺点适用场景
LRU(最近最少使用)移除最近最久未使用的缓存项简单高效,适合热点数据可能误判(如“伪共享”),冷启动慢本地缓存、边缘缓存(默认)
LFU(最不经常使用)移除访问频率最低的缓存项更准确反映访问频率计算复杂度较高热点数据缓存(如视频)
最小使用时间(MUT)移除使用时间最长的缓存项适合时间敏感数据需要记录时间戳时效性强的缓存(如直播)

4) 【示例】以用户请求“课程A-视频1.mp4”为例,流程如下:

  • 用户请求通过负载均衡器(如Nginx)分发到上海区域的边缘节点(CDN节点)。
  • 边缘节点检查本地缓存(如Redis),若存在则直接返回视频流。
  • 若不存在,则向对象存储(如MinIO)发送GET请求,通过一致性哈希定位到存储节点(假设视频ID为“courseA-video1”,哈希值为123,对应节点1)。
  • 对象存储节点1返回视频数据,边缘节点缓存该视频(如使用LFU策略),并返回给用户。
  • 同时,对象存储节点1将数据同步到其他副本节点(节点2、3),实现高可用。

伪代码(请求处理流程):

def handle_video_request(video_id):
    # 1. 检查本地缓存(边缘节点)
    if local_cache.has(video_id):
        return local_cache.get(video_id)
    
    # 2. 查找对象存储节点(一致性哈希)
    storage_node = consistent_hash.get_node(video_id)
    
    # 3. 从对象存储获取数据
    video_data = storage_node.get(video_id)
    
    # 4. 缓存到本地和边缘
    local_cache.set(video_id, video_data)
    edge_cache.set(video_id, video_data, ttl=3600)  # 边缘缓存1小时
    
    return video_data

5) 【面试口播版答案】
“面试官您好,我设计的分布式文件存储系统采用分层架构:核心层用对象存储(如MinIO)存储视频,通过多副本实现高可用;边缘层用CDN(如阿里云CDN)缓存区域内的热门视频,降低延迟;本地节点缓存最近访问的热点视频。负载均衡采用一致性哈希+动态权重,将请求分发到负载低的节点,同时结合访问频率调整权重。这样既保证了高可用、低延迟,又通过对象存储的按需付费和边缘节点共享降低了成本。”

6) 【追问清单】

  • 问:如何保证高可用?
    答:通过对象存储的多副本(如3副本)+跨区域复制(如主区域+备份区域),确保单节点故障不影响访问。
  • 问:缓存策略如何选择?
    答:本地缓存用LFU(最不经常使用)优化热点视频,边缘缓存用LRU(最近最少使用)控制缓存大小,平衡性能与成本。
  • 问:负载均衡的算法细节?
    答:采用一致性哈希+动态权重,根据节点的负载(CPU、内存、请求量)调整权重,热点数据节点权重更高,避免冷启动。
  • 问:成本控制的具体措施?
    答:对象存储按容量付费,边缘节点共享带宽,避免单节点过载;同时,定期清理冷数据,减少存储成本。

7) 【常见坑/雷区】

  • 坑1:忽略CDN导致延迟高。
    雷区:只强调对象存储的高可用,而未考虑用户访问的延迟问题,导致用户体验差。
  • 坑2:缓存策略选错。
    雷区:使用LRU缓存热点视频,导致冷启动时需要从对象存储获取,增加延迟;或使用LFU缓存非热点数据,占用过多缓存资源。
  • 坑3:负载均衡不区分热点数据。
    雷区:所有请求都平均分配到节点,导致热点节点过载,冷节点空闲,资源利用率低。
  • 坑4:未考虑数据迁移。
    雷区:系统扩容时,未设计数据迁移方案,导致新节点无法快速接入,影响可用性。
  • 坑5:成本控制不精细。
    雷区:未区分冷热数据,所有数据都放在高成本的对象存储中,未利用边缘节点或本地缓存降低成本。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1