掌桥专利:专业的专利平台
掌桥专利
首页

文件处理方法、服务器及存储介质

文献发布时间:2024-04-18 19:58:30


文件处理方法、服务器及存储介质

技术领域

本申请涉及分布式领域,尤其涉及一种文件处理方法、服务器及存储介质。

背景技术

在分布式服务系统下,所有服务都必须是多活部署,以保证应用服务基本的高可用性。对于批量作业服务可以使用分布式锁的方式来保证同时只有一个线程来执行同一个作业,从而实现批量作业服务的多活部署。但是许多批量作业是基于文件执行的,这就需要文件在分布式系统中的共享同步。

现有技术中,通常将批量作业服务部署的多个服务器配置为共享存储,将共同使用的文件都基于共享存储磁盘进行操作。

然而现有技术中,文件共享存储的方式只支持同机房的服务器,不支持跨机房、跨地域的高可用部署,不能广泛的实现文件的共享同步,导致批量作业服务的应用受到较大限制。

发明内容

本申请提供一种文件处理方法、服务器及存储介质,用以解决批量作业服务的应用受到限制的问题。

第一方面,本申请提供一种文件处理方法,所述方法应用于第一服务器,所述方法包括:

读取传输队列中的队列元素;其中,所述传输队列对应与所述第一服务器进行文件传输的第二服务器,所述队列元素为待处理文件的标识信息;

建立与所述传输队列对应的所述第二服务器的通信连接,并向所述第二服务器发送第一核验请求,其中,所述第一核验请求用于指示所述第二服务器核验所述第二服务器中是否存在针对所述待处理文件的传输线程并反馈核验结果;

接收所述第二服务器反馈的核验结果,若确定所述核验结果表征所述第二服务器中不存在针对所述待处理文件的传输线程,则获取文件复制目录中的所述待处理文件,并传输所述待处理文件至所述第二服务器。

在可选的一种实施方式中,获取文件复制目录中的所述待处理文件,并传输所述待处理文件至所述第二服务器,包括:

依次获取所述文件复制目录中所述待处理文件的每一批次的文件数据,并依次传输每一批次的文件数据至所述第二服务器,直至所述待处理文件的N个批次的文件数据均已传输至所述第二服务器;其中,N为大于1的正整数。

在可选的一种实施方式中,在所述待处理文件的N个批次的文件数据均已传输至所述第二服务器之后,所述方法还包括:

发送提示信息至所述第二服务器,并对所述传输队列中的所述队列元素进行移除处理,断开与所述第二服务器的连接;其中,所述提示信息用于提示所述第二服务器针对所述待处理文件已传输完成。

在可选的一种实施方式中,所述方法还包括:

响应于批量作业服务进程发送的接口请求,获取所述文件复制目录下的所述待处理文件的标识信息,并添加所述标识信息为所述传输队列中的队列元素;其中,所述接口请求用于指示处理所述待处理文件。

在可选的一种实施方式中,所述方法还包括:

基于定时线程,定时发送第二核验请求至所述第二服务器,并接收所述第二服务器反馈的返回信息;其中,所述第二核验请求中包括所述文件复制目录中包括的每一文件对应的标识信息,所述第二核验请求用于指示所述第二服务器检验所述第二服务器中是否存在所述每一标识信息对应的文件;

添加所述返回信息中的待处理文件对应的标识信息为所述传输队列中的队列元素;其中,所述返回信息用于指示所述待处理文件对应的标识信息,所述待处理文件为所述文件复制目录中存在并且所述第二服务器中未存在的文件。

第二方面,本申请提供一种文件处理方法,所述方法应用于第二服务器,所述方法包括:

接收第一服务器发送的第一核验请求,其中,所述第一服务器为与所述第二服务器进行文件传输的服务器,所述第一核验请求用于指示所述第二服务器核验所述第二服务器中是否存在针对待处理文件的传输线程并反馈核验结果;

读取所述第一核验请求携带的队列元素,并确定所述队列元素为核验关键字,其中,所述队列元素为待处理文件的标识信息;

根据所述核验关键字,对所述第二服务器中运行的各个传输线程进行核验处理,确定所述核验结果,并反馈所述核验结果至所述第一服务器;其中,每一传输线程均具有正在传输的文件的标识信息,所述核验结果用于表征所述第二服务器存在或者不存在针对所述待处理文件的传输线程;

