对象存储的优势
分布式存储选型
分布式存储也有分布式文件系统和对象存储,如何选择?
可以从海量、易用、便宜三个角度考虑:
-
分布式文件系统HDFS的文件数量受Name Node限制,而对象存储的对象数量无限制
-
HDFS提供伪POSIX文件接口,开发略复杂;非云原生,搭建维护麻烦;视频/图片相关生态接入复杂。而对象存储提供Restful HTTP接口,开发简单;云原生;视频/图片相关生态丰富。
-
HDFS使用普通x86服务器,成本较低;对象存储在此基础上还具备冷热数据分级存储能力,成本更低。
适用场景
-
适合:静态、immutable(视频,图片,文本,安装包、备份、前端js文件)
-
不适合:结构化、mutable(关系型数据:商品订单;KV:缓存记录;随机写:在线编辑文件;append写:大数据计算的中间结果;频繁更新)
对象存储的用法
Restful接口
-
Put 上传视频
-
Get 下载视频
-
Head 查看视频元信息
-
Delete 删除视频
MultiUpload接口
弱网环境,总是上传到99%就卡住,可以通过MultiUpload解决此场景:
-
InitUpload
-
UploadPart
-
CompleteUpload
ListPrefix接口
查看桶里面有哪些对象时,可以采用分页列举接口:ListPrefix
开发一个对象存储
经典业务场景
容量型:
-
代表业务
-
片源:用户上传源视频
-
转码:源文件转码后的视频
-
-
特点:海量容量、海量吞吐、高持久化
-
挑战
-
可拓展性:容量、吞吐可线性拓展
-
成本 & 持久度:单位存储成本足够低
-
QPS型:
-
代表业务
- 抽帧:源视频审核用抽帧
-
特点:QPS极高
-
挑战
- 可拓展性:QPS可线性拓展
实践
-
可拓展性解法 - Partition
- partition logic:hash、range
-
持久度解法 - Replication
-
带来高持久度和强吞吐能力(多个副本可以提供服务)
-
但也需要拷贝方式和一致性问题
-
-
成本解法
-
Erasure Code:可达到和多副本一样的持久度
-
低冗余度:成本较单纯的多副本更低
-
额外计算:增加了额外的编码计算步骤
-
-
温冷转换:数据是有温度的,将冷数据转移到性能更差但更廉价的存储介质
-
-
高可用解法
-
拆分降低爆炸半径
-
镜像灾备,增量双向同步
-
架构细化
-
API:接入层
-
Bucket Meta:Bucket元信息服务
-
Object Meta:对象元信息服务
-
Distributed KV:Range Partition的分布式KV,用于持久化对象元数据
-
Storage Engine:对象内容存取服务
-
Distributed Storage Pool:分布式存储池,三副本 或 EC存储
-
Lifecycle:温冷转换后台服务
-
GC:垃圾回收后台服务