小文件读取方法及装置与流程

文档序号:19942652发布日期:2020-02-14 23:22阅读:144来源:国知局
小文件读取方法及装置与流程

本发明涉及存储技术领域,尤其涉及一种小文件读取方法及装置。



背景技术:

在基于海量小文件的纯读应用场景(比如,视频渲染)下,对分布式存储系统的并发读取性能要求非常高。为了满足超高并发访问需求,分布式存储系统通常采用对象存储服务,且系统中的存储服务器均采用全闪存存储介质,以尽量满足用户的超高并发需求。但是,全闪存存储介质价格昂贵,且并不能极大提升分布式存储系统的并发读取性能。



技术实现要素:

本发明为了解决现有小文件读取过程中分布式存储系统的并发读取性能不高的问题,提出一种小文件读取方法及装置,用以提升小文件读取过程中分布式存储系统的并发读取性能。

为实现上述发明目的,本发明提供了如下技术方案:

第一方面,本发明提供一种小文件读取方法,应用于分布式存储系统包括的网关服务器,所述分布式存储系统还包括存储服务器和内存模块,所述内存模块用于缓存预先从所述存储服务器加载的小文件,所述方法包括:

接收客户端设备发送的读请求,所述读请求包括待读取小文件的标识;

根据所述待读取小文件的标识,从所述内存模块中读取所述待读取小文件;

向所述客户端设备发送读响应,所述读响应包括所述待读取小文件。

可选的,所述接收客户端设备发送的读请求之前,所述方法还包括:

接收所述客户端设备发送的缓存指令,所述缓存指令包括待渲染对象的标识;

基于所述待渲染对象的标识,确定渲染所述待渲染对象需要用到的待缓存小文件;

将存储于所述存储服务器中的所述待缓存小文件加载到所述内存模块中。

可选的,所述将存储于所述存储服务器中的所述待缓存小文件加载到所述内存模块中,包括:

确定所述待缓存小文件对应的至少一个对象在所述存储服务器中的存储位置;

基于确定出的各存储位置,从存储服务器中读取所述待缓存小文件对应的至少一个对象;

将所述待缓存小文件对应的至少一个对象存储到所述内存模块中。

可选的,所述接收客户端设备发送的读请求之前,所述方法还包括:

接收多个客户端设备的连接请求,与所述多个客户端设备建立连接;

从已建立的多个连接中,确定活跃连接;

所述接收客户端设备发送的读请求,包括:

接收客户端设备通过所述活跃连接传输的读请求。

可选的,所述从已建立的多个连接中,确定活跃连接,包括:

利用epollio模型,从已建立的多个连接中,确定活跃连接。

第二方面,本发明提供一种小文件读取装置,应用于分布式存储系统包括的网关服务器,所述分布式存储系统还包括存储服务器和内存模块,所述内存模块用于缓存预先从所述存储服务器加载的小文件,所述装置包括:

请求接收单元,用于接收客户端设备发送的读请求,所述读请求包括待读取小文件的标识;

文件读取单元,用于根据所述待读取小文件的标识,从所述内存模块中读取所述待读取小文件;

响应发送单元,用于向所述客户端设备发送读响应,所述读响应包括所述待读取小文件。

可选的,所述装置还包括:

指令接收单元,用于接收所述客户端设备发送的缓存指令,所述缓存指令包括待渲染对象的标识;

文件确定单元,用于基于所述待渲染对象的标识,确定渲染所述待渲染对象需要用到的待缓存小文件;

文件加载单元,用于将存储于所述存储服务器中的所述待缓存小文件加载到所述内存模块中。

可选的,所述文件加载单元将存储于所述存储服务器中的所述待缓存小文件加载到所述内存模块中,包括:

确定所述待缓存小文件对应的至少一个对象在所述存储服务器中的存储位置;

基于确定出的各存储位置,从存储服务器中读取所述待缓存小文件对应的至少一个对象;

将所述待缓存小文件对应的至少一个对象存储到所述内存模块中。

可选的,所述装置还包括:

连接建立单元,用于接收多个客户端设备的连接请求,与所述多个客户端设备建立连接;

连接确定单元,用于从已建立的多个连接中,确定活跃连接;

