TOS | 青训营笔记

136 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记

Tos

存储需求

为什么需要对象存储

  • 单机存储
  • 单机数据库
  • 分布式数据库
  • 分布式存储

image.png

image.png

冷热数据分级存储能力,热数据有更多的访问,冷数据较少访问。

Bucket/Object语义

  • Bucket:存储对象的桶

  • Object:对象

    • Key:对象的名字
    • Data:对象的内容
    • MetaData:对象的一些辕信息,如对象大小

HTTP接口

对象存储适用场景

视频图片等

适合静态、Immutable

不适合结构化、Mutable

对象存储怎么用

申请Bucket

业务逻辑开发

上线测试

TOS字节内部实践

开发一个对象存储

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

可扩展性解法-Partition

分布式:

  • 存储均匀分布
  • 计算均匀分布
  • 压力均匀分布

Partion(分而治之)

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

可扩展性如何达成

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

持久度解法-Replication

数据单节点存储,一定有较大概论丢失无法找回

复制(Replication)

  • 数据复制多份

  • 副本放置策略:

    • 多机架
    • 多机房
    • 多Region

带来

  • 高持久度:不丢数据
  • 强吞吐能力:多个副本可以提供服务

成本解法-EC

EC(Erasure Coding)

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

特点

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

成本解法之温冷转换

image.png

架构细化

image.png

API:接入层

Bucket Meta:Bucket元信息服务

Object Meta:对象元信息服务

Distributed KV:Range Partition的分布式KV,用于持久化对象元数据

Storage Engine:对象内容存取服务

Distributed Storage Pool:分布式存储池,三副本or EC存储

GC:垃圾回收后台服务

Lifecycle:温冷转换后台服务

高可用解法之拆分降低爆炸半径

将一个集群分拆成多个集群,有效降低爆炸半径

完全镜像的主备Bucket,出现问题随时切换,真正100%的可用性!