对象存储基本介绍 | 豆包MarsCode AI刷题

248 阅读10分钟

对象存储

引例

在今天的课程中,我们将如何逐步了解短视频APP背后的存储需求?短视频APP的存储需求是如何产生的?

我们将通过一个小故事展开讲述,首先介绍抖音背后的系统架构,然后深入探讨海量存储需求的具体体现。接着分析为什么对象存储是合适的选择,而其他存储类型无法满足需求。之后,我们会详细介绍对象存储的数据模型和接口,以及如何使用对象存储。最后,我们会分享在字节跳动实际场景中,TOS对象存储的功能解决方案。短视频APP的存储需求主要来源于短视频的生产和消费链路,包括用户上传视频、审核系统、推荐系统等环节。具体来说,用户从手机或客户端上传视频时,需要存储到边缘服务;审核过程中,每秒抽取的图片也需要存储;审核通过后,视频会被推荐给用户,这些过程都产生了大量的存储需求。

短视频APP产生的存储量有多大?

根据未来可能的用户量计算,短视频APP每天产生的存储量大约为1730TB,即每天需要约四百多块4TB磁盘;一个月的存储量达到5万多TB,需要近1万2100块磁盘;一年的存储量则为63TB,约合15万块磁盘,并且视频图片的数量极其庞大,人均可达100个视频图片。

在选择合适的存储解决方案时,应考虑哪些关键特征?

理想的存储解决方案需要具备海量扩展性,以适应APP不断发展壮大的需求;易用性,以便开发者能快速搭建并专注于业务逻辑开发;以及成本便宜,通过节省成本提升服务竞争力。

为什么在构建短视频APP时,选择对象存储而非其他存储方式?

我们会对比各类存储系统(如单机存储、分布式文件系统、关系型数据库、非关系型数据库、分布式存储)与短视频APP需求的匹配度,以论证为什么对象存储是最佳选择。对象存储具有出色的海量支持能力、适合的存储类型以及较低的成本,特别适合包含大量非结构化和结构化数据的互联网应用场景,如短视频APP产生的大数据量视频和图片存储。

对象存储简介

在分布式文件系统和对象存储之间,我们应该选择哪个?

我们应当根据三个维度进行对比:海量存储、利用便宜和扩展性。从海量存储角度看,分布式文件系统支持PB到BB级别的海量存储,而对象存储QS则能支持大于EB级别的海量存储,未来甚至可能达到ZB级别。

对象存储在成本上的优势是什么?

对象存储除了使用普通的x86服务器外,还具备冷热数据分级存储的能力,其成本更低。冷热数据分级存储是指将不常访问的数据迁移到更便宜的硬件上,从而降低整体存储成本。

对象存储的数据模型和接口是怎样的?

对象存储的数据模型以桶(bucket)为单位组织数据,桶内包含无限数量的对象,每个对象由key、metadata和data三部分组成。接口通过HTTP协议访问,相较于分布式文件系统的私有协议更为通用和易于使用。

分布式文件系统和对象存储在文件数量和扩展性上的区别是什么?在应用性方面,分布式文件系统和对象存储有何差异?

分布式文件系统在文件数量上也有百亿级别,但受限于内部价格level的扩展性限制;而对象存储 TOS没有这样的限制,支持无限数量的文件存储。分布式文件系统采用伪Post文件接口及目录文件语义开发策略,较为复杂且不是原生支持,需要自行搭建维护;而对象存储使用RESTful HTTP接口,开发简单,是云上最早出现的云原生存储服务,尤其在视频图片生态中应用丰富。

对象存储适合哪些场景使用?

对象存储适用于前端(如网页、APP)、视频、图片、文本、安装包、备份、静态内容等静态数据的存储,以及不适合处理结构化和高频更新的数据,比如数据库、文档在线编辑、大数据计算过程中的临时文件存储等场景。

TOS如何使用

对象存储是如何实现的,有哪些接口?

对象存储采用restful风格的接口,通过URL和HTTP方法(如GET、POST、DELETE等)来表示资源及其操作。例如,上传对象使用put方法,下载对象使用get方法,查看对象元数据使用head方法,删除对象则直接使用delete方法。

如何开始创建一个新的bucket?

首先要构建一个名称,然后填写一些关于数据的描述,如保密级别、数据类型和来源等信息,这些对数据本身并无直接影响,主要用于内部审计和租户隔离。提交申请后,会看到一个展示页面,其中包含了访问方式、对象列表(上传了哪些对象)以及回收站等功能。

