这是我参与「第五届青训营 」伴学笔记创作活动的第 17 天
一、对象存储怎么用
首先,他了解到对象存储对外提供的一般都是Restful风格的接口。
随着开发的深入,小明发现一个问题,自己上传数GB的大视频时,由于网络不好,总是上传到99%就网络卡住了,他很恼火。于是翻遍对象存储各类手册,终于发现了一个解决此场景的闪电三连鞭:MultiUpload。
小明把上传下载/删除对象存储等基本场景搞定后,但是想看看桶里面有哪些对象,这时候他又犯难了, 继续翻遍开发手册后,他发现了一个分页列举接口:ListPrefix.
二、开发一个对象存储
- 接入层:接入解析并处理接口请求
- 元信息层:存储对象元信息
- 存储擎层:存储对象内容
对业务场景的分类:
- 容量型
- 代表业务
- 片源:用户上传源视频
- 转码:源文件转码后的视频
- 特点
- 容量:海量,>EB
- 吞吐:海量,>>100GB/S
- 高持久度:用户视频不能丢
- 挑战
- 可扩展性:容量/吞吐需可线性扩展
- 成本:单位存储成本需要足够低
- 持久度:如何在保证成本的情况下,确保高持久度
- 代表业务
- PQS
- 代表业务
- 抽帧:源视频审核用抽帧
- 特点
- QPS:极高,>>100K/S
- 挑战
- 可扩展性:QPS需可线性扩展
- 代表业务
解决方案:
- 可扩展性解法之Partition
- 分布式存储=分布式+单机存储。
- 分布式:
- 存储均匀分布
- 计算均匀分布
- 压力均匀分布
- 分布式系统相当于一个蜂群,每个节点都负责小部分数据存储和计算,达到1+1>=2的效果
- 持久度解法之Replication
- 复制(Replication)
- 数据复制多份,即多个副本
- 副本放置策略
- 多机架:可抵抗机架级别故障
- 多机房:可抵抗机房级别故障
- 多Region:可抵抗Region级别故障
- 带来
- 高持久度:不丢数据
- 强吞吐能力:多个副本可以提供服务
- 复制(Replication)