TOS对象存储实战 | 青训营笔记

159 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记

  1. 抖音背后的存储
  2. 为什么对象存储
  3. 对象存储怎么用
  4. TOS字节内部实践

1. 抖音背后的存储

  • 海量存储需求:源视频存储,转码视频存储(不同码率),抽帧图片存储(审核)
  • 需要同时满足:易用、海量、便宜

2. 为什么对象存储

海量:

  • 单机存储 no
  • 单机数据库 no
  • 分布式数据库 no(只适合结构化数据)
  • 分布式存储 yes

对象存储TOS相比于分布式文件系统HDFS:

  • 更海量(>EB海量存储,对象无限制)
  • 更易用(Restful HTTP接口,开发简单,更适于视频图片)
  • 更便宜(冷热数据分级,成本更低)

对象存储适用场景:

  • 视频
  • 图片
  • 文本
  • 安装包
  • 备份
  • 前端js文件 总结:对象存储适用于静态数据(Immutable),不适用结构化数据可变数据

3. 对象存储怎么用

  1. 申请Bucket
  2. 业务逻辑开发(CRUD,视频增删改查)
  3. 上线测试

RestFul接口:

  • PUT 上传视频
  • GET 下载视频
  • DELETE 删除视频
  • HEAD 查看视频元信息

弱网优化:MultiUpload接口 分页列举接口:ListPrefix接口

4. TOS字节内部实践

业务场景:

  1. 容量型:
  • 代表业务:片源(用户上传源视频)、转码(源文件转码后的视频)
  • 特点:海量容量(>EB)、海量吞吐(>>100GB/s)、高持久度(用户视频不能丢)
  • 挑战:可拓展性(容量吞吐量)、成本(单位储存成本需要足够低)、持久度(保证成本的情况下,确保高持久度)
  1. QPS型
  • 代表业务: 抽帧(源视频审核用抽帧)
  • 特点:QPS极高,>>100k/s
  • 挑战:可拓展性(QPS需可线性拓展)

可拓展性解法:Partition 分布式:存储均匀分布、计算均匀分布、压力均匀分布

持久度解法:Replication

成本解法:

  • EC(Erasure Coding)
  • 温冷转换

高可用解法:拆分降低爆炸半径