TOS对象存储 探究 |青训营

1,230 阅读5分钟

1. 对象存储简介

1.1 对象存储

对象存储是一种用于存储和检索大规模数据的技术。

对象存储将数据以对象的形式存储在分布式存储系统中,并通过唯一的标识符来访问和管理这些对象。对象存储具有以下特点:

  • 高可扩展性
  • 高可靠性
  • 高性能
  • 适用于存储海量数据和大规模的分布式应用

1.2 字节跳动 TOS对象存储

字节跳动的TOS-TikTok Object Storage是字节跳动开发的一种对象存储系统。基于云原生架构设计的,具有高可靠性、高可扩展性和高性能的特点。

TOS支持海量数据的存储和检索,并提供了多种数据管理功能,如数据备份、数据迁移和数据恢复等。同时,TOS还提供了丰富的API和工具,方便开发者对存储的对象进行管理和操作。

TOS在字节跳动旗下的产品中广泛应用,特别是在TikTok等大规模用户的短视频平台,能够支持海量的视频、图片等媒体数据的存储和快速检索,保证了平台的高可用性和良好的用户体验。同时,TOS还具备良好的扩展性,能够根据业务需求进行水平扩展,满足不断增长的存储需求。

2. 企业选用对象存储原因

存储系统可以分为:

  • 单机存储
    • 文件系统
    • key - value存储
  • 单机数据库
    • 关系型数据库
    • 非关系型数据库
  • 分布式数据库
    • 关系型数据库
    • 非关系型数据库
  • 分布式存储
    • 分布式文件系统
    • 对象存储

image.png 根据数据库特点,在海量多类型数据场景下首先排除单机存储,单机数据库同理。 分布式数据库只适合存储构化半结构化数据。所以选择分布式存储,分布式存储是针对海量存储场景特别设计的存储,能够存储海量的大数据。

image.png 经过对比分析,分布式存储中选择对象存储。 下图体现了对象存储的接口易用性优势。 image.png

  • 对象存储适用场景静态
    • 视频
    • 图片
    • 文本
    • 安装包
    • 备份
    • 前端js文件等
  • 对象存储不适用场景结构化
    • 关系型数据:商品订单...
    • kv: 缓存记录
    • 随机写:在线编辑
    • Append写:大数据计算中间结果
    • 更新频繁:账户余额

3. 使用对象存储

申请Bucket -> 业务逻辑开发 -> 上线测试

3.1 业务逻辑开发-Restful 接口

对象存储对外提供一般为Restful接口 image.png

3.2 业务逻辑开发-克服网络影响- MultiUpload接口

采用的是分而治之思想进行分片 image.png

以下为使用参数:

image.png

3.3 业务逻辑开发-分页列举-Listprefix接口

ListPrefix接口是用于查看桶有哪些对象,是一个分页接口,循环调用该接口可以遍历桶下面所有对象。

image.png

以下为使用参数:

image.png

4. 字节跳动内部TOS实践

4.1 架构

梳理业务场景: image.png 分布式存储 = 分布式 + 单机存储 需要保证分布式:

  • 存储均匀分布
  • 计算均匀分布
  • 压力均匀分布
  • 每个节点都负责小部分数据存储和计算,达到 1 + 1 >= 2的效果

可扩展性解法-Partition 分而治之

  • 分而治之:不同数据映射至不同Partition分区
  • Partition Logic: Hash/Range 达成可扩展性
  • 数据量增加: 扩容机器新建Partition
  • Parition Logic: 新增数据写入映射导向新Partition

image.png

持久度解法-Replication复制

硬件、软件、自然灾害都可能导致机房故障

image.png

  • 数据复制多份,即多个副本
  • 副本放置策略:
    • 多机架: 可抵抗机架级别故障
    • 多机房: 可抵抗机房级别故障
    • 多Region: 可抵抗Region级别故障
  • 高持久度: 不丢数据
  • 强吞吐能力: 多个副本可以提供服务

成本解法-EC冗余编码

  • 解决单纯多副本导致的拷贝成本
  • 冗余编码:可达到和多副本一样的持久度
  • 低几余度:成本较单纯多副本低
  • 额外计算:增加了额外的编码计算步骤

image.png

成本解法-温冷转换

image.png

架构完成

image.png

4.2 存储需求量细化- 超高可用

超高可用解法-拆分降低爆炸半径 即一个集群拆分成多个集群,降低爆炸半径

image.png 超高可用解法-镜像灾备 主备Bucket,出现问题随时切换。 image.png

5. 未来展望

  • 未来发展奋斗方向:
  • 容量治理
  • 成本优化
  • 大数据生态
  • 稳定性提升永久话提

6. 结语

对象存储是一种高可靠、高可扩展、高性能的存储技术,适用于存储和管理海量数据。字节跳动的TOS(TikTok Object Storage)是字节跳动开发的一种对象存储系统,它在字节跳动内部发挥着重要的作用。

TOS作为字节跳动的核心存储组件,为字节跳动旗下的产品提供了可靠、高效的数据存储和管理能力。它支持海量数据的存储和检索,并提供了丰富的数据管理功能,如备份、迁移和恢复等。开发者可以通过TOS提供的API和工具,方便地对存储的对象进行管理和操作。

在字节跳动内部,TOS被广泛应用于各种场景,特别是在TikTok等大规模用户的短视频平台中。TOS的高可用性和性能保证了平台的稳定运行,并能够满足用户对海量视频、图片等媒体数据的存储和快速检索需求。同时,TOS的扩展性也为字节跳动提供了便利,可以根据业务需求进行水平扩展,满足不断增长的存储需求。

字节跳动的TOS是一款功能强大、可靠性高的对象存储系统,为字节跳动内部的产品提供了稳定、高效的数据存储和管理服务。通过TOS的应用,字节跳动能够更好地处理海量数据,并为用户提供出色的使用体验。随着技术的不断发展,相信TOS将继续发挥重要作用,为字节跳动的业务发展提供强大的支撑。