一种数据同步方法及终端与流程

文档序号:11138818阅读:313来源:国知局
一种数据同步方法及终端与制造工艺

本发明涉及终端技术领域,具体涉及一种数据同步方法及终端。



背景技术:

在数据同步业务的过程中,对数据同步任务处理的基本单位是线程,在处理过程中会由线程从数据源抓取数据,如单线程抓取数据,并进行数据同步业务的处理。

但是对于目前的程抓取的方式来说,如单线程,其处理效率低下,一方面无法充分利用计算机的处理资源,如多核中央处理器;另一方面,由于需要对数据同步任务是否开始进行查询,在实际处理数据同步任务之前就会占用计算机资源。



技术实现要素:

本发明实施例提供了一种数据同步方法及终端来解决现有采用线程抓取数据并进行处理时的处理效率低、数据同步任务开始处理之前就占用资源以及程序或系统崩溃时无法及时处理的问题。

有鉴于此,本发明第一方面提供一种数据同步方法,该方法包括:

检测加入同步队列的数据同步任务;

为所述数据同步任务分配线程池;

确定所述数据同步任务的任务开始时刻和任务提前执行时长,所述任务提前时长预设在执行所述数据同步任务的数据同步系统内;

若当前时刻与所述数据同步任务的任务开始时刻的差值大于任务提前执行时长,则启动线程池中的一个线程对所述数据同步任务进行监测;或,

若当前时刻与所述数据同步任务的任务开始时刻的差值不大于任务提前时长,则开启线程池中的所有线程执行所述数据同步任务。

在一些实施例中,所述数据同步系统的最大线程数量为预设阈值N,N为大于等于2的整数,所述为所述数据同步任务分配线程池包括:

为所述数据同步任务分配预设线程数量的线程池。

在一些实施例中,所述方法还包括:

为首次数据同步任务分配线程数量为N/2的线程池;

为下次数据同步任务分配具有当次数据同步任务的一半线程数量的线程池。

在一些实施例中,当数据同步系统的剩余线程数量小于临界值时,将加入所述同步队列的数据同步任务设置为等待状态。

在一些实施例中,所述数据同步任务包括:

所述线程将开始标识和数据信息添加至数据同步日志文件内;

当数据同步成功时,线程将成功标识添加至所述数据同步日志文件内;或。

当数据同步失败或异常时,线程将错误标识添加至所述数据同步日志文件内。

在一些实施例中,当数据同步失败或异常时,所述方法还包括,将异常计数器的计数增加;

当所述异常计数器的计数达到预设异常阈值时,所述线程以异常延时间隔对所述数据同步任务进行延时处理。

在一些实施例中,所述方法还包括,当所述线程成功完成数据同步时,将所述异常计数器的计数清零。

在一些实施例中,所述方法还包括:

当线程执行数据同步任务的过程中发生即时异常,则将同步异常的数据加入异常处理队列;和/或,

当数据同步任务完成或者系统发生重启时,将通过数据同步日志文件确定的具有开始标识且无成功标识,或者具有错误标识的数据加入异常处理队列。

本发明实施例第二方面还提供一种终端,包括:

检测模块,用于检测加入同步队列的数据同步任务;

分配模块,用于为所述数据同步任务分配线程池;

确定模块,用于确定所述数据同步任务的任务开始时刻和任务提前执行时长,所述任务提前执行时长预设在执行所述数据同步任务的数据同步系统内;

处理模块,用于在当前时刻与所述数据同步任务的任务开始时刻的差值大于任务提前执行时长,启动线程池中的一个线程对所述数据同步任务进行监测;或,

用于在当前时刻与所述数据同步任务的任务开始时刻的差值不大于任务提前时长,则开启所述线程池中的所有线程执行所述数据同步任务。

在一些实施例中,所述数据同步系统的最大线程数量为预设阈值N,N为大于等于2的整数,所述分配模块具体用于:

为所述数据同步任务分配预设线程数量的线程池。

在一些实施例中,所述分配模块还用于:

为首次数据同步任务分配线程数量为N/2的线程池;

为下次数据同步任务分配具有当次数据同步任务的一半线程数量的线程池。

在一些实施例中,所述处理模块还用于:

当所述数据同步系统的剩余线程数量小于临界值时,将加入所述同步队列的数据同步任务设置为等待状态。