所述请求接收单元接收客户端设备发送的读请求,包括:

接收客户端设备通过所述活跃连接传输的读请求。

可选的,所述连接确定单元从已建立的多个连接中,确定活跃连接,包括:

利用epollio模型,从已建立的多个连接中,确定活跃连接。

第三方面,本发明提供一种网关服务器,所述网关服务器包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述小文件读取方法。

第四方面,本发明提供一种机器可读存储介质,所述机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上述小文件读取方法。

由以上描述可以看出,本发明中,存储服务器无需采用全闪存存储介质,只需在分布式存储系统中增加内存模块,利用内存模块缓存存储服务器中的海量小文件,即可达到降低分布式存储系统成本,提升分布式存储系统并发处理能力的目的。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例示出的一种分布式存储系统的组网示意图;

图2是本发明实施例示出的一种小文件读取方法流程图;

图3是本发明实施例示出的一种缓存小文件的实现流程;

图4是本发明实施例示出的一种步骤303的实现流程;

图5是本发明实施例示出的一种建立连接的实现流程;

图6是本发明实施例示出的一种网关服务器维护的连接链表;

图7是本发明实施例示出的一种小文件读取装置的结构示意图;

图8是本发明实施例示出的一种网关服务器的硬件结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,协商信息也可以被称为第二信息,类似地,第二信息也可以被称为协商信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

本发明实施例提供一种小文件读取方法,该方法中,存储服务器无需采用全闪存存储介质,只需在分布式存储系统中增加内存模块。利用内存模块缓存存储服务器中的海量小文件,达到降低分布式存储系统成本,提升分布式存储系统并发处理能力的目的。

为了使本发明实施例的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明实施例执行详细描述:

参见图1,为本发明实施例示出的一种分布式存储系统的组网示意图。该分布式存储系统包括域名系统(domainnamesystem,缩写:dns)服务器110、网关服务器121、网关服务器122、存储服务器131~存储服务器133。

该分布式存储系统提供对象存储服务。客户端设备可通过域名访问分布式存储系统。dns服务器对客户端设备的访问请求进行域名解析,并基于预设的负载均衡算法,将客户端设备的访问请求分发给各网关服务器。网关服务器与客户端设备建立连接后,根据客户端设备的读写请求对存储服务器执行读写操作。

需要说明的是,本发明实施例中,存储服务器的存储介质可采用机械硬盘(harddiskdrive,缩写:hdd),或者,机械硬盘加固态硬盘(solidstatedrive,缩写:ssd)。

在一些高并发读取小文件(比如,小于100k的文件)的应用场景中,比如,视频渲染,存储服务器存储有海量用于视频渲染的小文件。当从存储服务器中读取小文件时,其读取速度直接影响渲染效率。

为此,本发明实施例在分布式存储系统中,部署内存模块(图1中未示出),用于缓存分布式存储系统中的海量小文件。

该内存模块可为独立的内存服务器,也可由部署于各服务器(比如,网关服务器)中的分布式内存组成。

各网关服务器均可访问该内存模块。该内存模块的容量可根据实际应用场景预先定制。

参见图2,为本发明实施例示出的一种小文件读取方法的流程图。该流程应用于分布式存储系统包括的网关服务器。

步骤201,网关服务器接收客户端设备发送的读请求。

网关服务器与客户端设备通信之前,需要与客户端设备建立连接。

网关服务器与客户端设备建立连接的过程,在下文中描述,这里暂不赘述。

当客户端设备需要读取小文件时,通过已建立的连接发送读请求,该读请求包括待读取小文件的标识。

网关服务器接收客户端设备发送的读请求,获取该读请求包括的待读取小文件的标识。

步骤202,网关服务器根据待读取小文件的标识,从内存模块中读取待读取小文件。

本发明实施例中,内存模块预先缓存有分布式存储系统中的小文件。

利用内存模块缓存小文件的过程,在下文中描述,这里暂不赘述。

本步骤中,网关服务器可直接根据步骤201获取到的待读取小文件的标识,从内存模块中读取该待读取小文件。

由于内存读取速度明显高于hdd硬盘(或ssd硬盘)的读取速度,因此,可有效提升分布式存储系统针对小文件的并发读取能力,满足海量小文件渲染场景的小文件读取速度。

