TOS对象存储实践 2 | 青训营笔记

134 阅读3分钟

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

本节课主要介绍:

一、开发一个对象存储:

短视频应用上线后,大获成功,对象存储在公有云的使用量特别大,数据量大了,我们决定自研对象存储,然后根据这个很快想出了一个经典的三层架构:

image.png

接入层:接入解析并处理接口请求

元信息层:存储对象元信息

存储引擎层:存储对象内容

架构细化

1.容量型:

代表业务

片源:用户上传源视频

转码:源文件转码后的视频

特点

容量:海量,>EB

吞吐:海量,>>100GB/S

高持久度:用户视频不能丢

挑战:

可扩展性:容量/吞吐需可线性扩展

成本:单位存储成本需要足够低

持久度:如何在保证成本的情况下,确保高持久度

2.QPS型

代表业务

抽帧:源视频审核用抽帧

特点

QPS:极高,>>100K/s

挑战

可扩展性:QPS需可线性扩展

二、可扩展性解法之Partition

分布式存储=分布式+单机存储

分布式:

存储均匀分布

计算均匀分布

压力均匀分布

分布式系统相当于一个蜂群,每个节点都负责一小部分数据存储和计算,达到1+1>=2的效果

Partition(分而治之)

分而治之:不同数据映射至不同Partition分区

Partition Logic:Hash/Range

可扩展性如何达成

数据量增加:扩容机器新建Partition

Parition Logic:新增数据写入映射导向新Partition

三、持久度解法之Replication

复制(Replication)

1.数据复制多份,即多个副本

2.副本放置策略

1)多机架:可抵抗机架级别故障

2)多机房:可抵抗机房级别故障

3)多Region:可抵抗Region级别故障

带来

高持久度:不丢数据

强吞吐能力:多个副本可以提供服务

四、成本解法之EC

EC (Erasure Coding)

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

特点

低冗余度:成本较单纯多副本低

额外计算:增加了额外的编码计算步骤

五、成本解法之温冷转换

数据都是有温度的,可以将冷数据转移到性能更差但更廉价的存储介质

六、架构细化

API:接入层

Bucket Meta:Bucket元信息服务

Object Meta:对象元信息服务

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

Storage Engine:对象内容存取服务

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

GC:垃圾回收后台服务

Lifecycle:温冷转换后台服务

七、高可用解法之拆分降低爆炸半径/高可用之镜像灾备

首先想到的就是,一个集群拆分成多个集群,有效降低爆炸半径

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

引用

字节内部课-TOS 字节内部实践 - 掘金 (juejin.cn)