这是我参与「第五届青训营」伴学笔记创作活动的第 16 天
本节课主要介绍:
一、开发一个对象存储:
短视频应用上线后,大获成功,对象存储在公有云的使用量特别大,数据量大了,我们决定自研对象存储,然后根据这个很快想出了一个经典的三层架构:
接入层:接入解析并处理接口请求
元信息层:存储对象元信息
存储引擎层:存储对象内容
架构细化
1.容量型:
代表业务
片源:用户上传源视频
转码:源文件转码后的视频
特点
容量:海量,>EB
吞吐:海量,>>100GB/S
高持久度:用户视频不能丢
挑战:
可扩展性:容量/吞吐需可线性扩展
成本:单位存储成本需要足够低
持久度:如何在保证成本的情况下,确保高持久度
2.QPS型
代表业务
抽帧:源视频审核用抽帧
特点
QPS:极高,>>100K/s
挑战
可扩展性:QPS需可线性扩展
二、可扩展性解法之Partition
分布式存储=分布式+单机存储
分布式:
存储均匀分布
计算均匀分布
压力均匀分布
分布式系统相当于一个蜂群,每个节点都负责一小部分数据存储和计算,达到1+1>=2的效果
Partition(分而治之)
分而治之:不同数据映射至不同Partition分区
Partition Logic:Hash/Range
可扩展性如何达成
数据量增加:扩容机器新建Partition
Parition Logic:新增数据写入映射导向新Partition
三、持久度解法之Replication
复制(Replication)
1.数据复制多份,即多个副本
2.副本放置策略
1)多机架:可抵抗机架级别故障
2)多机房:可抵抗机房级别故障
3)多Region:可抵抗Region级别故障
带来
高持久度:不丢数据
强吞吐能力:多个副本可以提供服务
四、成本解法之EC
EC (Erasure Coding)
冗余编码:可达到和多副本一样的持久度
特点
低冗余度:成本较单纯多副本低
额外计算:增加了额外的编码计算步骤
五、成本解法之温冷转换
数据都是有温度的,可以将冷数据转移到性能更差但更廉价的存储介质
六、架构细化
API:接入层
Bucket Meta:Bucket元信息服务
Object Meta:对象元信息服务
Distributed KV:Range Partition的分布式KV,用于持久化对象元数据
Storage Engine:对象内容存取服务
Distributed Storage Pool:分布式存储池,三副本orEC存储
GC:垃圾回收后台服务
Lifecycle:温冷转换后台服务
七、高可用解法之拆分降低爆炸半径/高可用之镜像灾备
首先想到的就是,一个集群拆分成多个集群,有效降低爆炸半径
完全镜像的主备Bucket,出现问题随时切换,真正100%的可用性