对于大文件上传,对象存储有何优化方案?

对象存储提供了名为Martin upload(即分块上传)的解决方案,它将大文件切分成小块并分别上传,然后通过WID整合所有分块。这种方式有助于在弱网环境下提高大对象的上传成功率。

TOS有哪些特定接口,如何使用?

在TOS中,上传对象使用BRUB上传,方法是put,并在HTTP头部携带对象的元数据。下载对象使用GET方法,服务器返回object的mimetype和object data。对于大对象上传,TOS支持分块上传,先通过put上传各个分块,最后通过complete upload整合所有分块。

内部实践

在公有云使用量很大的情况下,公司决定自己搭建对象存储,小明被委以重任。在定价方面,他们考虑了什么样的架构?

他们考虑的是三层架构,包括接入层、存储引擎层和元信息层。接入层负责HTTP交互接口的解析、权限管理和限速;存储引擎层用于存储对象的数据内容;元信息层则存储对象的元信息,如大小、存储位置等。

针对短视频应用中的短视频生产消费流程,有哪些典型业务场景和挑战?

典型业务场景有用户上传原始视频、视频转码适配不同客户端、审核等。挑战包括高可扩展性(随着用户增长,系统需能线性扩展容量和吞吐量)、高持久度(确保用户上传的数据不丢失,尤其是涉及财务、法律等重要信息时)、低成本(在高容量和高性能需求下降低单位存储成本)以及分布式系统的复杂性(如数据均匀分布、计算均匀分布和网络均匀分布)。

QPS型业务的特点是什么?面临的主要挑战有哪些?

QPS型业务的特点是高QPS,例如视频抽帧和原视频审核场景。主要挑战同样包括可扩展性,由于抽帧操作会放大视频流量,需要支持系统随着视频上传量的增长而线性扩展。此外,还需要权衡成本与持久度之间的关系,确保在降低成本的同时保证数据的高持久度。

这个三层架构是如何实现可扩展性的?

对于容量型业务,通过partition(分区)的方式实现数据和计算的均匀分布,当数据量增加时,可以新增机器和分区,通过哈希或轮询等方式将数据映射至不同的分区,以达到线性扩展的目的。同时,为了保证持久性,采用数据复制和多副本策略,将数据放在不同的机架、机房甚至地区,降低单点故障风险。

刚才提到的多机房、多机架部署,具体是如何实现数据复制的?

当用户上传对象时,服务端会根据机房或机架数量进行复制。例如,如果在多机架环境下,一个对象可能会被放在不同机架上的多份副本中,即使部分副本损坏,只要保留至少一份完整的副本,数据就仍然可以被恢复。这种机制大大提高了数据持久性。

这种设计带来的主要好处有哪些?

主要好处有两个:一是高持久度,通过设置多个副本,在其中一个损坏时,仍能保证数据不丢失;二是增强了服务的强度能力,可以根据不同地区的需求提供服务,比如通过副本在不同地区的分布,实现数据快速访问和分发。

如何在兼顾成本和持久度之间取得平衡?

虽然多副本复制可以提高持久度,但也会显著增加成本。因此,可以通过EC编码技术,在减少冗余存储空间的同时,保持与多副本相同的持久度,从而在降低成本的同时保证数据安全。

EC算法有何特点?

EC算法的特点是降低了冗余存储空间的需求,但同时也带来了额外的计算开销,因为当某个副本损坏时,需要通过其他副本进行计算来恢复损坏的数据。此外,EC算法有多种编码方式和应用场景,可通过相关研究进一步了解。

为什么强调使用多机房部署?

单机房部署面临较大的故障风险,如极端天气、灾难等可能导致整个机房瘫痪。而多机房部署作为有效的灾备手段,可以显著降低因单一地点故障造成的影响,提高系统的整体可用性和容错能力。

对象存储在容量治理、成本控制和稳定性提升等方面面临哪些挑战?

随着数据量爆炸式增长,从EB级别迈向ZB级别,对象存储面临容量治理、成本控制和稳定性提升等挑战。例如,海量数据带来的运维复杂性、运维成本压力以及服务稳定性要求不断提高,尤其是对于承载大数据计算等关键业务场景时的稳定性保障,都是对象存储未来需要关注和解决的核心问题。

总结