这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记
- 抖音背后的存储
- 为什么对象存储
- 对象存储怎么用
- TOS字节内部实践
1. 抖音背后的存储
- 海量存储需求:源视频存储,转码视频存储(不同码率),抽帧图片存储(审核)
- 需要同时满足:易用、海量、便宜
2. 为什么对象存储
海量:
- 单机存储 no
- 单机数据库 no
- 分布式数据库 no(只适合结构化数据)
- 分布式存储 yes
对象存储TOS相比于分布式文件系统HDFS:
- 更海量(>EB海量存储,对象无限制)
- 更易用(Restful HTTP接口,开发简单,更适于视频图片)
- 更便宜(冷热数据分级,成本更低)
对象存储适用场景:
- 视频
- 图片
- 文本
- 安装包
- 备份
- 前端js文件 总结:对象存储适用于静态数据(Immutable),不适用结构化数据可变数据
3. 对象存储怎么用
- 申请Bucket
- 业务逻辑开发(CRUD,视频增删改查)
- 上线测试
RestFul接口:
- PUT 上传视频
- GET 下载视频
- DELETE 删除视频
- HEAD 查看视频元信息
弱网优化:MultiUpload接口 分页列举接口:ListPrefix接口
4. TOS字节内部实践
业务场景:
- 容量型:
- 代表业务:片源(用户上传源视频)、转码(源文件转码后的视频)
- 特点:海量容量(>EB)、海量吞吐(>>100GB/s)、高持久度(用户视频不能丢)
- 挑战:可拓展性(容量吞吐量)、成本(单位储存成本需要足够低)、持久度(保证成本的情况下,确保高持久度)
- QPS型
- 代表业务: 抽帧(源视频审核用抽帧)
- 特点:QPS极高,>>100k/s
- 挑战:可拓展性(QPS需可线性拓展)
可拓展性解法:Partition 分布式:存储均匀分布、计算均匀分布、压力均匀分布
持久度解法:Replication
成本解法:
- EC(Erasure Coding)
- 温冷转换
高可用解法:拆分降低爆炸半径