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

198 阅读2分钟

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

一 、抖音背后的存储

短视频架构初探
片源系统 --送审--> 审核系统 --放出--> 推荐系统
客户端 账号系统 评论系统

存储需求量细化
Day: 1730TB / 432块4TB磁盘 / 20亿个视频/图片
Month: 51900TB / 12960块4TB磁盘 / 622亿个视频/图片
Year: 613450TB / 157680块磁盘 / 7568亿个视频/图片

寻找天选存储
易用-海量-便宜

二、为什么对象存储

存储分类
单机存储: 文件系统 key-Value存储
单机数据库: 关系型数据库 非关系型数据库
关系型数据库: 关系型数据库 非关系型数据库
分布式存储: 分布式文件系统 对象存储

分布式存储选型
分布式文件系统HDFS
海量: 支持PB->EB海量存储
文件数量受Name Node限制
易用
伪Posix文件接口,开发略复杂
非云原生,搭建维护较麻烦
视频/图片相关生态接入略复杂
便宜
使用普通X86服务器,成本低

对象存储TOS
海量
支持>EB海量存储 对象数量无限制
易用
Restful HTTP接口,开发极简单
云原生,按需申请使用 视频/图片相关生态丰富
便宜
使用普通X86服务器
具备冷热数据分级存储能力,成本更低

使用场景
静态、Immutable : 视频、图片、文本、安装包、备份、前端js文件
结构化、Mutable::关系型数据库、KV、随机写、Append写、更新频繁

三、对象存储怎么用

对象存储很多云厂商都支持。小明选择了字节的TOS。
小明申请完Bucket后,要开启开发,他了解到对象存储对外提供的一般都是Restful风格的接口。
小明已经了解了对象存储基本接口的使用,他向组里同事演示了对象存储PUT/GET/HEAD/DELETE接口的基本用法。
随着开发的深入,小明发现一个问题,自己上传数GB的大视频时,由于网络不好,总是上传到99%就网络卡顿。翻遍对象存储各类手册,终于发现了一个解决此场景的闪电三连鞭:MultiUpload。
小明把上传/下载/删除对象存储等基本场景搞定后,但是想看看桶里面有哪些对象,这时候他又发难了,继续翻遍开发手册后,他发现一个分页列举接口:ListPrefix。