这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记。
一、抖音背后的存储
首先需要一个客户端,然后有账号,也有评论服务,但核心来说抖音这类app都是UGC,就是用户生产内容的平台。在这条链路上,片源系统承接用户上传的内容,然后审核系统进行审核,最后这些内容通过机器学习打上标签,通过用户历史观看兴趣进行推送。
更细的划分:在片源服务后面将用户上传的视频存储起来,这个用户原始的视频为源视频;然后有转码服务,将源视频转码为不同码率的视频。转码可以适配不同的客户端,转码后再进行一次存储,便于客户端后面的拉取;然后还有一个抽帧服务,将视频抽成不一样的帧,用于审核服务做审核,这里也需要一个存储把这些图片进行存储;最后就是推荐服务了,把对应视频推荐出去,然后客户端就可以拉取观看了。
但是这样存储的数据量太大了。需要寻找一种易用、海量、便宜的存储方式。
二、对象存储
存储系统的分类
| 单机存储 | 单机数据库 | 分布式数据库 | 分布式存储 |
|---|---|---|---|
| 文件系统 | 关系型数据库 | 关系型数据库 | 分布式文件系统 |
| Key-Value存储 | 非关系型数据库 | 非关系型数据库 | 对象存储 |
| 存储备选 | 海量支持 | 适合数据类型 | 是否入选 |
|---|---|---|---|
| 单机存储 | No | 单机文件K/V | No |
| 单机数据库 | No | 少量(半)结构化数据 | No |
| 分布式数据库 | Yes | 大量(半)结构化数据 | No |
| 分布式存储 | Yes | 大数据计算中间结果/视频/文件等 | Yes |
对象存储TOS的优点:
- 海量:对象数量无上限
- 易用:Resultful HTTP接口,开发极其简单;云原生,按需申请使用;视频/图片相关生态丰富
- 便宜:使用普通x86服务器;具备冷热数据分级存储能力,成本更低