抖音背后的存储
存储要求
简而言之 存储视频需要很大的存储空间,因此想要满足上面三个需求
存储对比
分布式数据库 和 分布式存储
作为存储,文件和数据库最大的差异一是访问方式(接口),而是应用场景;
文件是与传统的块、对象并列,提供最基本的存储服务,块主要是高IOPS,对象主要是高带宽,文件都又需求;文件和块比较传统,不像对象新兴产生,非常适合互联网行业的存储;
而数据库主要是读多写少,重在查询效率,而不是存储空间;
另外,从分布式层面讲,文件和数据库都可以实现分布式,包括存储(持久化)的分布式逻辑和计算(接入层)的分布式逻辑,一个解决数据共享存放的问题,一个解决访问负载均衡的问题。
分布式对象存储
优点
HDFS 是 Hadoop分布式文件系统
对象存储
适用场景
使用方法
restful风格
一个http就可以做增删改查 比较简单
multiupload
将视频先分成几个part 上传的时候分part上传,上传时每个part都会有一个uploadid 以便上传完成之后进行拼接
listprefix 分页列举
TOS字节内部实践
初始三层架构
架构细化
转码:为了适配不同的客户端 转成不同的码率
QPS:Queries Per Second是衡量信息检索系统(例如搜索引擎或数据库)在一秒钟内接收到的搜索流量的一种常见度量。
可扩展性--Partition
分而治之,将不同流量放到不同的服务器
Partition Logic
- hash
- range:比如查看字符串在A-G 就放在PartitionA 以此类推(可以保留原有的顺序)
持久度-Replication
解决:备份(多机架 多机房 多region)
- 机架:共享电源或者是网线(可类比与图书馆的书架)
- 机房:(类比图书馆)
- region:华南、华北等地区
成本问题-EC
将原始数据分块 如果后面其中一块坏了,可以通过其他快计算得出坏掉的这块
成本问题-温冷转换
如果某些数据很长一段时间没有访问过 可以把它搬到价格较低的设备上 如果更长一段时间没访问 直接归档将其当做冷数据处理
架构细化
需求细化
高可用性
SLA (Service Level Agreement)服务等级协议,指的是系统服务提供者(provider)对客户(customer)的一个服务承诺
Recovery Point Objective (RPO),指的是最多可能丢失的数据的时长。
Recovery Time Objective (RTO) ,指的是从灾难发生到整个系统恢复正常所需要的最大时长。
简单区分的话,RPO是灾难发生之前的时间, RTO是灾难发生之后的时间。
高可用-降低爆炸半径
高可用-粤核酸的启发
高可用-镜像灾备
主bucket如果挂了 可以先用备用的bucket,等主恢复之后进行同步