若所述核验结果表征所述第二服务器中不存在针对所述待处理文件的传输线程,则接收所述第一服务器传输的所述待处理文件。

在可选的一种实施方式中,接收所述第一服务器传输的所述待处理文件,包括:

启动针对所述待处理文件的目标传输线程;

基于所述目标传输线程接收所述第一服务器传输的所述待处理文件的每一批次的文件数据,并将每一批次的文件数据依次写入所述待处理文件对应的文件目录中,直至所述待处理文件的N个批次的文件数据均已传输至所述第二服务器;其中,N为大于1的正整数。

在可选的一种实施方式中,所述方法还包括:

接收所述第一服务器发送的提示信息,移除所述目标传输线程;其中,所述提示信息用于提示所述第二服务器针对所述待处理文件已传输完成。

第三方面,本申请提供一种服务器,包括存储器和处理器;

所述存储器,用于存储计算机程序;

所述处理器,用于读取所述存储器存储的计算机程序,并根据所述存储器中的计算机程序执行如第一方面所述的文件处理方法或者如第二方面所述的文件处理方法。

第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面所述的文件处理方法或者如第二方面所述的文件处理方法。

本申请提供的文件处理方法、服务器及存储介质,通过以下步骤:读取传输队列中的队列元素;其中,传输队列对应与第一服务器进行文件传输的第二服务器,队列元素为待处理文件的标识信息;建立与传输队列对应的第二服务器的通信连接,并向第二服务器发送第一核验请求,指示第二服务器核验第二服务器中是否存在针对待处理文件的传输线程并反馈核验结果;接收第二服务器反馈的核验结果,若确定核验结果表征第二服务器中不存在针对待处理文件的传输线程,则获取文件复制目录中的待处理文件,并传输待处理文件至第二服务器。该方法可以通用设置分布式系统中,不受机房、地域的限制,可以广泛的实现分布式系统中文件的共享同步,拓宽了批量作业服务的应用范围。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1为本申请实施例提供的一种文件处理方法的流程图;

图2为本申请实施例提供的另一种文件处理方法的流程图;

图3为本申请实施例提供的又一种文件处理方法的流程图;

图4为本申请实施例提供的一种文件处理装置的结构示意图;

图5为本申请实施例提供的另一种文件处理装置的结构示意图;

图6为本申请实施例提供的一种服务器的结构示意图;

图7为本申请实施例提供的一种服务器的框图。

通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。

具体实施方式

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

需要说明的是,本申请提供的文件处理方法、装置、设备及存储介质可用于分布式领域,也可用于除分布式领域之外的任意领域,本申请提供的文件处理方法、服务器及存储介质的应用领域不做限定。

在分布式服务系统下,要求所有服务都必须是多活部署,以保证应用服务基本的高可用性,批量作业服务同样需要满足此基本要求。对于批量作业服务可以使用分布式锁的方式来保证同时只有一个线程来执行同一个作业,从而实现批量作业的多活部署。但许多批量作业是基于文件执行的,文件系统是没有办法做多活同步的。例如一个批量作业包含两个活动:文件下载、文件解析入库,在多服务器部署情况下就有可能出现服务器A执行了文件下载活动,服务器B执行文件解析入库活动,但因为A、B两台服务器都是独立的文件系统,所以当服务器B执行文件解析时找不到服务器A已经下载的文件。

一个示例中,可以将批量作业部署的两个服务器配置为共享存储,将共同使用的文件都基于共享存储磁盘进行操作。

然而共享存储只能同机房使用,不支持跨机房、跨地域的高可用部署,当机房出现故障时将不能正常提供批量作业服务,并且文件共享存储方式对于服务数量等也有较高的限制。这就导致了不能广泛的实现分布式系统中文件的共享同步,批量作业服务的应用也受到较大限制。

因此,本申请提供一种文件处理方法,用以解决以上技术问题。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

图1为本申请实施例提供的一种文件处理方法的流程图,该方法应用于第一服务器,如图1所示,该方法包括:

101、读取传输队列中的队列元素;其中,传输队列对应与第一服务器进行文件传输的第二服务器,队列元素为待处理文件的标识信息。

