对象存储2|青训营笔记

96 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 17 天

一、对象存储怎么用

首先,他了解到对象存储对外提供的一般都是Restful风格的接口。

随着开发的深入,小明发现一个问题,自己上传数GB的大视频时,由于网络不好,总是上传到99%就网络卡住了,他很恼火。于是翻遍对象存储各类手册,终于发现了一个解决此场景的闪电三连鞭:MultiUpload。

小明把上传下载/删除对象存储等基本场景搞定后,但是想看看桶里面有哪些对象,这时候他又犯难了, 继续翻遍开发手册后,他发现了一个分页列举接口:ListPrefix.

二、开发一个对象存储

  • 接入层:接入解析并处理接口请求
  • 元信息层:存储对象元信息
  • 存储擎层:存储对象内容

对业务场景的分类:

  • 容量型
    • 代表业务
      • 片源:用户上传源视频
      • 转码:源文件转码后的视频
    • 特点
      • 容量:海量,>EB
      • 吞吐:海量,>>100GB/S
      • 高持久度:用户视频不能丢
    • 挑战
      • 可扩展性:容量/吞吐需可线性扩展
      • 成本:单位存储成本需要足够低
      • 持久度:如何在保证成本的情况下,确保高持久度
  • PQS
    • 代表业务
      • 抽帧:源视频审核用抽帧
    • 特点
      • QPS:极高,>>100K/S
    • 挑战
      • 可扩展性:QPS需可线性扩展

解决方案:

  • 可扩展性解法之Partition
    • 分布式存储=分布式+单机存储。
    • 分布式:
      • 存储均匀分布
      • 计算均匀分布
      • 压力均匀分布
    • 分布式系统相当于一个蜂群,每个节点都负责小部分数据存储和计算,达到1+1>=2的效果
  • 持久度解法之Replication
    • 复制(Replication)
      • 数据复制多份,即多个副本
      • 副本放置策略
        • 多机架:可抵抗机架级别故障
        • 多机房:可抵抗机房级别故障
        • 多Region:可抵抗Region级别故障
    • 带来
      • 高持久度:不丢数据
      • 强吞吐能力:多个副本可以提供服务