这是我参与「第五届青训营 」伴学笔记创作活动的第 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:温冷转换后台服务