青训营X豆包MarsCode 技术训练营 | TOS对象存储实战

98 阅读3分钟

在软件开发中,各个业务中都需要使用公共存储服务。由于软件系统的使用用户一般都会很多的人,所以导致需要存储的数据(视频、文本、图片等)也越来越大。因此需要考虑使用分布式存储服务,同时这种服务需要根据数据的使用情况存储在不同的介质上。一般来说有磁带、机械硬盘、固态硬盘、RAID阵列。最便宜和容量大的是磁带,但是磁带的使用时间没那么长,一般用来做冷备份。而机械硬盘、固态硬盘、RAID阵列等在硬件层面上,价格稍贵,一般用来做热备份。现如今,很多厂家都提供了对象存储业务,例如小米的照片云端存储服务、阿里存储服务、字节的TOS服务等。对象存储的使用步骤是Bucket、业务逻辑开发、上线测试。

    对象存储主要是因为HTTP接口的便捷性,能够在任何地点、任何设备上使用。因此在面试的时候,经常问计算机网络协议HTTP、TCP/UDP。因此对象存储中涉及了HTTP协议和报文、HTTP的各种方法、大文件上传问题。同时对象存储也是分布式系统的蜂群,因此Redis集群的心跳算法。下面是对这四个面试问题的理解:

1、  HTTP协议报文

HTTP协议是一种用于传输超文本数据的应用层协议,其中的请求和响应都是通过报文进行交互。一个HTTP请求报文包括以下要素:

URL:指定请求的资源路径。

Method:定义请求的动作,常见的方法包括GET、POST、PUT、DELETE等。

Header:包含关于请求或响应的附加信息,比如内容类型、缓存控制等。

Body:可选部分,用于传输请求或响应的数据内容。

 

2、Get、Put、Delete、Head方法的区别

Get:用于请求获取URL指定的资源,通常用于下载操作。

Put:将内容上传至服务器指定的URL,常用于文件上传操作。

Delete:请求服务器删除指定的资源。

Head:类似于Get请求,但只返回请求头信息而不返回实体内容,通常用于查看资源的信息。

 

3、大文件上传和续传问题

在处理大文件上传时,常常会遇到网络不稳定或上传过程中断的情况。为了解决这个问题,可以采用MultiUpload的方式,包括三个关键步骤:

InitUpload:初始化上传,获取上传会话标识符。

UploadPart:分块上传文件的各个部分。

CompleteUpload:完成上传,合并各个部分,确保完整性和一致性。

 

4、Redis集群的心跳算法

在Redis集群中,心跳算法用于监测和维护集群中各节点的健康状态。通过定期发送心跳包,节点可以相互确认彼此的存活状态。如果某个节点长时间未收到其他节点的心跳响应,可能会被认为是不可达的,并触发相应的故障处理机制,保证集群的稳定运行。