示例性地,第一服务器中有一个或者多个传输队列,每一传输队列对应一个第一服务器可以与其进行文件传输的分布式系统中的服务器,第一服务器检查所有传输队列中是否未处理的队列元素,读取到传输队列中的队列元素,其中,该传输队列对应可与第一服务器进行文件传输的第二服务器,其中,传输队列中的队列元素为待处理文件的标识信息,标识信息可以为文件名称等唯一文件标识。

102、建立与传输队列对应的第二服务器的通信连接,并向第二服务器发送第一核验请求,其中,第一核验请求用于指示第二服务器核验第二服务器中是否存在针对待处理文件的传输线程并反馈核验结果。

示例性地,第一服务器在读取传输队列中的队列元素后,建立与传输队列对应的第二服务器的通信连接,在与第二服务器建立连接之后,向第二服务器发送第一核验请求,指示第二服务器核验第二服务器中是否存在针对待处理文件的传输线程并反馈核验结果,以确保没有其他服务器也正在向第二服务器复制传输同一个文件。

一个示例中,第二服务器接收到第一核验请求后,检查第二服务器中是否存在针对待处理文件的传输线程,例如在所有文件复制线程中检查是否有同一个标识信息的文件正在传输运行,如果没有待处理文件正在传输运行,则将文件复制线程数加一,返回核验结果为成功至第一服务器,表征述第二服务器中不存在针对待处理文件的传输线程。如果有同名文件正在传输,返回核验结果为失败至第一服务器,表征述第二服务器中已存在针对待处理文件的传输线程。

103、接收第二服务器反馈的核验结果,若确定核验结果表征第二服务器中不存在针对待处理文件的传输线程,则获取文件复制目录中的待处理文件,并传输待处理文件至第二服务器。

示例性地,第一服务器接收第二服务器反馈的核验结果,若确定核验结果表征第二服务器中不存在针对待处理文件的传输线程,则可以进行待处理文件的传输,则获取文件复制目录中的待处理文件,并传输待处理文件至第二服务器,以实现与第二服务器之间关于待处理文件的文件共享。

综上,本实施例提供的文件处理方法,通过以下步骤:读取传输队列中的队列元素;其中,传输队列对应与第一服务器进行文件传输的第二服务器,队列元素为待处理文件的标识信息;建立与传输队列对应的第二服务器的通信连接,并向第二服务器发送第一核验请求,其中,第一核验请求用于指示第二服务器核验第二服务器中是否存在针对待处理文件的传输线程并反馈核验结果;接收第二服务器反馈的核验结果,若确定核验结果表征第二服务器中不存在针对待处理文件的传输线程,则获取文件复制目录中的待处理文件,并传输待处理文件至第二服务器。该方法可以通用设置在分布式系统中,不受机房、地域的限制,可以广泛的实现分布式系统中文件的共享同步,拓宽了批量作业服务的应用范围。

图2为本申请实施例提供的另一种文件处理方法的流程图,该方法应用于第二服务器,如图2所示,该方法包括:

201、接收第一服务器发送的第一核验请求,其中,第一服务器为与第二服务器进行文件传输的服务器,第一核验请求用于指示第二服务器核验第二服务器中是否存在针对待处理文件的传输线程并反馈核验结果。

示例性地,第二服务器接收第一发送的第一核验请求,其中,第一服务器为与第二服务器进行文件传输的服务器,第一核验请求用于指示第二服务器核验第二服务器中是否存在针对待处理文件的传输线程并反馈核验结果。

202、读取第一核验请求携带的队列元素,并确定队列元素为核验关键字,其中,队列元素为待处理文件的标识信息。

示例性的,第一核验请求中携带有队列元素,为待处理文件的标识信息,第二服务器读取并确定该队列元素为核验关键字。

203、根据核验关键字,对第二服务器中运行的各个传输线程进行核验处理,确定核验结果,并反馈核验结果至第一服务器;其中,每一传输线程均具有正在传输的文件的标识信息,核验结果用于表征第二服务器存在或者不存在针对待处理文件的传输线程。

示例性地,每一传输线程均具有正在传输的文件的标识信息,第二服务器根据核验关键字,对第二服务器中运行的各个传输线程进行核验处理,例如,在所有的文件复制线程中检查是否有针对该标识信息对应的待处理文件的传输线程,确定第二服务器是否存在针对待处理文件的传输线程,即核验结果,并反馈核验结果至第一服务器。

204、若核验结果表征第二服务器中不存在针对待处理文件的传输线程,则接收第一服务器传输的待处理文件。