步骤203,网关服务器向客户端设备发送读响应。

网关服务器通过步骤202获取到待读取小文件后,向客户端设备发送读响应。可以理解的是,该读响应包括通过步骤202获取到的待读取小文件。

客户端设备接收读响应,获取该读响应包括的小文件,即客户端设备请求的小文件。

至此,完成图2所示流程。

通过图2所示流程可以看出,本发明实施例中,存储服务器无需采用全闪存存储介质,只需在分布式存储系统中增加内存模块。利用内存模块缓存存储服务器中的海量小文件,达到降低分布式存储系统成本,提升分布式存储系统并发处理能力的目的。

作为一个实施例,在执行步骤201之前,网关服务器可执行如下缓存小文件的过程。参见图3,为本发明实施例示出的一种缓存小文件的实现流程。

如图3所示,该流程可包括以下步骤:

步骤301,网关服务器接收客户端设备发送的缓存指令。

客户端设备执行渲染任务之前,需要向网关服务器发送缓存指令。该缓存指令包括待渲染对象的标识。

作为一个例子,该待渲染对象为视频1,该视频1包括若干图片(如,图片1-图片n)和若干其它数据文件(如,数据文件1-数据文件m)。该若干图片和若干其它数据文件预先存储至分布式存储系统中的存储服务器上。客户端设备在渲染视频1之前,向网关服务器发送缓存指令,该缓存指令包括视频1的标识。

当然,在存储视频1包括的若干图片和若干其它数据文件至存储服务器时,网关服务器本地会维护视频1的标识与其包括的若干图片和若干其它数据文件的标识的对应关系。

网关服务器接收缓存指令,获取缓存指令包括的待渲染对象的标识。

步骤302,网关服务器基于待渲染对象的标识,确定渲染该待渲染对象需要用到的待缓存小文件。

网关服务器本地记录有渲染对象的标识与渲染该渲染对象所需小文件的标识的对应关系。比如,视频1的标识与图片1-图片n和数据文件1-数据文件m的标识的对应关系。

当网关服务器通过步骤301获取到待渲染对象的标识时,查询本地记录的对应关系。找到与该待渲染对象的标识匹配的对应关系,获取该匹配到的对应关系中的小文件标识。该小文件标识对应的小文件即为渲染该待渲染对象所需的待缓存小文件。比如,网关服务器根据视频1的标识,可查找到与视频1的标识对应的图片1-图片n和数据文件1-数据文件m的标识,从而确定图片1-图片n和数据文件1-数据文件m为待缓存的小文件。

步骤303,网关服务器将存储于存储服务器中的待缓存小文件加载到内存模块中。

网关服务器通过步骤302确定出待缓存的小文件后,从存储服务器中读取待缓存小文件加载到内存模块中。比如,将数据文件1-数据文件m从存储服务器中加载到内存模块中。以便网关服务器通过执行前述步骤201~步骤203,向客户端设备提供渲染所需的小文件。

网关服务器将存储于存储服务器中的待缓存小文件加载到内存模块中的过程,在下文中描述,这里暂不赘述。

至此,完成图3所示流程。

通过图3所示流程,实现对小文件的缓存。

作为一个实施例,下面对步骤303中网关服务器将存储于存储服务器中的待缓存小文件加载到内存模块中的过程进行描述。参见图4,为本发明实施例示出的一种步骤303的实现流程。

如图4所示,该流程可包括以下步骤:

步骤401,网关服务器确定待缓存小文件对应的至少一个对象在存储服务器中的存储位置。

如前所述,本发明实施例中,分布式存储系统提供基于对象的存储服务。每一个文件可被拆分成一个或多个对象存储于分布式存储系统中的各存储服务器上。

当网关服务器通过步骤302确定出待缓存的小文件后,可获取在写入该待缓存小文件时记录的该待缓存小文件的存储信息。该存储信息至少包括该待缓存小文件对应的对象的名称、对象的存储路径信息等。网关服务器可根据对象信息(名称、路径等)确定对象存储在哪一个存储服务器上,以及在存储服务器上的具体位置。