在一些实施例中,所述处理模块具体用于:

所述线程将开始标识和数据信息添加至数据同步日志文件内;

当数据同步成功时,线程将成功标识添加至所述数据同步日志文件内;或。

当数据同步失败或异常时,线程将错误标识添加至所述数据同步日志文件内。

在一些实施例中,当数据同步失败或异常时,所述处理模块还用于:

将异常计数器的计数增加;

当所述异常计数器的计数达到预设异常阈值时,所述线程以异常延时间隔对所述数据同步任务进行延时处理。

在一些实施例中,所述处理模块还用于:

当所述线程成功完成数据同步时,将所述异常计数器的计数清零。

在一些实施例中,所述处理模块还用于:

当线程执行数据同步任务的过程中发生即时异常,将同步异常的数据加入异常处理队列;和/或,

当数据同步任务完成或者数据同步系统发生重启时,将通过数据同步日志文件确定的具有开始标识且无成功标识,或者具有错误标识的数据加入异常处理队列。

从以上技术方案可以看出,本发明实施例具有以下优点:本发明实施例中,在同步队列中具有数据同步任务加入时,会为加入的数据同步任务分配线程池,该线程池内包括至少两个线程,之后会确定出该数据同步任务的任务开始时间以及任务提前执行时长,由于线程创建需要一定的时间,因此若无该任务提前执行时长便会使得数据同步任务会延时执行,接着将当前时刻与数据同步任务的任务开始时刻进行差值,并将该差值与任务提前执行时长进行对比,若是大于则表示还未到执行时刻,则仅仅启动一个探测线程可用于灰度验证,若是小于或者等于则表示已经到了需要执行该任务的时刻,便开启线程池中的所有线程执行该数据同步任务,可以看出,一方面由于是根据数据任务设置线程数量,另一方面又为数据同步任务设置了任务提前执行时长,使得数据同步任务的开始时刻便能实际执行数据同步操作,而不用等待线程的创建过程,从而提高数据同步任务的处理效率以及降低数据同步任务的资源占用。

附图说明

图1是本发明实施例的数据同步方法的一个实施例图;

图2是本发明实施例的数据同步方法的另一个实施例图;

图3是本发明实施例的终端的一个实施例图。

具体实施方式

本发明实施例提供了一种数据同步方法及终端来提高数据同步任务的处理效率以及降低数据同步任务的资源占用。

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

以下分别进行详细说明。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。

请参阅图1,图1是本发明实施例数据同步方法的一个实施例图,该方法可包括:

101、检测加入同步队列的数据同步任务。

其中,该数据同步任务为新加入同步队列的数据同步任务,而同步队列中之前已有的数据同步任务。

102、为所述数据同步任务分配线程池。

在检测到新加入同步队列的数据同步任务后,会为该任务分配线程池,该线程池中线程数量可按照预设的规则进行分配。

可选的,执行数据同步任务的数据同步系统的最大线程数为N,N为大于等于2的整数,此时为数据同步任务分配线程池具体可为,为当次数据同步任务分配预设线程数量的线程池。可以看出,对于数据同步任务的线程池的分配是按照预定的规则进行的,例如,若是首次数据同步任务,则系统中具有数量为N的闲置线程,因此,可为该数据同步任务分配较多的线程,例如,分配最大线程总数一半或者三分之一的线程给该数据同步任务。

可选的,若为首次数据同步任务分配线程数量为N/2的线程池,对于当次数据同步任务的下次数据同步任务,可为其分配具有当次数据同步任务的一半线程数量的线程池,通过此方式,如首次分配为最大线程数的一半,则下次为最大线程数的1/4,再下次则可以是1/8,采用此方式,能够使得分配出去的线程数不会达到数据同步系统的上限,因而不会出现系统无法处理或者是系统崩溃的问题。

可选的,当数据同步系统的剩余线程数量小于预设的临界值时,将加入所述同步队列的数据同步任务设置为等待状态。为了进一步保证数据同步系统不至于发生崩溃,在数据同步系统线程数量小于临界值时,便会将新加入的数据同步任务设置为等待状态,从而保证数据同步系统的稳定性。

103、确定所述数据同步任务的任务开始时刻和任务提前执行时长。

