网盘设计

前言

文件图片等诸多文件,无U盘无法copy到其他地方使用,期望实现一个网盘,实现文件的上传、下载、共享

产品命名:DBox

一、需求分析

功能分析

性能分析

[每个需求的目标如何制定的,每个活跃用户每天上传下载个数是如何确认的,这里其实有些存疑如何调研的]

目标支持10亿用户注册使用,每个用户免费1TB,预计日活用户2亿,每个用户每日上传、下载4个文件

  1. 总存储量

    最大免费容量 = 10亿*1TB

    考虑到很多人不会完全使用掉这个空间,且设计优化为相同文件只会存一份,因此大约需要10%的容量

  2. 吞吐量

    1. QPS

      2亿 * 4 / 24 * 60 * 60 ≈ 1万

      高峰2倍则2万

    2. TPS

      写入同QPS

  3. 网络带宽

    假设上传文件平均大小1M,所以需要带宽是10GB/s,按照高峰期评估则20GB/s

非功能需求

  1. 高可靠。TP6个9。100万个文件允许一个文件损坏
  2. 高可用。TP4个9。
  3. 数据安全性。文件访问的安全性需要保证
  4. 避免重复上传。若不同人传的文件相同,则无需重复上传,直接指向即可,实现“秒传”
  5. 可断点上传与下载。

二、概要设计

关注点分离(元数据与文件内容的分离存储与管理)

整体架构图

查询调用时序图

下载调用时序图

三、详细设计

元数据库设计

限速设计

根据元数据中用户是否是会员,限制并发下载的block服务器数、block数、和下载block的线程数

秒传设计

user表:按照userId分区

logic_file表:按照userId分区

physics_file表:按照fieldId分区;同时建立MD5分区映射fieldId

block表:按照field分区


posted @ 2023-06-21 14:18  程序杰杰  阅读(50)  评论(0编辑  收藏  举报