比如,数据文件1对应对象1-对象5。以对象1为例,网关服务器可根据记录的对象1的名称、路径,计算出对象1的存储位置(如,存储服务器1中的位置1)。以此类推,分别计算出对象2-对象5的存储位置。

步骤402,网关服务器基于确定出的各存储位置,从存储服务器中读取待缓存小文件对应的至少一个对象。

比如,基于前述步骤确定的对象1-对象5的存储位置,从相应存储服务器读取对象1-对象5。

步骤403,网关服务器将待缓存小文件对应的至少一个对象存储到内存模块中。

比如,网关服务器将对象1-对象5加载到内存模块中,从而完成对数据文件1的缓存。其它数据文件的缓存过程相同,不再赘述。

至此,完成图4所示流程。

通过图4所示流程,完成小文件从存储服务器到内存模块的加载。

作为一个实施例,在执行步骤201之前,网关服务器还可执行如下连接建立过程。参见图5,为本发明实施例示出的一种建立连接的实现流程。

如图5所示,该流程可包括以下步骤:

步骤501,网关服务器接收多个客户端设备的连接请求,与多个客户端设备建立连接。

客户端设备在访问分布式存储系统之前,需要向分布式存储系统发送连接请求,比如,socket请求。该连接请求由dns服务器分发至网关服务器。

网关服务器接收客户端设备的连接请求,与客户端设备建立连接。

步骤502,网关服务器从已建立的多个连接中,确定活跃连接。

由于网络延时的存在,虽然网关服务器与多个客户端设备建立了连接,但同一时间点不可能所有连接都处于活跃状态。为此,本发明实施例中,网关服务器从已建立的多个连接中,筛选活跃连接。

作为一种实施方式,网关服务器可利用epollio模型,从已建立的多个连接中,筛选活跃连接。具体的,该epollio模型维护有用于记录活跃连接的链表,当某一连接上有数据时,该连接被记录到链表中。

网关服务器仅针对链表中的活跃连接执行步骤201,即,接收通过活跃连接传输的读请求。从而大大提升分布式存储系统的并发处理能力。

至此,完成图5所示流程。

通过图5所示流程,网关服务器可与大量客户端设备建立连接,提升整个分布式存储系统的并发处理能力。

下面通过具体实施例对本发明实施例提供的方法进行描述:

在某一渲染应用场景下,采用图1所示分布式存储系统存储用于渲染的海量小文件。该海量小文件预先存储于存储服务器131~存储服务器133的非易失性存储介质中,比如,hdd硬盘中。

分布式存储系统的网关服务器中部署有内存。比如,网关服务器121中部署有内存121,网关服务器122中部署有内存122。网关服务器121和网关服务器122均可访问内存121和内存122。

以用户需要渲染视频1为例。在渲染视频1之前,用户可通过客户端设备(图1中未示出)向分布式存储系统下发缓存指令,该缓存指令包括视频1的标识。该缓存指令由dns服务器分发给某一网关服务器(比如,网关服务器121)执行。

网关服务器121接收到缓存指令后,获取该缓存指令包括的视频1的标识。根据视频1的标识,查询本地记录的与视频1的标识对应的小文件的标识(比如,小文件1-小文件p的标识)。即,确定出渲染视频1所需的小文件包括小文件1-小文件p。

以小文件1为例,网关服务器121获取存储小文件1时记录的小文件1对应的对象(比如,对象1-对象5)的信息。以对象1为例,网关服务器根据对象1的对象信息(名称、路径等)计算对象1的存储位置,比如,位于存储服务器131的位置1。以此类推,可计算出对象2-对象5的存储位置。网关服务器121从计算出的对象1-对象5的存储位置,分别读取对象1-对象5。即,获取到小文件1对应的对象1-对象5。网关服务器121将对象1-对象5加载到内存121中,即,完成小文件1的缓存。以此类推,可完成对小文件2-小文件p的缓存。

在实际应用中,会有大量客户端设备访问分布式存储系统(比如,域名为www.object.com),以获取其所需要的小文件。客户端设备发送的访问请求(socket请求)首先到达分布式存储系统的dns服务器110。dns服务器110进行域名解析,并基于负载分担算法,将socket请求分发给各网关服务器。