示例性地,核验结果表征第二服务器中不存在针对待处理文件的传输线程,则第一服务器在接收到第二服务器反馈的核验结果之后,进行待处理文件的传输,第二服务器接收第一服务器所传输的待处理文件。

综上,本实施例提供的文件处理方法,通过以下步骤:接收第一服务器发送的第一核验请求,读取第一核验请求携带的队列元素,并确定队列元素为核验关键字,其中,队列元素为待处理文件的标识信息;根据核验关键字,对第二服务器中运行的各个传输线程进行核验处理,确定核验结果,并反馈核验结果至第一服务器;其中,每一传输线程均具有正在传输的文件的标识信息,核验结果用于表征第二服务器存在或者不存在针对待处理文件的传输线程;若核验结果表征第二服务器中不存在针对待处理文件的传输线程,则接收第一服务器传输的待处理文件,该方法可以通用设置分布式系统中,不受机房、地域的限制,可以广泛的实现分布式系统中文件的共享同步,拓宽了批量作业服务的应用范围。

图3为本申请实施例提供的又一种文件处理方法的流程图,如图3所示,该方法包括:

301、第一服务器读取传输队列中的队列元素;其中,传输队列对应与第一服务器进行文件传输的第二服务器,队列元素为待处理文件的标识信息。

示例性地,第一服务器中配置有一个或者多个传输队列,每一传输队列对应一个第一服务器可以与其进行文件传输的服务器,第一服务器中的文件复制代理进程检查所有传输队列中是否有要处理的队列元素,文件复制代理进程读取到传输队列中的队列元素,传输队列对应与第一服务器进行文件传输的第二服务器,进而可以根据读取到的传输队列中的队列元素,传输文件至第二服务器。其中,队列元素为待处理文件的标识信息,可以为文件名称。

一个示例中,在分布式系统的每一批量作业的服务器上均启动有文件复制代理进程,文件复制代理进程用来进行文件的自动复制共享,文件复制代理进程需要在每个批量作业的服务器上单独启动,独立于批量作业服务进程。其中,文件复制代理中包含以下基本配置信息:(1)服务器列表:所有部署了文件复制代理进程的服务器的IP列表,以表示有几台服务器需要进行文件同步复制;(2)文件同步的监听端口:用于通过套接字(socket)方式实现服务器间的文件传输;(3)客户端交互的监听端口:用于客户端与文件复制代理通讯,实现接口功能,其中,客户端是指本服务器的批量作业服务;(4)定时检查的监听端口:用于定时检查模块与其他文件复制代理所在服务器上的文件进行核对;(5)文件复制目录:需要进行文件复制的文件所在目录,不是服务器上所有目录下的文件都需要进行文件复制,只有配置的指定目录下文件才会进行文件复制;(6)文件复制临时目录:与文件复制目录不同,但需要在同一个盘符。为了保证文件的完整性,在生成文件时在此临时目录下写文件,当写文件结束,通过重命名的方式将文件转移到文件复制目录下;(7)文件复制线程数量:记录本服务器当前正在进行文件传输的线程数量,用来检查当前是否有文件正在传输过程中。初始化时设置为0。

一个示例中,在文件复制进程启动时,根据配置的服务器列表来生成多个传输队列。例如配置的服务器列表为:第一服务器、第二服务器、第三服务器,而本机器是第一服务器,则生成第一服务器——第二服务器和第一服务器——第三服务器两个传输队列,其中队列元素的唯一属性为“文件名称”,只有当文件复制结束之后才会将队列元素移除出队列,这样在放入队列元素时就可以保证同一个文件不会被重复复制。文件复制代理进程检查所有文件复制队列(多个)中是否有要处理的元素(待传输的文件),如果有则读取队列元素,此时只读取并不移除队列元素。然后进行下一步文件复制传输,下一步文件传输步骤可通过异步多线程方式实现,以提高有多个文件需要复制传输时的处理性能。例如有3个待进行文件复制传输的元素时,可以进行并行同时处理,而不需要等待上一个文件复制完成后再处理下一个。

302、第一服务器建立与传输队列对应的第二服务器的通信连接,并向第二服务器发送第一核验请求,其中,第一核验请求用于指示第二服务器核验第二服务器中是否存在针对待处理文件的传输线程并反馈核验结果。

