设计类Google Drive服务:打造千万日活用户的云存储服务

本文首发于公众号:更AI (power_ai),欢迎关注,编程、AI干货及时送!

近年来,诸如 Google Drive、Dropbox、Microsoft OneDrive 和 Apple iCloud 这样的云存储服务变得非常流行。在本章中,你被要求设计 Google Drive。

在深入设计之前,让我们花点时间理解 Google Drive。Google Drive 是一个文件存储和同步服务,它可以帮助你在云中存储文档、照片、视频和其他文件。你可以从任何电脑、智能手机和平板电脑访问你的文件。你可以轻松地与朋友、家人和同事分享这些文件[1]。图 15-1 和 15-2 分别展示了浏览器和移动应用上的 Google Drive 的样子。

image-20230525205244319

image-20230525205255735

第一步 - 理解问题并确定设计范围

设计 Google Drive 是一个大项目,因此提出问题以缩小范围是非常重要的。

候选人:最重要的功能是什么?
面试官:上传和下载文件,文件同步,以及通知。

候选人:这是一个移动应用,还是网页应用,或者两者都是?
面试官:两者都是。

候选人:支持的文件格式有哪些?
面试官:任何类型的文件。

候选人:文件需要进行加密吗?
面试官:是的,存储中的文件必须加密。

候选人:是否存在文件大小的限制?
面试官:是的,文件必须小于或等于10GB。

候选人:这个产品有多少用户?
面试官:每日活跃用户为1000万。

在本章中,我们将关注以下功能:

  • 添加文件。添加文件最简单的方式就是将文件拖放到 Google Drive 中。
  • 下载文件。
  • 在多个设备间同步文件。当一个设备上添加了文件,它会自动同步到其他设备。
  • 查看文件的历史版本。
  • 与你的朋友,家人和同事分享文件。
  • 当文件被编辑、删除,或者有人与你共享文件时,发送通知。

本章未讨论的功能包括:

  • Google文档的编辑和协作。Google文档允许多人同时编辑同一文档。这超出了我们的设计范围。

除了明确需求外,理解非功能性需求也非常重要:

  • 可靠性。对于存储系统来说,可靠性极其重要。数据丢失是无法接受的。
  • 快速同步速度。如果文件同步花费太多时间,用户会变得不耐烦并放弃产品。
  • 带宽使用。如果产品占用了大量不必要的网络带宽,用户会不高兴,尤其是他们使用移动数据计划时。
  • 可扩展性。系统应能处理高流量。
  • 高可用性。当一些服务器离线、速度降低或出现意外网络错误时,用户仍应能够使用系统。

粗略估算

  • 假设该应用有5000万注册用户和1000万日活跃用户。

  • 用户获得10GB免费空间。

  • 假设用户每天上传2个文件,平均文件大小为500KB。

  • 读写比例为1:1。

  • 总共分配的空间:5000万 * 10GB = 500PB

  • 上传API的每秒查询数 (QPS):1000万 * 2次上传 / 24小时 / 3600秒 = ~240

  • 峰值QPS = QPS * 2 = 480

第二步 - 提出高级设计并获得认可

我们将采取一种略有不同的方式,而不是一开始就展示高级设计图。我们将从简单的事情开始:在单个服务器中构建一切。然后,逐渐扩大规模,以支持百万用户。通过这个练习,你会重新熟悉本书中涉及的一些重要话题。

让我们从以下列出的单服务器设置开始:

  • 一个用于上传和下载文件的web服务器。
  • 一个数据库,用于跟踪元数据,如用户数据,登录信息,文件信息等。
  • 一个存储系统,用于存储文件。我们分配1TB的存储空间来存储文件。

我们花了几个小时来设置一个Apache web服务器,一个MySql数据库,以及一个名为*drive/的目录作为根目录来存储上传的文件。在drive/*目录下,有一系列的目录,也称为命名空间。每个命名空间包含该用户上传的所有文件。服务器上的文件名保持与原始文件名相同。通过连接命名空间和相对路径,每个文件或文件夹可以被唯一标识。

图15-3显示了左侧的*/drive*目录的样子和右侧的扩展视图。

image-20230525205317891

API接口

API接口是什么样的?我们主要需要3个API接口:上传文件,下载

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值