以网关服务器121为例。网关服务器121接收到20003个socket请求,对应建立20003个socket连接。网关服务器121利用epollio模型,从该20003个连接中不断确定活跃连接,维护活跃连接链表,如图6所示。其中,链表1用于记录网络服务器121建立的所有连接(连接1~连接20003)。链表2用于记录经epollio模型处理后的活跃连接。

当开始执行视频1的渲染时,客户端设备通过与网关服务器121建立的连接发送读请求,该读请求包括当前渲染所需小文件的标识,比如,小文件1的标识。网关服务器121基于epollio模型将该客户端设备与网关服务器121的连接添加到链表2中。通过轮询链表2中的活跃连接,接收到客户端设备发送的读请求。获取该读请求包括的小文件1的标识。

网关服务器121基于小文件1的标识,从内存121中读取小文件1,再通过与该客户端设备之间的连接发送给客户端设备。

客户端设备基于小文件1渲染视频1。以此类推,可获取小文件2-小文件p渲染视频1。

至此,完成对本实施例的描述。

以上对本发明实施例提供的方法进行了描述,下面对本发明实施例提供的装置进行描述:

参见图7,为本发明实施例提供的装置的结构示意图。该小文件读取装置包括:请求接收单元701、文件读取单元702以及响应发送单元703,其中:

请求接收单元701,用于接收客户端设备发送的读请求,所述读请求包括待读取小文件的标识;

文件读取单元702,用于根据所述待读取小文件的标识,从所述内存模块中读取所述待读取小文件;

响应发送单元703,用于向所述客户端设备发送读响应,所述读响应包括所述待读取小文件。

作为一个实施例,所述装置还包括:

指令接收单元,用于接收所述客户端设备发送的缓存指令,所述缓存指令包括待渲染对象的标识;

文件确定单元,用于基于所述待渲染对象的标识,确定渲染所述待渲染对象需要用到的待缓存小文件;

文件加载单元,用于将存储于所述存储服务器中的所述待缓存小文件加载到所述内存模块中。

作为一个实施例,所述文件加载单元将存储于所述存储服务器中的所述待缓存小文件加载到所述内存模块中,包括:

确定所述待缓存小文件对应的至少一个对象在所述存储服务器中的存储位置;

基于确定出的各存储位置,从存储服务器中读取所述待缓存小文件对应的至少一个对象;

将所述待缓存小文件对应的至少一个对象存储到所述内存模块中。

作为一个实施例,所述装置还包括:

连接建立单元,用于接收多个客户端设备的连接请求,与所述多个客户端设备建立连接;

连接确定单元,用于从已建立的多个连接中,确定活跃连接;

所述请求接收单元701接收客户端设备发送的读请求,包括:

接收客户端设备通过所述活跃连接传输的读请求。

作为一个实施例,所述连接确定单元从已建立的多个连接中,确定活跃连接,包括:

利用epollio模型,从已建立的多个连接中,确定活跃连接。

至此,完成图7所示装置的描述。

下面对本发明实施例提供的网关服务器进行描述:

参见图8,为本发明实施例提供的一种网关服务器的硬件结构示意图。该服务器可包括处理器801、存储有机器可执行指令的机器可读存储介质802。处理器801与机器可读存储介质802可经由系统总线803通信。并且,通过读取并执行机器可读存储介质802中与小文件读取逻辑对应的机器可执行指令,处理器801可执行上文描述的小文件读取方法。

本文提到的机器可读存储介质802可以是任何电子、磁性、光学或其他物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,所述机器可读存储介质802可以包括如下至少一个种存储介质:易失存储器、非易失性存储器、其它类型存储介质。其中,易失性存储器可为ram(randomaccessmemory,随机存取存储器),非易失性存储器可为闪存、存储驱动器(如硬盘驱动器)、固态硬盘、存储盘(如光盘、dvd等)。

本发明实施例还提供一种包括机器可执行指令的机器可读存储介质,例如图8中的机器可读存储介质802,所述机器可执行指令可由网关服务器中的处理器801执行,以实现以上描述的小文件读取方法。

至此,完成图8所示服务器的描述。

以上所述仅为本发明实施例的较佳实施例而已,并不用以限制本发明,凡在本发明实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1