示例性地,第一服务器在读取传输队列中的队列元素后,文件复制代理进程基于“文件同步的监听端口”与第二服务器建立连接,在与第二服务器建立连接之后,向第二服务器发送第一核验请求,指示第二服务器核验第二服务器中是否存在针对待处理文件的传输线程并反馈核验结果,以确保没有其他服务器也正在向第二服务器复制传输同一个文件。

303、第二服务器接收第一服务器发送的第一核验请求,其中,第一服务器为与第二服务器进行文件传输的服务器,第一核验请求用于指示第二服务器核验第二服务器中是否存在针对待处理文件的传输线程并反馈核验结果。

示例性地,本步骤参见步骤201,不再赘述。

304、第二服务器读取第一核验请求携带的队列元素,并确定队列元素为核验关键字,其中,队列元素为待处理文件的标识信息。

示例性地,本步骤参见步骤202,不再赘述。

305、第二服务器根据核验关键字,对第二服务器中运行的各个传输线程进行核验处理,确定核验结果;其中,每一传输线程均具有正在传输的文件的标识信息,核验结果用于表征第二服务器存在或者不存在针对待处理文件的传输线程。

示例性地,本步骤参见步骤203,不再赘述。

306、第二服务器反馈核验结果至第一服务器。

示例性地,本步骤参见步骤203,不再赘述。

307、第一服务器接收第二服务器反馈的核验结果。

示例性地,第一服务器的文件复制代理进程接读取第二服务器反馈的核验结果,若确定核验结果表征第二服务器中不存在针对待处理文件的传输线程,则说明可以进行待处理文件的传输。

308、第一服务器若确定核验结果表征第二服务器中不存在针对待处理文件的传输线程,依次获取文件复制目录中待处理文件的每一批次的文件数据,并依次传输每一批次的文件数据至第二服务器,直至待处理文件的N个批次的文件数据均已传输至第二服务器;其中,N为大于1的正整数。

示例性地,第一服务器的文件复制代理进程在接收第二服务器反馈的核验结果之后,若确定核验结果表征第二服务器中不存在针对待处理文件的传输线程,则可以基于文件复制代理进程中的文件复制模块进行待处理文件的分批次传输:依次获取文件复制目录中待处理文件的每一批次的文件数据,并依次传输每一批次的文件数据至第二服务器,直至待处理文件的N个批次的文件数据均已传输至第二服务器;其中,N为大于1的正整数。

一个示例中,第一服务器接收第二服务器反馈的核验结果,若确定核验结果表征第二服务器中已存在针对待处理文件的传输线程,则文件复制代理进程移除传输队列中待处理文件对应的队列元素,即待处理文件的标识信息,并关闭与第二服务器的连接。

309、第二服务器启动针对待处理文件的目标传输线程。

示例性地,第二服务器在确定第二服务器中不存在针对待处理文件的传输线程之后,即启动针对待处理文件的目标传输线程,以便于基于该目标传输线程接收待处理文件。

310、第二服务器基于目标传输线程接收第一服务器传输的待处理文件的每一批次的文件数据,并将每一批次的文件数据依次写入待处理文件对应的文件目录中,直至待处理文件的N个批次的文件数据均已传输至第二服务器;其中,N为大于1的正整数。

示例性地,第二服务器基于目标传输线程接收第一服务器传输的待处理文件的每一批次的文件数据,并将每一批次的文件数据依次写入待处理文件对应的文件目录中,直至待处理文件的N个批次的文件数据均已传输至第二服务器。

一个示例中,第二服务器在第一次接收待处理文件的文件数据时,即在临时目录下创建待处理文件的同名文件,将接收的文件数据以追加的方式写入到临时目录下待处理文件对应的同名文件中,当所有文件数据都已经写到了临时目录下的文件中,第二服务器将临时目录下的待处理文件对应的同名文件以重命名的方式转移到正式的文件复制目录下。

311、第一服务器发送提示信息至第二服务器;其中,提示信息用于提示第二服务器针对待处理文件已传输完成。

示例性地,在待处理文件传输完成之后,第一服务器文件复制代理进程发送提示信息至第二服务器,提示第二服务器针对待处理文件已传输完成。

312、第一服务器对传输队列中的队列元素进行移除处理,断开与第二服务器的连接。

示例性地,在待处理文件传输完成,并发送提示信息至第二服务器之后,第一服务器中的文件复制代理进程对传输队列中的队列元素进行移除处理,并主动断开与第二服务器的连接。

