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

88 阅读2分钟

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

问题

以抖音背后的存储为例,用户上传的源视频需要存储,转换成不同码率的视频需要存储,送审时抽帧的图片也需要存储。根据推算,一年产生的图片/视频数可达数千亿,需要十几万块4TB的磁盘才能存储。现在需要一个既便宜又易用、还能存储海量数据的存储系统。

方案

存储系统可以分为: 文件系统,key-value存储等单机存储

关系型数据库,非关系型数据库等单机/分布式数据库

分布式文件系统、对象存储等分布式存储

一般地,分布式相比单机有更大的容量,数据库更适合(半)结构化数据,所以选择分布式存储。对于分布式存储的两种方案而言,依然用海量、易用、便宜三个指标来衡量,对比如下图:

屏幕截图 2022-06-15 210736.jpg

总之,对象存储适合静态、immutable的数据

使用

  1. 申请Bucket
  2. 对象存储一般提供的是Restful风格的接口,在此基础上进行业务逻辑开发
  3. 一个文件太大上传不变时,分割成多分,使用MultiUpload接口
  4. 分页列举,使用Listprefix接口

实现一个对象存储系统

可分为两种业务场景:

2-2.jpg

问题:存储、计算任务可能分布不均,硬件、软件不可靠、自然灾害等,需要:

可扩展性:Partition(分而治之)解决,策略:Hash、Range

持久度:Replication,策略:多机架、多机房、多region

成本:EC(Erasure Coding)冗余编码、数据温冷转换

可用性:一个集群拆分成多个集群,降低爆炸半径,镜像灾备,出现问题时随时切换