1、抖音背后的存储
合适存储:
- 易用
- 海量
- 便宜
2、为什么对象存储
-
单机存储
单机文件 / KV
-
单机数据库
少量(半)结构化数据
-
分布式数据库
大量(半)结构化数据
-
分布式存储
大数据计算中间结果/视频/图片等
分布式存储分为 分布式文件系统,和对象存储。
对于优质存储特性,选择对象存储TOS。
分布式文件系统与对象存储接口对比
适用场景;
静态,Immutable
- 视频
- 图片
- 文本
- 安装包
- 备份
- 前端
js文件
对象存储使用
-
申请
Bucket -
业务逻辑开发
- 视频上传
- 视频下载
- 视频删除
- 视频查看
-
上线测试
- 拍一条视频
创建bucket
初级接口
- PUT
- GET
- HEAD :Lite版GET
- DELETE
Restful高级接口
MultiUpload接口
ListPrefix接口
TOS实战
容量型与QPS型
面对容量型的需求,需要的特点:
- 容量: 海量, 至少是EB(1EB=1024PB==2^60字节,1PB=1024TB)级别。
- 吞吐:海量,远大于100GB/s
- 高持久度:用户存储数据不能丢失
- 可拓展性:容量/吞吐需可线性拓展
- 成本:单位存储成本需要足够低
解决方法
在处理大规模数据时,可拓展性是一个重要考量因素。其中,使用分区(Partition)是一种常见的解决方案。
分区指的是将数据集分割成多个较小的部分,每个部分称为一个分区。通过对数据进行分区,可以实现以下优势:
- 并行处理:将数据分成多个分区后,可以并行处理每个分区,从而提高处理速度和效率。不同的分区可以在独立的计算单元上同时进行处理,加快整体任务完成时间。
- 资源利用:分区可以根据可用资源进行调度,确保各个分区之间的负载均衡。可以将每个分区分配给不同的计算节点或服务器,并充分利用系统资源进行计算。
- 容错性:分区可以提高容错性。当某个分区发生错误或失败时,只需要重新处理该分区,而不需要重新处理整个数据集。这提高了系统的稳定性和容错能力。
- 扩展性:使用分区可以方便地扩展数据处理系统的能力。通过增加分区数量或分配更多的计算资源,可以轻松地扩展系统以应对更大规模的数据集和更高的处理需求。
要使用分区进行数据处理,通常需要考虑以下几个方面:
- 分区策略:确定如何将数据划分成多个分区。这可以根据数据的特点、处理任务的需求和系统资源等因素来确定,例如按照数据的键值范围、散列函数或其他规则进行分区。
- 数据通信与同步:不同分区之间可能需要进行通信和同步。这包括分区之间的数据交换、结果合并或共享状态等操作,确保在整个处理过程中的数据一致性。
- 分区管理与监控:需要对分区进行管理和监控,确保分区的运行状态和性能。这可以通过监控指标、日志记录和自动化工具来实现。
通过合理的分区策略和良好的分区管理,可以提高系统的可扩展性和效率,更好地应对大规模数据处理的挑战。
持久度解法Replication
在处理大规模数据时,持久度(Replication)是一种常用的解决方案。通过数据复制和分布式存储,可以提高数据的可靠性、可用性和容错性。
持久度解决方案中的关键概念是数据复制。数据复制是指将数据副本存储在不同的位置或系统中,以防止单点故障和数据丢失。以下是持久度解决方案的几个要点:
- 数据复制:使用数据复制技术将数据复制到多个存储节点或数据中心。这样,即使某个节点或数据中心发生故障,仍可以从其他复制的副本中恢复数据。数据复制可以采用异步或同步方式进行,具体取决于对数据一致性和延迟的要求。
- 冗余存储:通过在多个存储节点或数据中心上存储数据的副本,实现冗余存储。如果一个副本不可用或损坏,可以从其他副本中获取数据。
- 数据一致性:在进行数据复制时,需要保证数据的一致性。这可以通过使用一致性协议和算法来确保。常见的一致性模型包括强一致性、最终一致性和事件ual一致性等。
- 自动故障恢复:当某个副本或节点不可用时,系统应该具备自动故障恢复能力。这包括自动检测故障、切换到可用的副本或节点,并确保数据的完整性和一致性。
- 数据分发:在持久度解决方案中,数据通常会被分发到多个地理位置或数据中心以提高可用性和性能。这可以通过使用负载均衡和就近访问策略来实现。
重要的是要注意,持久度解决方案并不只是简单地复制数据。还需要考虑数据同步、冲突解决、故障检测、容量规划和备份等方面的问题。具体的实施方式和工具选择取决于应用场景、数据需求和可用资源。
成本解法之EC
在处理大规模数据时,成本(Cost)是一个重要的考虑因素。为了降低数据处理的成本,可以使用经济成本(EC)解决方案。EC解决方案着重于优化资源利用、节约能源和降低硬件设备和运维成本。
以下是一些在EC解决方案中常见的策略和技术:
- 资源调整:通过动态调整资源的规模,根据实际需求合理分配资源。这可以包括自动伸缩机制、弹性计算和按需计算等。例如,采用云计算平台可以根据需求弹性地增加或减少计算和存储资源。
- 虚拟化和容器化:使用虚拟化和容器化技术,将应用程序和服务隔离、封装在虚拟环境中。这样可以提高资源利用率、降低硬件成本,并简化部署和维护工作。
- 数据压缩和存储优化:采用数据压缩算法和存储优化方法,减少存储空间的使用,从而降低硬件成本。同时,可以选择更经济有效的存储介质和技术。
- 能源管理:通过智能能源管理技术,例如动态功率管理和节能策略,降低能源消耗和成本。这包括对服务器、网络设备和数据中心等设备的有效管理和优化。
- 自动化运维:采用自动化工具和流程,减少人工干预和运维工作量。这可以包括自动监控、故障检测和修复、日志分析等。自动化运维能够提高效率、降低运维成本,并改善系统的稳定性和可靠性。
- 优化算法和任务调度:使用优化算法和任务调度策略,合理分配处理任务和资源,以最大程度地提高系统效率和成本效益。这可以包括任务并行化、调度算法优化和负载均衡等。
EC解决方案是针对成本优化而设计,可以根据实际需求和可用资源进行定制。通过合理的资源管理、虚拟化技术、优化算法和自动化运维等手段,可以在降低成本的同时实现高效的大规模数据处理。
成本解法之温冷转换
成本解法中的温冷转换(Hot-Cold Conversion)是一种用于降低数据处理成本的策略。该策略基于数据的访问模式和频率,将数据从高成本的存储层(热存储层)转移到低成本的存储层(冷存储层),以实现成本优化。
以下是温冷转换策略的一般步骤和关键要点:
- 数据分类和分析:首先,对数据进行分类和分析,了解数据的访问模式和频率。根据数据的热度(频繁访问)程度,将其划分为热数据和冷数据。
- 存储层级划分:根据数据的分类结果,确定不同的存储层级。通常,热数据会存储在高成本、高性能的存储层(如固态硬盘),而冷数据则存储在低成本、低性能的存储层(如磁盘存储或云存储服务中)。
- 数据迁移:将冷数据从高成本的存储层转移到低成本的存储层。这可以使用自动化工具、迁移服务或手动迁移等方式进行。迁移的频率和规模可以根据实际需求和业务要求进行调整。
- 访问控制和缓存机制:针对冷数据的访问需求,可以采用适当的访问控制和缓存机制进行优化。例如,将冷数据进行压缩、归档或分区存储,根据需要进行部分加载或延迟加载等。
- 数据恢复和备份:在进行温冷转换过程中,需要确保数据安全和可靠性。应制定合适的数据恢复和备份策略,以防止数据丢失或损坏。
温冷转换策略可以显著降低数据处理成本,特别是对于大规模的数据存储和分析场景。通过合理划分数据存储层级、优化访问控制和缓存、灵活迁移数据等措施,可以实现资源的有效利用和成本的最小化。
架构细化
在温冷转换策略的架构中,可以进一步细化以下几个方面:
- 存储层级架构:设计和划分不同的存储层级,包括热存储层和冷存储层。可以根据数据的访问模式和频率,确定数据的存放位置。热存储层可以使用高成本、高性能的存储介质,如固态硬盘(SSD)或内存。冷存储层可以使用低成本的磁盘存储或云存储服务。
- 数据分类和标记:对数据进行分类和标记,以便进行温冷转换。可以根据数据的元数据信息、访问时间戳、访问频率等进行分类。将冷数据标记,并根据需要进行冷数据的迁移。
- 数据迁移策略:制定数据迁移策略,包括迁移频率、迁移规模和迁移过程中对业务的影响等。可以选择自动迁移工具或手动迁移方式,确保数据的可用性和一致性。同时,还需考虑数据迁移的效率和成本。
- 访问控制和缓存机制:针对冷数据的访问需求,可以采用访问控制和缓存机制进行优化。例如,根据数据的热度和访问模式,设置合适的缓存策略,提高冷数据的访问效率。可以使用缓存技术、分区存储、压缩算法等来优化数据的访问。
- 数据恢复和备份:在进行温冷转换过程中,需要确保数据的安全性和可靠性。制定数据恢复和备份策略,确保数据的完整性和可恢复性。可以使用数据镜像、快照、数据冗余等技术来保护数据。
- 监控和调优:建立监控系统,定期监测存储层级的数据访问情况和成本。根据监控结果,对架构进行调优,优化存储层级的设计和配置。可以采用自动化工具和算法来帮助进行监控和调优。
通过细化这些方面,可以更好地设计和实施温冷转换策略的架构。这样可以更有效地管理数据的存储和访问,节约成本,并满足业务需求。
存储需求量细化
要细化存储需求量,需要考虑以下几个方面:
- 数据类型和大小:分析不同类型数据的大小和特征,例如文本、图像、音频、视频等。确定每种类型的平均数据大小,以便计算总体存储需求。
- 数据增长率:了解数据的增长速度和趋势,预测未来一段时间内数据的增量。根据历史数据增长率和业务发展趋势,估算未来的数据存储需求。
- 数据保留期限:确定数据需要保留的时间长度。不同类型的数据可能有不同的保留期限要求,根据法律法规、业务需求和合规性要求等方面进行评估。
- 数据冗余和备份:考虑数据的冗余和备份需求,以确保数据的可靠性和可恢复性。根据冗余因子和备份策略,估算额外的存储需求。
- 数据访问模式:根据数据的访问模式和频率,确定热数据和冷数据的比例。热数据通常需要更高性能的存储层,而冷数据可以存储在低成本的存储层。
- 存储层级优化:根据数据的访问需求和成本优化的考虑,对存储层级进行优化。根据热数据和冷数据的比例,合理划分不同存储层级的容量需求。
- 长期存档需求:如果需要将数据长期存档,例如法律要求、合规性要求或业务需要,需要考虑额外的存储空间和存档策略。
- 未来扩展需求:根据业务发展计划和预测,考虑未来的存储需求增长。确保存储架构可以满足未来的扩展需求。
通过细化这些存储需求量方面,可以更准确地评估所需存储容量和存储策略。这样可以避免存储资源的不足或浪费,并确保业务运行所需的数据可靠性和可用性。
高可用——拆分降低爆炸半径
高可用性是指系统的持续可靠运行能力,它可以通过拆分降低爆炸半径的方式来实现。拆分降低爆炸半径的核心思想是将系统划分为多个独立的模块或组件,使得故障发生时只影响到局部区域,而不会对整个系统产生灾难性的影响。
具体实施拆分降低爆炸半径可以采取以下措施:
- 微服务架构:采用微服务架构将系统拆分为多个小型、独立的服务。每个服务负责一个特定的功能,通过独立部署和独立运行,减少组件之间的依赖性,从而降低了故障传播的范围。
- 容器化技术:使用容器化技术,例如Docker,将每个服务打包成独立的容器。这样可以隔离各个服务的运行环境,确保它们互不干扰。当某个服务出现故障时,只需重启该容器,而不会影响其他容器的正常运行。
- 分布式架构:采用分布式架构将系统部署在多个地理位置的服务器上。通过将服务分布在多个地方,即使某个地点发生故障或停机,其他地方的服务仍然可以正常运行,确保系统的高可用性。
- 容错设计:在系统设计中引入容错机制,例如冗余备份和错误恢复。通过备份关键组件和数据,当一个组件或节点出现故障时,可以快速切换到备份进行故障恢复,从而减小故障的影响范围。
- 负载均衡:引入负载均衡机制,将访问请求均匀分发到不同的服务器或服务实例上。这样可以避免单一节点过载,降低了故障发生的概率,并提高了系统的整体稳定性。
通过以上措施,可以实现系统的高可用性,并将故障的爆炸半径控制在较小范围内。这样即使部分组件或节点发生故障,系统仍能保持正常运行,提供稳定可靠的服务。
由粤核酸启发,可以提供多个相同服务。
高可用——镜像容灾
镜像容灾是一种常见的高可用性解决方案,它通过建立镜像副本来保障系统的持续可靠运行。具体而言,镜像容灾可以采取以下步骤:
- 数据备份:首先进行数据备份,确保系统关键数据的完整性和安全性。备份数据可以存储在不同的地理位置或云存储服务中,以防止单点故障。
- 镜像创建:在备份数据的基础上,创建系统镜像。系统镜像包含了完整的操作系统、应用程序和配置信息。镜像可以随时用于恢复系统,并保持与原始系统的一致性。
- 增量备份和同步:为了保持镜像与原始系统的实时同步,需要进行增量备份和同步。增量备份只备份发生变化的数据,减少备份过程的时间和带宽消耗。通过定时或实时的同步机制,将增量备份的数据传输到镜像系统。
- 故障切换:当原始系统发生故障时,可以快速切换到镜像系统,实现故障转移。这可以通过自动化工具或手动操作来完成。故障切换的目标是尽快将服务恢复到正常运行状态,减少业务中断时间。
- 主备切换和恢复:一旦故障原因得以解决,可以进行主备切换和系统恢复。将原始系统恢复到正常运行状态后,可以重新同步数据和配置,并准备好下一次故障的容灾准备。
通过镜像容灾,系统能够实现较快的故障恢复和持续可用性。即使原始系统发生故障,也能够在较短的时间内切换到镜像系统,保证业务的连续性和服务的可靠性。同时,定期测试和验证镜像容灾方案的有效性也是必要的,以确保系统能够在真正的故障发生时正常运行。
总结
今天学习了抖音背后的存储需求和选择对象存储的原因,包括易用、海量、便宜的特点。对象存储适用于静态、不可变的数据类型,如视频、图片、文本等。文章还介绍了对象存储的基本使用方法,包括创建Bucket、上传、下载、删除、查看等操作。在处理大规模数据时,文章讨论了分区、持久度、成本优化等几种解决方案。分区方案将数据分割成多个较小的部分,实现并行处理和资源利用。持久度方案通过数据复制和分布式存储提高数据的可靠性和容错性。成本优化方案包括EC(经济成本)解决方案和温冷转换策略,用于降低数据处理成本。最后,文章提到了温冷转换策略的架构细化。