面试题 | 设计文件托管服务dropbox/google drive

题目

Use Cases

  • 用户上传/下载文件

  • 用户分享文件/文件夹给其他人

  • 用户浏览自己账户下的文件

  • 同一用户多个终端之间文件同步,一个设备修改文件,其他设备都同步

  • 离线编辑功能

  • 快照功能,回到文件的任意历史版本

约束

  • 500M用户, DAU 1M
  • 单个用户存储总量默认10GB,扩展可达到TB,根据付费扩容
  • R/W = 100, 每天,每个用户写入(上传)文件(平均100MB)一个,1M,qps = 11
  • 文件存储总量 500M * 10GB = 5000 PB ;文件总数量 50G
  • 元数据存储总量 500M * 10GB/100MB * 2KB = 100 PB

High Level Design

  • 本题关键在于 1)如何保证多客户端的一致性 2)如何优化大文件的传输效率,尤其是当只修改文件的一部分

  • 分布式存储系统S3 + metadata service + synchronize service + upload service + download service + 消息队列服务 + client + api service

  • sync服务的定位是保证多个device的一致性;主动通知all clients

DB 设计

  • 读多写少,读写都耗时,qps不高,数据库load不会很高
  • 记录数量多,单条记录小
  • 数据库关系不强,考虑到扩展性,使用NOSQL

DB schema

file_info:table

  • PK: file_id:int
  • name:varchar(20)
  • file_path:varchar(256)
  • file_size:int
  • user_id:int
  • private:int
  • version_id:int
  • created_at:datetime
  • update_at:datetime

file_version_info:table

  • PK: user_id, file_name, version_id
  • user_id:int
  • file_name:varchar(20)
  • version_id:int
  • file_id:int
  • created_at:datetime

user:table

  • PK:user_id:int
  • name:varchar(20)
  • email:varchar(20)
  • quota:int
  • used_space:int
  • device: [device_
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值