在完成对数据同步任务的线程数量分配时,会一并确定出数据同步任务的任务开始时刻以及任务提前执行时长,任务开始时刻是数据同步实际开始执行的时刻,而任务提前执行时长则是在数据同步实际执行之前进行线程的创建以及相关资源的分配,使得到达任务开始时刻便能够立即执行数据同步。

104、判断当前时刻与所述数据同步任务的任务开始时刻的差值是否大于任务提前执行时长,若是,则执行至步骤105,若否,则执行步骤106。

此过程中,将当前时刻与所述数据同步任务的任务开始时刻的差值与任务提前执行时长进行比对,若是该差值大于任务提前执行时长时,表示还未到线程创建的时间,可以继续等待,而若是该差值不大于任务提前执行时长时,表示已经到线程创建的时间,从而使得到任务开始时刻能够顺利进行数据同步任务。

105、启动线程池中的一个线程对所述数据同步任务进行监测。

此步骤中,相当于该数据同步任务的执行时刻还未到,因此仅启动线程池中的一个线程进行监测即可,该线程还可进行生产环境的灰度验证。

106、开启所述线程池中的所有线程执行所述数据同步任务。

此步骤中,由于已经到达数据同步任务的执行时刻,而线程池又是针对该数据同步任务进行分配的,因此,此时可以开启线程池中的所有线程执行数据同步任务。

可以看出,在同步队列中具有数据同步任务加入时,会为加入的数据同步任务分配线程池,该线程池内包括至少两个线程,之后会确定出该数据同步任务的任务开始时间以及任务提前执行时长,由于线程创建需要一定的时间,因此若无该任务提前执行时长便会使得数据同步任务会延时执行,接着将当前时刻与数据同步任务的任务开始时刻进行差值,并将该差值与任务提前执行时长进行对比,若是大于则表示还未到执行时刻,则仅仅启动一个探测线程可用于灰度验证,若是小于或者等于则表示已经到了需要执行该任务的时刻,便开启线程池中的所有线程执行该数据同步任务,可以看出,一方面由于是根据数据任务设置线程数量,另一方面又为数据同步任务设置了任务提前执行时长,使得数据同步任务的开始时刻便能实际执行数据同步操作,而不用等待线程的创建过程。

上述方式解决了执行效率低以及占用资源的问题,但是在同步任务过程中,当线程由于未知原因退出或假死时,技术人员无法获取该信息,导致业务数据无法及时同步和处理,此外由于系统难免出现系统故障,在故障后系统重启时,故障前内存中的存储的数据会丢失,若不对此异常进行处理,会导致后续的同步业务无法进行。下面对本发明实施例中的同步任务的过程以及出现异常时进行的处理进行介绍。

请参阅图2,图2是本发明实施例的数据同步方法的数据同步任务执行流程,在实际进行数据同步任务的过程可以是:

201、线程将开始标识和数据信息添加至数据同步日志文件内;

202、对数据同步任务的是否成功进行判断,若成功,则执行步骤203,若失败,则执行步骤204。

203、线程将成功标识添加至所述数据同步日志文件内。

204、线程将错误标识添加至所述数据同步日志文件内。

可选的,同步任务的执行过程中,在步骤204之后,还可包括

205、将具有错误标识的数据加入异常处理队列。

当然,若是该数据同步异常,同样也会加入异常处理队列。

可以看出,通过此异常处理能够对同步失败或者是同步异常的数据进行异常处理,使得数据同步任务顺利完成。

可选的,当数据同步失败或异常时,所述方法还包括,

206、将异常计数器的计数增加。

当发生异常时,不仅会将同步失败或者异常的任务加入异常处理队列,还会将该线程的异常计数值增加。

207、当异常计数器的计数达到预设异常阈值时,线程在执行数据同步时以异常延时间隔对所述数据同步任务进行延时处理。

当然,若是未达到预设异常阈值,则线程在执行数据同步时采取立即执行数据同步任务。

可以理解的是,可以在系统中维护一个异常计数器,在数据同步失败或者异常时,将该计数器的数值增加,初始状态下,该计数器的数值为0,,当该计数到到异常阈值时,该线程在处理抓取到的数据时,为了防止异常堆积造成的系统不稳定,不会立即处理该数据,而是在异常延时间隔之后再进行处理,直到某一次该线程处理的数据有同步成功时,才会将该异常计数器的计数清零,通过此方式,可以进一步确保数据同步系统的稳定性。

