笔记-对象存储TOS | 青训营
存储系统分类
- 单机存储:文件存储、key-value存储(redis)
- 单机数据库: 关系型数据库(mysql,Oracle)、非关系型数据库(MongoDB)
- 分布式数据库:关系型数据库、非关系型数据库
- 分布式存储:分布式文件系统HDFS、对象存储(云存储服务,火山TOS)
什么是对象存储TOS
对象存储(Object Storage)是一种分布式计算和存储架构,用于有效管理和存储大规模非结构化数据,如图片、视频、文档、备份等。它强调数据的可扩展性、高可用性以及无缝的分布式访问,通过将数据组织为对象并赋予每个对象唯一的标识符(通常是URL),从而实现数据的简化存储和检索。
对象存储TOS特点:
- 以对象为基本单位,对象包含数据本身、元数据、唯一标识符(通常是URL)
- 无结构数据,不要求数据之间存在固定关系
- 分布式架构的云存储,数据被分散存储在多个物理节点,可扩展,容错高
- HTTP/HTTPS访问,通过访问对象唯一的URL进行访问,支持各种客户端在任何时间、任何地点进行访问
- 适用于大规模的数据结构,抖音的视频内容
- 接口简单易用:GET,HEAD,PUT,DELETE
对象存储TOS优势:
- 易用,搭建快速,存储读取简单
- 海量,存储量大且扩展能力要强
- 便宜,成本低
适用场景(静态):
- 视频、图片、文字
- 安装包
- 备份
- 前端的js
不适应场景(动态,结构化):
- 商品订单
- 缓存记录
- 频繁写入对象
对象存储的使用
Bucket桶,对象存储中的一个DB,其中存储了非常多的对象
申请Bucket
首先要注册对象存储,申请Bucket。国内有非常多公司提供对象存储服务,如:字节、腾讯、阿里、华为,选择最适合的即可。
Restful接口
因为使用的是HTTP协议来请求和返回数据,因此要按着HTTP的格式来写接口。
//URL部分
{Bucket}/{Object Key}
//Method
//Put 参数Bucket,key,对象内容;返回成功或失败
//Get 参数Bucket,key;返回对象内容
//Head 参数Bucket,key;返回元数据
//Delete 参数Bucket,key;返回成功或失败
//Header
对象元数据
//Body
对象数据
MutiUpload接口
在弱网络环境,使用这个接口分部分来上传数据,提高数据传输的成功率
实现原理分为三个部分:
- InitUpload:在把大数据分成多个小数据的开头使用,会生成一个ID
- UploadPart:把小部分上传,要带上InitUpload生成的ID
- CompleteUpload:把所有同ID的小数据合成一个原本要上传的大数据
个人心得
对象存储是一个能够处理大规模数据的重要技能,学习这个不仅能够加深对云服务、分布式架构的理解,也能对HTTP协议有进一步的学习。