313、第二服务器接收第一服务器发送的提示信息,移除目标传输线程;其中,提示信息用于提示第二服务器针对待处理文件已传输完成。

示例性地,第二服务器接收第一服务器发送的提示信息,在确定针对待处理文件已传输完成之后,移除目标传输线程。

待处理文件的数据全部发送完毕后由第一服务器主动关闭连接;第二服务器接收到连接关闭请求断开连接后关闭临时目录文件读写操作,此时所有文件数据都已经写到了临时目录下的文件中,第二服务器将临时目录下的待处理文件对应的同名文件以重命名的方式转移到正式的文件复制目录下。移出针对待处理文件的目标传输线程,并将所记录的传输线程数减一。

综上,本实施例提供的文件处理方法,通过预先配置的文件复制代理进程,进行文件的传输操作,实现了多个服务器间文件自动复制,支持部署多个批量作业服务,每个批量服务都是对本服务器的文件系统进行操作,相互之间没有任何影响;基于套接字(socket)通讯方式实现待处理文件的传输,该传输方式支持跨机房、跨地域的文件复制,且不依赖文件传输协议(File Transfer Protocol,简称FTP)或SSH文件传输协议(SSH File TransferProtocol,简称sftp)的文件传输认证;在待处理文件的传输过程中,进行多次文件数据的读取与发送,而不是读取文件全部内容,避免文件太大导致内存溢出。该方法可以通用设置分布式系统中,不受机房、地域的限制,可以广泛的实现分布式系统中文件的共享同步,拓宽了批量作业服务的应用范围。

本申请的一个或者多个实施例中还可以包括:

第一服务器响应于批量作业服务进程发送的接口请求,获取文件复制目录下的待处理文件的标识信息,并添加标识信息为传输队列中的队列元素;其中,接口请求用于指示处理待处理文件。

示例性地,第一服务器响应于批量作业服务进程发送的接口请求,获取文件复制目录下的待处理文件的标识信息,并添加标识信息为传输队列中的队列元素;其中,接口请求用于指示处理待处理文件。

一个示例中,第一服务器中的批量作业服务,在进行文件类操作时与本服务器的文件复制代理进行基本交互,调用的是客户端软件开发工具包(Software DevelopmentKit-client,简称sdk-client)中的应用程序编程接口(Application ProgrammingInterface,简称API),内部使用“客户端交互的监听端口”与文件复制代理进程进行交互。批量作业服务在写文件操作时,需要将文件写到临时文件目录,完成所有写操作后将文件重命名转移到文件复制目录下,然后调用此api接口通知文件复制代理;文件复制代理接收到该api请求后,将此文件名放入所有传输队列中,等待文件复制传输。例如有第一服务器——第二服务器和第一服务器——第三服务器两个传输队列,则需要将带文件对应的标识信息作为队列元素同时放到这两个队列中,表示需要将第一服务器服务上的该文件复制传输到第二服务器和第三服务器这两台服务器上。此种方式可以最大程度保证文件复制传输的时效性。

一个示例中,批量作业服务在读文件操作时,需要先发送包含文件的标识信息,例如文件名称的检查请求至文件复制代理,查询同名文件是否正在传输;文件复制代理接收到此请求后可以检索是否有该文件的复制传输正在进行,因为文件复制代理进程记录了所有正在运行的传输线程和所传输的文件名称,所以是可以检查到指定文件名的文件是否正在进行复制传输,将检查结果返回。进行检查时,文件复制代理可以优先检查当前文件复制传输的线程数,如果等于0则表示没有文件复制传输正在运行;如果大于0则再去检索正在进行文件复制传输的所有线程是否包含当前被检查的文件名。批量作业服务接收到返回后,如果是当前要读取的文件正在进行复制传输,则需要等待几秒钟后再次发起检查请求,直到确认返回当前文件名没有进行文件复制传输时再去读取文件,这样可以保证读取文件的有效性。

一个示例中,文件复制与定时检查模块的功能都是在文件复制代理进程中实现,文件复制代理进程需要在每个批量作业服务器上单独启动,独立于批量作业服务进程。而客户端交互模块是提供给批量作业服务使用的sdk-client,是嵌入到批量作业服务中的,实现批量作业服务与文件复制代理之间的api交互。