此外,可选的,当线程执行数据同步任务的过程中发生即时异常,则将同步异常的数据加入异常处理队列;和/或,

当数据同步任务完成或者数据同步系统发生重启时,将通过数据同步日志文件确定的具有开始标识且无成功标识,或者具有错误标识的数据加入异常处理队列。

可以看出,进入异常处理队列的数据有多方面的情况,例如是由于线程执行数据同步任务的过程中发生即时异常,则将该异常时的数据加入异常处理队列,又例如,当数据同步任务完成时,可以对此次任务过程中数据同步日志文件进行分析,将具有开始标识且无成功标识,或者具有错误标识的数据加入异常处理队列;又例如,数据同步系统发生重启时,此时由于内存中的数据丢失,数据同步任务中的部分数据会出现异常,同样可以查询可以对此次任务过程中数据同步日志文件进行分析,将具有开始标识且无成功标识,或者具有错误标识的数据加入异常处理队列。通过此处理方式,使得不论通过何种情况出现同步异常的数据都能得到妥善的处理,从而达到异常的及时处理,以及系统宕机等极端条件下的数据恢复的效果。

上面对本发明实施例的数据同步方法进行了介绍,下面对本发明实施例的终端进行介绍,请参阅图3,图3是本发明实施例的终端的一个实施例图,其中,该终端3可包括:

检测模块301,用于检测加入同步队列的数据同步任务;

分配模块302,用于为所述数据同步任务分配线程池;

确定模块303,用于确定所述数据同步任务的任务开始时刻和任务提前执行时长,所述任务提前执行时长预设在执行所述数据同步任务的数据同步系统内;

处理模块304,用于在当前时刻与所述数据同步任务的任务开始时刻的差值大于任务提前执行时长,启动线程池中的一个线程对所述数据同步任务进行监测;或,

用于在当前时刻与所述数据同步任务的任务开始时刻的差值不大于任务提前时长,则开启所述线程池中的所有线程执行所述数据同步任务。

其中,该检测模块301能实现图1所示实施例中步骤101的功能,具体检测过程与图1所示实施例中步骤101类似,此处不再赘述;

该分配模块302能实现图1所示实施例中步骤102的功能,具体检测过程与图1所示实施例中步骤102类似,此处不再赘述;

该确定模块303能实现图1所示实施例中步骤103的功能,具体检测过程与图1所示实施例中步骤103类似,此处不再赘述;

该处理模块304能实现图1所示实施例中步骤104至106的功能,具体检测过程与图1所示实施例中步骤104至106类似,此处不再赘述。

可选的,所述数据同步系统的最大线程数量为预设阈值N,N为大于等于2的整数,所述分配模块302具体用于:

为所述数据同步任务分配预设线程数量的线程池。

可选的,所述分配模块302还用于:

为首次数据同步任务分配线程数量为N/2的线程池;

为下次数据同步任务分配具有当次数据同步任务的一半线程数量的线程池。

可选的,所述处理模块304还用于:

当所述数据同步系统的剩余线程数量小于临界值时,将加入所述同步队列的数据同步任务设置为等待状态。

可选的,所述处理模块304具体用于:

所述线程将开始标识和数据信息添加至数据同步日志文件内;

当数据同步成功时,线程将成功标识添加至所述数据同步日志文件内;或。

当数据同步失败或异常时,线程将错误标识添加至所述数据同步日志文件内。

可选的,当数据同步失败或异常时,所述处理模块304还用于:

将异常计数器的计数增加;

当所述异常计数器的计数达到预设异常阈值时,所述线程以异常延时间隔对所述数据同步任务进行延时处理。

可选的,所述处理模块304还用于:

当所述线程成功完成数据同步时,将所述异常计数器的计数清零。

可选的,所述处理模块304还用于:

当线程执行数据同步任务的过程中发生即时异常,将同步异常的数据加入异常处理队列;和/或,

当数据同步任务完成或者数据同步系统发生重启时,将通过数据同步日志文件确定的具有开始标识且无成功标识,或者具有错误标识的数据加入异常处理队列。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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