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

158 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 15 天

本节课主要介绍:

一、抖音背后的存储

短视频架构初探:

片源系统 |—送审—> 审核系统 |—放出—> 推荐系统--短视频生产/消费

(客户端、账号系统、评论系统)

这一条链路上,会有片源,也就是承接用户上传的内容,然后还有个审核服务,对这些内容进行合规的审核,最后这些内容会根据机器学习打上标签,通过历史观看兴趣通过推荐服务推荐到手机上

存储需求:

把短视频生产消费链路做更细粒度分解,发现到处都有视频/图片的公共存储需求,并要求易用、海量、便宜

二、为什么对象存储

image.png 但分布式存储也有分布式文件系统和对象存储,应该选择哪个呢?

分布式文件系统HDFS:

支持PB->EB海量存储; 文件数量受Name Node限制;

伪Posix文件接口,开发略复杂; 非云原生,搭建维护较麻烦; 视频/图片相关生态接入略复杂;

使用普通X86服务器,成本低

对象存储TOS:

支持>EB海量存储; 对象数量无限制;

Restful HTTP接口,开发极简单; 云原生,按需申请使用; 视频/图片相关生态丰富;

使用普通X86服务器; 具备冷热数据分级存储能力,成本更低

接口对比可知其易用性;适用场景也更为丰富

三、对象存储怎么用

Restful接口:

申请完Bucket后,要开启开发,对象存储对外提供的一般都是Restful风格的接口。

image.png PUT:

参数:Bucket,.Key,对象内容

返回:成功/失败

GET:

参数:Bucket,Key

返回:对象内容

HEAD:Lite版GET

参数:Bucket,Key

返回:对象元信息,如大小/Content-Type等

DELETE:

参数:Bucket,Key

返回:成功/失败

MultiUpload接口:

随着开发的深入,发现自己上传数GB的大视频时,由于网络不好,总是上传到99%就网络卡住了,就有了一个解决此场景的闪电三连鞭:MultiUpload

Listprefix接口:

把上传/下载/删除对象存储等基本场景搞定后,想看看桶里面有哪些对象,可以用到一个分页列举接口:ListPrefix

引用

字节内部课-对象存储基本介绍 - 掘金 (juejin.cn)