综上,本实施例中,当批量服务完成文件写操作后可以发送消息给本服务器的文件复制代理进程,此时文件复制代理进程会以队列处理的形式将文件推送给所有部署了文件复制代理进程的服务器,可以达到文件及时复制的目的。

本申请的一个或者多个实施例中还可以包括:

第一服务器基于定时线程,定时发送第二核验请求至第二服务器,并接收第二服务器反馈的返回信息;其中,第二核验请求中包括文件复制目录中包括的每一文件对应的标识信息,第二核验请求用于指示第二服务器检验第二服务器中是否存在每一标识信息对应的文件。

第一服务器添加返回信息中的待处理文件对应的标识信息为传输队列中的队列元素;其中,返回信息用于指示待处理文件对应的标识信息,待处理文件为文件复制目录中存在并且第二服务器中未存在的文件。

综上,文件复制代理进程还定时扫描文件复制目录下的所有文件,并与所有部署了文件复制代理进程的服务器进行核验,对于缺失文件的服务器进行定向推送,基于定时线程,定时发送第二核验请求至第二服务器,其中,第二核验请求中包括第一服务器的文件复制目录中包括的每一文件对应的标识信息,第二核验请求用于指示第二服务器检验第二服务器中是否存在每一标识信息对应的文件;第二服务器接收第二核验请求后,对第二服务器中的文件复制目录中的文件进行核查,确定第一服务器的文件复制目录中包括但第二服务器的文件复制目录中没有的文件为待处理文件,并返回该待处理文件的标识信息至第一服务器;第一服务器的文件复制代理进程接收第二服务器反馈的返回信息,并添加返回信息中的待处理文件对应的标识信息为传输队列中的队列元素。

一个示例中,文件复制代理进程中的定时检查模块是为了防止异常情况下,批量作业服务没有及时通知到文件复制代理,导致不能及时进行对应文件的复制传输的问题。例如批量作业服务在发送通知之前被停止了,或者多活部署的批量作业服务个别服务器长时间没有启动等情况,这样情况下就会有文件不能正确复制传输到各台服务器。定时检查模块中的定时线程每隔一段时间执行一次检查补偿功能,具体执行功能如下:

步骤1:获取本服务器文件复制目录下的所有文件。使用“定时检查的监听端口”与其他服务器的文件复制代理进行通讯交互,将本服务器的文件列表发送给其他服务器进行检查。如第一服务器扫描到本服务器的文件列表,则需要分别发送给第二服务器和第三服务器进行检查。

步骤2:对方文件复制代理收到检查后,与自身服务器上的文件复制目录下的所有文件进行文件名称的核对,筛选出本服务器没有的文件名称,返回给检查方。例如第二服务器接收到第一服务器发送的请求后,将第一服务器发过来的文件列表,与第二服务器自己的文件复制目录下的所有文件名核对,返回在第二服务器上不存在的文件名列表给第一服务器。

步骤3:发送检查的第一服务器接收到返回信息后,将返回信息中的文件名放到对应的传输队列中,等待传输文件。例如第一服务器收到第二服务器的返回信息,得到了第一服务器中有但第二服务器中不存在的文件名,则将此文件名放到第一服务器——第二服务器的传输队列中。同样的对于第一服务器发送第三服务器等服务器的请求也是同样的处理。

一个示例中,为文件复制代理进程的可用性,电子设备中还设置有针对文件复制代理进程的守护进程。

综上,本实施例中,定时检查模块可以避免批量服务由于异常没有及时通知到代理,导致文件不能进行复制的问题,提高了文件同步的及时性。

图4为本申请实施例提供的一种文件处理装置的结构示意图,装置部署于第一服务器中,如图4所示,装置包括:

读取单元41,用于读取传输队列中的队列元素;其中,传输队列对应与第一服务器进行文件传输的第二服务器,队列元素为待处理文件的标识信息。

第一处理单元42,用于建立与传输队列对应的第二服务器的通信连接,并向第二服务器发送第一核验请求,其中,第一核验请求用于指示第二服务器核验第二服务器中是否存在针对待处理文件的传输线程并反馈核验结果。

第二处理单元43,用于接收第二服务器反馈的核验结果,若确定核验结果表征第二服务器中不存在针对待处理文件的传输线程,则获取文件复制目录中的待处理文件,并传输待处理文件至第二服务器。

一个示例中,第二处理单元43包括:

