对象存储| 青训营笔记

80 阅读2分钟

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

对象存储的用处

针对大量的超过MB的数据设计的存储方式

分类

分布式文件存储系统-HDFS

  • 持PB->EB海量存储
  • 文件数量受Name Node限制
  • 非云原生,视频/图片相关生态接入略复杂
  • 使用普通x86服务器,成本低

对象存储-TOS

  • 支持>EB的海量存储

  • 对象数量无限制

  • Restful HTTP接口,开发极简单

  • 云原生,按需申请使用

  • 视频/图片相关生态丰富

  • 使用普通X86服务器

  • 具备冷热数据分级存儲能力,

  • 成本更低

对象存储怎么用

Restful接口

PUT:

  • 参数:Bucket, Key,对象内
  • 返回:成功/失败

GET:

  • 参数:Bucket, Key
  • 返回:对象内容

HEAD: Lite版GET

  • 参数:Bucket, Key
  • 返回:对象元信息,如大小Content-Type等

DELETE:

  • 参数:Bucket, Key
  • 返回:成功/失败

可扩展性Partition

Partition (分而治之)

  • 分而治之:不同数据映射至不同Partition分区
  • Partition Logic: Hash/ Range

可扩展性如何达成

  • 数据量增加:扩容机器新建Partition
  • Parition Logic:新增数据写入映射导向新Partition

持久度

复制 ( Replication)

  • 数据复制多份,即多个副本

副本放置策略:

  • 多机架:可抵抗机架级别故障
  • 多机房:可抵抗机房级别故障
  • 多Region:可抵抗Region级别故障

带来

  • 高持久度:不丢数据
  • 强吞吐能力:多个副本可以提供服务 思考
  • Replication的拷贝方式有哪些?
  • Replication如何解决一致性问题?

成本

Replication星然可以解决持久度问题,但是单纯多副本拷贝成本也非常高!

EC (Erasure Coding)

  • 冗余编码:可达到和多副本一样的持久度

特点

  • 低元余度:成本较单纯多副本低
  • 额外计算:增加了额外的编码计算步骤

思考

  • 当前的EC编码算法有哪些?
  • 多机房的EC如何实现?

架构细化

  • API: 接入层
  • Bucket Meta:Bucket元信息服务
  • Object Meta:对象元信息服务
  • Distributed KV: Range Partition的分布式 KV 用于持久化对象元数据
  • Storage Engine:对象内容存取服务
  • Distributed Storage Pool:分布式存储池,三副本 or EC存储
  • GC:垃圾回收后合服务
  • Lifeycle:温冷转换后台服务