• ABC
    2022-03-21
    老师,这个设计能对标现在大部分主流网盘设计吧?

    作者回复: 主要对标国内某度网盘。

    
    11
  • peter
    2022-02-25
    请教老师几个问题: Q1:用户数与并发数的估算。 一个500万注册用户的网站,并发数大约多少?如果业务是类似极客时间,带宽又需要多少? 怎么估算并发数和带宽啊? Q2:存储成本很高吗? 京东上的移动硬盘,价格有高有低,1TB大约300元。一亿TB的话,按照这个估算就需要大约300亿。如果再备份的话,就需要600亿。这个成本是不是太高?真实网盘,比如百度网盘,成本也是这么高吗? Q3:带宽成本很高吗? 高峰期网络带宽为160Gb/s,这个带宽一年的费用大约多少? Q4:对象存储的关键是什么?怎么体现“对象”?“ceph”是个标准还是一个具体品牌?

    作者回复: 1 专栏2后半部分讨论过估算的思路,注册用户数->在线用户数->并发用户数,根据业务场景的不同,这个数据是逐级以几十倍到几百倍的比例递减,极客时间这个场景的话,500万注册用户,并发用户大概几千吧。 并发数 * 响应数据量 = 带宽 2 用户和存储是逐渐增加的,不是一致性投入1亿TB,稳定下来,每年实际投入百亿左右即可。这个成本不高的,百度网盘会员费每年300,我们十亿用户只要10%成为付费会员,营收300亿。 4 ceph是一个开源软件

    
    10
  • 瑾年
    2022-03-15
    老师,您好,请问这个业务为什么选型 Ceph 作为文件存储,而不是HDFS。选型分布式文件存储的依据可以分享下吗

    作者回复: 网盘文件以小文件为主,HDFS的设计目标是大文件。如果用HDFS,需要进行文件合并,后面短视频架构探讨这种设计方案。

    
    9
  • 向东是大海
    2022-02-26
    系统设计很精妙,特别是秒传的设计!一个小建议, MD5是已退役的哈希算法,采用SHA256等现行的哈希算法可减少哈希碰撞,更加安全。

    作者回复: 谢谢建议

    
    5
  • 3AM
    2022-02-25
    存储不用考虑多副本嘛?

    作者回复: ceph已经实现多副本,所以网盘自己不需要考虑了

    
    4
  • 苏志辉
    2022-03-20
    double_md5和size是不是应该保存到Physics_File,否则没办法进行秒传比较吧

    作者回复: 是的,应该在Physics_File,我修订下设计文档。 感谢你的评审意见。

    
    3
  • Geek_aa780e
    2022-03-16
    请问老师,在秒传模块的设计中,用户上传之前需要计算文件的MD5,面对大文件上传的场景下,是不是会产生巨大的耗时? 能不能设计以block为单位的logic_block, physics_block,能够减少一次完整文件的计算md5耗时,并且增加重叠率。

    作者回复: 会比较耗时,所以用户端上传时应该有两个进度条,一个是上传准备进度条,一个是上传进度条。 以block为单位进行秒传,并不能解决问题,一个大文件可以秒传,那么每个block都需要判断MD5是否存在,上传下载都更耗时。

    
    3
  • 丫丫
    2022-03-13
    请教老师几个问题: Q1:Client 访问 Block 服务器是什么协议?Block 服务器也有API吗? Q2:Block 服务器向API服务器验证权限是否是基于“这里我们把用户权限存在了user表里“?实际过程中是否我们直接使用oauth +role base token来解决这个问题 Q3:当我实现秒传一个文件后,如果有用户想要删除这个physical file的时候,如何确保我们能够安全的删除文件? 是否在physical file里面我们要存和logical file的映射关系? Q4:如何在用户下载前确认这个文件已经上传完毕了,否则拒绝下载?也就是说我们是不是要在logical file里面加标志位?还是我们计算每个block的size和总的size比较? 谢谢老师

    作者回复: 1 Block服务器就普通的web应用,http协议,有API 2 文中的设计是检查user表,用token确实会更灵活、更低耦合一点,感谢建议 3 首先,physical文件不会在用户删除时立即删除,不管是不是有秒传关联。其次,网盘会定期清理垃圾文件,所以,physical文件需要有个引用计数器,每次有秒传关联,计数器+1,每次关联logical文件删除,计数器-1。这个关注点非常好,是关键实现细节,是架构评审要发现的要点。 4 好问题,我的想法,加标志位或者求size,操作都比较重,性能压力大。同时,从用户体验角度,我觉得文件的可见性应该以用户一次上传为单位,一次上传若干个文件,在全部上传未完成前,应该全部不可见。所以,我觉得用一个MySQL内存数据库,临时记录用户上传中的文件元数据,一次上传全部完成后,再将数据同步到MySQL元数据库。

    共 2 条评论
    3
  • 👽
    2022-03-02
    课后题:可以尝试根据文件md5值进行分片。因为md5是无序的,所以应该可以使分片更加平均。

    作者回复: 可是查找的时候,是按照用户和文件名查找的,用MD5分片如何完成查找呢?

    
    2
  • Tim
    2022-03-01
    咨询下老师,用mysql存储这么大的数据是否合适?有没有其他的替代方案?

    作者回复: 我也觉得不是很合适。 07提到了HBase替代方案。但是用HBase替代的话,存储结构如何设计呢?需要考虑下。

    共 3 条评论
    1