传输子单元,用于依次获取文件复制目录中待处理文件的每一批次的文件数据,并依次传输每一批次的文件数据至第二服务器,直至待处理文件的N个批次的文件数据均已传输至第二服务器;其中,N为大于1的正整数。

一个示例中,在传输子单元之后,装置还包括:

第三处理单元,用于发送提示信息至第二服务器,对传输队列中的队列元素进行移除处理,断开与第二服务器的连接;其中,提示信息用于提示第二服务器针对待处理文件已传输完成。

一个示例中,装置还包括:

第一执行单元,用于响应于批量作业服务进程发送的接口请求,获取文件复制目录下的待处理文件的标识信息,并添加标识信息为传输队列中的队列元素;其中,接口请求用于指示处理待处理文件。

一个示例中,装置还包括:

第二执行单元,用于基于定时线程,定时发送第二核验请求至第二服务器,并接收第二服务器反馈的返回信息;其中,第二核验请求中包括文件复制目录中包括的每一文件对应的标识信息,第二核验请求用于指示第二服务器检验第二服务器中是否存在每一标识信息对应的文件。

第三执行单元,用于添加返回信息中的待处理文件对应的标识信息为传输队列中的队列元素;其中,返回信息用于指示待处理文件对应的标识信息,待处理文件为文件复制目录中存在并且第二服务器中未存在的文件。

图5为本申请实施例提供的一种文件处理装置的结构示意图,装置部署于第二服务器中,如图5所示,装置包括:

第一接收单元51,用于接收第一服务器发送的第一核验请求,其中,第一服务器为与第二服务器进行文件传输的服务器,第一核验请求用于指示第二服务器核验第二服务器中是否存在针对待处理文件的传输线程并反馈核验结果。

获取单元52,用于读取第一核验请求携带的队列元素,并确定队列元素为核验关键字,其中,队列元素为待处理文件的标识信息。

执行单元53,用于根据核验关键字,对第二服务器中运行的各个传输线程进行核验处理,确定核验结果,并反馈核验结果至第一服务器;其中,每一传输线程均具有正在传输的文件的标识信息,核验结果用于表征第二服务器存在或者不存在针对待处理文件的传输线程。

第二接收单元54,用于若核验结果表征第二服务器中不存在针对待处理文件的传输线程,则接收第一服务器传输的待处理文件。

一个示例中,第二接收单元54包括:

启动子单元,用于启动针对待处理文件的目标传输线程。

接收子单元,用于基于目标传输线程接收第一服务器传输的待处理文件的每一批次的文件数据,并将每一批次的文件数据依次写入待处理文件对应的文件目录中,直至待处理文件的N个批次的文件数据均已传输至第二服务器;其中,N为大于1的正整数。

一个示例中,装置还包括:

第三接收单元,用于接收第一服务器发送的提示信息,移除目标传输线程;其中,提示信息用于提示第二服务器针对待处理文件已传输完成。

图6为本申请实施例提供的一种服务器的结构示意图,如图6所示,服务器包括:存储器61,处理器62。

存储器61,用于存储计算机程序。

处理器62,用于读取存储器存储的计算机程序,并根据存储器中的计算机程序执行上述任一实施例的文件处理方法。

图7为本申请实施例提供的一种服务器的框图,其中,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/O)接口812,传感器组件814,以及通信组件816。

处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。

存储器804被配置为存储各种类型的数据以支持在装置800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

电源组件806为装置800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。

多媒体组件808包括在装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当装置800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当装置800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。

I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到装置800的打开/关闭状态,组件的相对定位,例如组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

在示例性实施例中,装置800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

本申请实施例还提供了一种计算机程序产品,计算机程序产品包括:计算机程序,计算机程序存储在可读存储介质中,服务器的至少一个处理器可以从可读存储介质读取计算机程序,至少一个处理器执行计算机程序使得服务器执行上述任一实施例提供的方案。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

相关技术
  • 文件存储、检索方法、装置、存储介质及服务器
  • 一种文件或文件夹处理方法、移动终端及存储介质
  • 信息处理方法、装置、服务器及存储介质
  • 安全威胁处理方法、系统、安全感知服务器及存储介质
  • 一种数据处理方法、终端、服务器和计算机存储介质
  • 文件存储处理方法、服务器、电子设备及存储介质
  • 文件存储处理方法、服务器、电子设备及存储介质
技术分类

06120116496698