这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记
1抖音背后的存储
第1步是片源服务,将用户上传的视频存起来,这个用户原始的视频我们叫源视频; 然后会有转码服务,将源视频转为不同码率的视频,为什么需要转码呢,因为不同的客户端(如不同的手机/电脑)型号,能接受的分辨率是不一样的,因此需要转码来适配,这里转码完后的也需要存储起来,以供后续客户端拉取; 然后图下面还有个抽帧服务,将视频抽成不一样的帧,用于审核服务做审核,这里也需要有个存储把这些图片存储起来; 最后就是推荐服务了,将对应视频推荐出去,然后客户端就可以来拉取观看啦;
三个维度: 海量:从前面分析,这个存储系统一定要能够存储如此大的海量 易用:好的存储能够解放业务,让业务专注于业务逻辑开发 便宜:这么大的存储量,越便宜就越能省下宝贵的经费
2为什么对象存储
单机存储首先我们排除,数据量实在是太大了,单机肯定存不下,单机数据库同理。 分布式数据库,现代的分布式数据库在容量和弹性上面都有很大进展,是否可以呢?答案也是No,因为分布式数据库只适合存储结构化or半结构化数据,什么是结构化数据呢,上过上面提到课程的同学应该有印象,就是数据和数据之间有一定关系,如用户信息,一个用户会关联包括电话号码,性别等各种维度的信息,这些信息一般都是不超过KB级别的,超过MB级别就不适合使用数据库处理了; 唯一的选择就是分布式存储,分布式存储是针对海量存储场景特别设计的存储,能够存储海量的大数据;
适用场景 适合: 视频·图片·文本·安装包·备份·前端js文件 不适合: ·关系型数据:商品订羊 KV:缓存记录 随机写:在线漏辑文件 -Append写:大数据计算中间结果 更新频繁:钱包余额
3对象存储怎么用
Restful风格接口
4TOS字节内部实践
接入层:接入解析并处理接口请求元
信息层:存储对象元信息
存储引擎层:存储对象内容
代表业务 片源:用户上传源视频 代表业务 转码:速文件转码后的视须 抽帧:源视频审核用抽师 特点 容量:海量,>EB 特点 吞吐:海量,> 100GB/s PS:极高,> >100K/s 高持久度:用户视濒不能丢 挑战 挑战 可扩展性:容量/吞吐需可线性扩展 可扩展性:QPS需可线性扩展 成本:中位存俑成本需要足够低 持久度:如何在保证成本的请况下,确保高持久度