1. 对象存储简介
1.1 对象存储
对象存储是一种用于存储和检索大规模数据的技术。
对象存储将数据以对象的形式存储在分布式存储系统中,并通过唯一的标识符来访问和管理这些对象。对象存储具有以下特点:
- 高可扩展性
- 高可靠性
- 高性能
适用于存储海量数据和大规模的分布式应用
1.2 字节跳动 TOS对象存储
字节跳动的TOS-TikTok Object Storage是字节跳动开发的一种对象存储系统。基于云原生架构设计的,具有高可靠性、高可扩展性和高性能的特点。
TOS支持海量数据的存储和检索,并提供了多种数据管理功能,如数据备份、数据迁移和数据恢复等。同时,TOS还提供了丰富的API和工具,方便开发者对存储的对象进行管理和操作。
TOS在字节跳动旗下的产品中广泛应用,特别是在TikTok等大规模用户的短视频平台,能够支持海量的视频、图片等媒体数据的存储和快速检索,保证了平台的高可用性和良好的用户体验。同时,TOS还具备良好的扩展性,能够根据业务需求进行水平扩展,满足不断增长的存储需求。
2. 企业选用对象存储原因
存储系统可以分为:
- 单机存储
- 文件系统
- key - value存储
- 单机数据库
- 关系型数据库
- 非关系型数据库
- 分布式数据库
- 关系型数据库
- 非关系型数据库
- 分布式存储
- 分布式文件系统
- 对象存储
根据数据库特点,在海量多类型数据场景下首先排除单机存储,单机数据库同理。
分布式数据库只适合存储构化半结构化数据。所以选择分布式存储,分布式存储是针对海量存储场景特别设计的存储,能够存储海量的大数据。
经过对比分析,分布式存储中选择对象存储。
下图体现了对象存储的接口易用性优势。
- 对象存储适用场景
静态- 视频
- 图片
- 文本
- 安装包
- 备份
- 前端js文件等
- 对象存储不适用场景
结构化- 关系型数据:商品订单...
- kv: 缓存记录
- 随机写:在线编辑
- Append写:大数据计算中间结果
- 更新频繁:账户余额
3. 使用对象存储
申请Bucket -> 业务逻辑开发 -> 上线测试
3.1 业务逻辑开发-Restful 接口
对象存储对外提供一般为Restful接口
3.2 业务逻辑开发-克服网络影响- MultiUpload接口
采用的是分而治之思想进行分片
以下为使用参数:
3.3 业务逻辑开发-分页列举-Listprefix接口
ListPrefix接口是用于查看桶有哪些对象,是一个分页接口,循环调用该接口可以遍历桶下面所有对象。
以下为使用参数:
4. 字节跳动内部TOS实践
4.1 架构
梳理业务场景:
分布式存储 = 分布式 + 单机存储
需要保证分布式:
- 存储均匀分布
- 计算均匀分布
- 压力均匀分布
- 每个节点都负责小部分数据存储和计算,达到 1 + 1 >= 2的效果
可扩展性解法-Partition 分而治之
- 分而治之:不同数据映射至不同Partition分区
- Partition Logic: Hash/Range 达成可扩展性
- 数据量增加: 扩容机器新建Partition
- Parition Logic: 新增数据写入映射导向新Partition
持久度解法-Replication复制
硬件、软件、自然灾害都可能导致机房故障
- 数据复制多份,即多个副本
- 副本放置策略:
- 多机架: 可抵抗机架级别故障
- 多机房: 可抵抗机房级别故障
- 多Region: 可抵抗Region级别故障
- 高持久度: 不丢数据
- 强吞吐能力: 多个副本可以提供服务
成本解法-EC冗余编码
- 解决单纯多副本导致的拷贝成本
- 冗余编码:可达到和多副本一样的持久度
- 低几余度:成本较单纯多副本低
- 额外计算:增加了额外的编码计算步骤
成本解法-温冷转换
架构完成
4.2 存储需求量细化- 超高可用
超高可用解法-拆分降低爆炸半径 即一个集群拆分成多个集群,降低爆炸半径
超高可用解法-镜像灾备
主备Bucket,出现问题随时切换。
5. 未来展望
- 未来发展奋斗方向:
- 容量治理
- 成本优化
- 大数据生态
- 稳定性提升
永久话提
6. 结语
对象存储是一种高可靠、高可扩展、高性能的存储技术,适用于存储和管理海量数据。字节跳动的TOS(TikTok Object Storage)是字节跳动开发的一种对象存储系统,它在字节跳动内部发挥着重要的作用。
TOS作为字节跳动的核心存储组件,为字节跳动旗下的产品提供了可靠、高效的数据存储和管理能力。它支持海量数据的存储和检索,并提供了丰富的数据管理功能,如备份、迁移和恢复等。开发者可以通过TOS提供的API和工具,方便地对存储的对象进行管理和操作。
在字节跳动内部,TOS被广泛应用于各种场景,特别是在TikTok等大规模用户的短视频平台中。TOS的高可用性和性能保证了平台的稳定运行,并能够满足用户对海量视频、图片等媒体数据的存储和快速检索需求。同时,TOS的扩展性也为字节跳动提供了便利,可以根据业务需求进行水平扩展,满足不断增长的存储需求。
字节跳动的TOS是一款功能强大、可靠性高的对象存储系统,为字节跳动内部的产品提供了稳定、高效的数据存储和管理服务。通过TOS的应用,字节跳动能够更好地处理海量数据,并为用户提供出色的使用体验。随着技术的不断发展,相信TOS将继续发挥重要作用,为字节跳动的业务发展提供强大的支撑。