在这节课中我主要学习了对象存储、对象存储的基本用法,了解了对象存储面临的工程挑战和解法。
分布式存储选型对比
对象存储(Object Storage)是一种用于存储和检索大规模非结构化数据的存储架构。
分布式存储的优势
高可用性、容量和性能扩展性、灵活性、地理分布、数据分析支持等。这些特点使得分布式存储成为应对大规模数据处理和构建可靠系统的重要解决方案。适合大数据计算中间结果/视频/图片等(对应抖音)。
对象存储相较于分布式文件系统HDFS
海量,易用,便宜。
-
海量:
- 云原生存储开箱即用,极大解除了运维运营负担,生态体系依托云构建,丰富健全
- 对象存储是当前各大云厂商王牌存储产品
-
易用:
-
Data Model差异:
- HDFS:伪Posix File System Interface, Directory/File的数据组织形式
- 对象存储:扁平的逻辑命名空间, Bucket/Key的数据组织形式
- Bucket/Key数据组织形式优势:容易理解,使用心智负担小,贴合业务需求
-
使用接口差异:
- HDFS:Mkdirs/Create/Append/Delete/Get等文件接口
- 对象存储: GET/PUT/HEAD/DELETE等Restful HTTP接口
- HTTP接口的优势:开发简单,分享方便,可无缝接入CDN
-
-
其他对比:
- 可扩展性:对象存储可扩展性更强,支持无限容量
- 成本:对象存储成本更低
对象存储的用法
对象存储的基本接口: 对象存储提供了一组基本的RESTful接口,用于管理存储在对象存储系统中的数据。
- GET: 用于获取对象的内容,即从对象存储系统中获取特定对象的数据。
- PUT: 用于上传对象的内容,即将数据上传到对象存储系统中创建或更新一个对象。
- DELETE: 用于删除对象,即从对象存储系统中删除特定对象的数据。
- HEAD: 用于获取对象的元信息,即对象的属性和元数据。
- MultiPartUpload接口: 用于在弱网环境中优化大对象的上传。这允许将大对象分割成多个部分,分别上传,并最终合并成完整的对象。
Restful风格简介: Restful风格是一种设计Web服务的架构风格,其优点包括可扩展性、灵活性和易于理解。它将资源抽象成URL,使用HTTP方法进行操作,使得API清晰明了,易于使用和开发。
Listprefix接口: Listprefix接口用于将扁平的逻辑命名空间转化为更易于理解的结构化逻辑命名空间。它通过分隔符将逻辑空间分割成类似目录的层次化命名空间,以便更好地组织和浏览存储对象。
CommonPrefix概念: CommonPrefix用于将逻辑空间通过分隔符划分为类似目录的子命名空间,帮助更好地组织数据。
分页实现: 分页实现允许在大量对象中进行分页浏览。通过设置页首和每页对象数量参数,可以控制在结果中返回多少个对象。
总体来说,对象存储的基本接口和概念提供了灵活的数据管理和访问方式,适用于存储、管理和检索大规模非结构化数据。这些接口的使用可以根据实际应用需求来进行调整和优化。
对象存储面临的工程挑战和解法
工程挑战:
- 海量容量场景: 处理大规模数据,存储容量和成本压力巨大。
- 海量QPS场景: 高请求吞吐量,需要应对高QPS读写请求和低时延要求。
- 高可用性场景: 高可用性要求,但对一致性要求较低。
解决方法:
- 可扩展性: 使用Partition分治方法,将数据分布到多个节点,实现线性可扩展性,应对数据增长。
- 持久度: 采用Replication多副本策略,复制数据到多个节点,提高持久度和数据冗余。
- 可用性: 通过单元化架构,降低单点依赖,构建流量调度能力,提高系统可用性和快速恢复能力。
- 性价比: 使用开源解决方案,进行冷热分离,降低存储成本,通过更高比例EC降低逻辑冗余,提升性价比。
TOS(TikTok Object Storage)的架构和展望:
- 当前架构:TOS通过上述解决方法来满足海量容量、高QPS和高可用性等挑战。
- 发展方向:TOS有望继续在可扩展性、持久度、可用性和性价比等方面进行优化。随着技术的进步,可能会涉及更多创新的解决方案,以满足不断变化的业务需求。
总结
在这节课中我主要学习了对象存储、对象存储的基本用法,了解了对象存储面临的工程挑战和解法。还有课后思考和课后大作业需要完成。