一种动态优化的多线程数据同步方法及系统与流程

文档序号:20839011发布日期:2020-05-22 17:15阅读:230来源:国知局
一种动态优化的多线程数据同步方法及系统与流程

本发明涉及数据处理技术领域,并且更具体地,涉及一种动态优化的多线程数据同步方法及系统。



背景技术:

对于管理企业会员、保障会员权益的综合业务系统,主要包含客户端、服务端、门户网站、微信端等子系统。会员系统的数据来源是crm(客户关系管理)系统,数据同步过程大致分为三步:第一步,当crm系统数据库中的数据发生新增、删除、修改操作时,数据库触发器自动处理,在增量数据表中插入一条数据;第二步,数据同步中转服务,定期从增量数据表中查询数据,并调用会员系统“数据导入接口”实现批量数据同步;第三步,“数据导入接口”接收批量数据后,进行数据清洗、数据保存等操作。本发明是为优化第二步的数据同步性能而提出的方法。

会员系统所需的数据分为不同类型,主要有“会员权益”、“会员权益包”、“会员权益包与会员权益关系”、“会员”、“会员与会员权益关系”等。数据同步存在先后顺序依赖,如必须先同步“会员权益”、“会员权益包”数据后,才能同步“会员权益包与会员权益关系”数据等。增量数据表中的数据不易区分数据类型,因此按照每条数据唯一的“数据编号”顺序同步,保证数据同步的顺序。

由于完全按照编号顺序同步,会导致只能使用单线程,出现同步速度慢的问题,不同地区的数据之间没有先后顺序依赖,因此根据“地区编号”将数据进行拆分,不同地区实现多线程数据同步。然而,当分布地区太多,且单个地区数据量较小时,容易造成资源浪费,而简单的合并处理又容易造成数据积压等问题。

因此,需要一种动态优化的多线程数据同步方法。



技术实现要素:

本发明提出一种动态优化的多线程数据同步方法及系统,以解决如何快速高效地实现数据同步的问题。

为了解决上述问题,根据本发明的一个方面,提供了一种动态优化的多线程数据同步方法,所述方法包括:

主线程按照预设的时间间隔阈值,根据待同步数据中每个地区的地区标识确定每个地区对应的地区数据条数;

主线程根据每个地区对应的地区数据条数,按照预设的子线程分配策略为每个地区分配对应的子线程;

每个子线程根据已分配地区对应的地区数据条数,按照预设的同步策略进行数据同步。

优选地,其中所述主线程根据每个地区对应的地区数据条数,按照预设的子线程分配策略为每个地区分配对应的子线程,包括:

当存在未分配子线程的地区时,判断该地区对应的地区数据条数是否小于等于预设的数据同步条数阈值;若是,则创建单独处理该地区的子线程;反之,则标记该地区为需合并处理的地区;以及

当存在需合并处理的地区时,根据需合并处理的地区的对应的数据条数,创建合并处理的子线程,以为每个地区分配对应的子线程。

优选地,其中所述每个子线程根据已分配地区对应的地区数据条数,按照预设的同步策略进行数据同步,包括:

每个子线程将对应的已分配地区标记为正在处理状态;

根据待同步数据的编号选取预设的数据同步条数阈值的数据,若选取的数据条数大于预设选取条数阈值,则直接调用接口同步数据,实现一次数据同步。

优选地,其中所述方法还包括:

在每个子线程将对应的已分配地区标记为正在处理状态之前,判断该子线程对应的所有地区的处理状态;若不存在已经为正在处理状态的地区,则将该子线程对应的已分配地区标记为正在处理状态;反之,则直接结束此次数据同步。

优选地,其中所述方法还包括:

当该次数据同步成功时,若该次同步的数据条数小于预设的数据同步条数阈值,则表示数据已全部同步完成,将该子线程对应的已分配地区标记为未处理状态;

当该次数据同步成功时,若该次同步的数据条数大于等于预设的数据同步条数阈值,则判断是否满足地区个数是否大于1且同步成功次数大于已分配的地区个数;若满足,则表示存在数据积压,将该子线程对应的已分配地区标记为未处理状态,并立即结束当前线程,由主线程重新调度分配独立处理子线程;若不满足,则重新根据待同步数据的编号重新选取预设的数据同步条数阈值的数据,以进行下一次的数据同步。

优选地,其中所述方法还包括:

若选取的数据条数大于预设选取条数阈值,则表示数据已全部同步完成,将该子线程对应的已分配地区标记为未处理状态。

根据本发明的另一个方面,提供了一种动态优化的多线程数据同步系统,所述系统包括:

待同步的地区数据确定单元,用于使主线程按照预设的时间间隔阈值,根据待同步数据中每个地区的地区标识确定每个地区对应的地区数据条数;

子线程分配单元,用于使主线程根据每个地区对应的地区数据条数,按照预设的子线程分配策略为每个地区分配对应的子线程;

数据同步单元,用于每个子线程根据已分配地区对应的地区数据条数,按照预设的同步策略进行数据同步。

优选地,其中所述子线程分配单元,使主线程根据每个地区对应的地区数据条数,按照预设的子线程分配策略为每个地区分配对应的子线程,包括:

当存在未分配子线程的地区时,判断该地区对应的地区数据条数是否小于等于预设的数据同步条数阈值;若是,则创建单独处理该地区的子线程;反之,则标记该地区为需合并处理的地区;以及

当存在需合并处理的地区时,根据需合并处理的地区的对应的数据条数,创建合并处理的子线程,以为每个地区分配对应的子线程。

优选地,其中所述数据同步单元,使每个子线程根据已分配地区对应的地区数据条数,按照预设的同步策略进行数据同步,包括:

每个子线程将对应的已分配地区标记为正在处理状态;

根据待同步数据的编号选取预设的数据同步条数阈值的数据,若选取的数据条数大于预设选取条数阈值,则直接调用接口同步数据,实现一次数据同步。

优选地,其中所述数据同步单元,还包括:

在每个子线程将对应的已分配地区标记为正在处理状态之前,判断该子线程对应的所有地区的处理状态;若不存在已经为正在处理状态的地区,则将该子线程对应的已分配地区标记为正在处理状态;反之,则直接结束此次数据同步。

优选地,其中所述数据同步单元,还包括:

当该次数据同步成功时,若该次同步的数据条数小于预设的数据同步条数阈值,则表示数据已全部同步完成,将该子线程对应的已分配地区标记为未处理状态;

当该次数据同步成功时,若该次同步的数据条数大于等于预设的数据同步条数阈值,则判断是否满足地区个数是否大于1且同步成功次数大于已分配的地区个数;若满足,则表示存在数据积压,将该子线程对应的已分配地区标记为未处理状态,并立即结束当前线程,由主线程重新调度分配独立处理子线程;若不满足,则重新根据待同步数据的编号重新选取预设的数据同步条数阈值的数据,以进行下一次的数据同步。

优选地,其中所述数据同步单元,还包括:

若选取的数据条数大于预设选取条数阈值,则表示数据已全部同步完成,将该子线程对应的已分配地区标记为未处理状态。

本发明提供了一种动态优化的多线程数据同步方法及系统,包括:主线程按照预设的时间间隔阈值,根据待同步数据中每个地区的地区标识确定每个地区对应的地区数据条数;主线程根据每个地区对应的地区数据条数,按照预设的子线程分配策略为每个地区分配对应的子线程;每个子线程根据已分配地区对应的地区数据条数,按照预设的同步策略进行数据同步。本发明的方法,在相同地区不同类型的数据存在先后同步顺序依赖的前提下,对不同地区的数据量进行分析,动态优化调整,智能组合拆分不同地区的数据,进行多线程并行同步;使用主线程、子线程配合完成,在实现多线程数据同步的同时,控制了子线程的数量,保证服务器资源不会消耗过大,高效稳定;对多线程数据同步方法进行动态优化,既提高了数据同步的性能,又降低了某地区数据迅速增多造成的影响,鲁棒性强;由于数据的拆分方式灵活多样,可根据不同的业务需求使用不同的属性进行拆分,通用性强,适用性广。

附图说明

通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:

图1为根据本发明实施方式的动态优化的多线程数据同步方法100的流程图;

图2为根据本发明实施方式的主线程的流程图;

图3为根据本发明实施方式的子线程的流程图;以及

图4为根据本发明实施方式的动态优化的多线程数据同步系统400的结构示意图。

具体实施方式

现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。

除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。

图1为根据本发明实施方式的动态优化的多线程数据同步方法100的流程图。如图1所示,本发明实时方式提供的动态优化的多线程数据同步方法,在相同地区不同类型的数据存在先后同步顺序依赖的前提下,对不同地区的数据量进行分析,动态优化调整,智能组合拆分不同地区的数据,进行多线程并行同步;使用主线程、子线程配合完成,在实现多线程数据同步的同时,控制了子线程的数量,保证服务器资源不会消耗过大,高效稳定;对多线程数据同步方法进行动态优化,既提高了数据同步的性能,又降低了某地区数据迅速增多造成的影响,鲁棒性强;由于数据的拆分方式灵活多样,可根据不同的业务需求使用不同的属性进行拆分,通用性强,适用性广。本发明实施方式提供的动态优化的多线程数据同步方法100从步骤101处开始,在步骤101主线程按照预设的时间间隔阈值,根据待同步数据中每个地区的地区标识确定每个地区对应的地区数据条数。

在步骤102,主线程根据每个地区对应的地区数据条数,按照预设的子线程分配策略为每个地区分配对应的子线程。

优选地,其中所述主线程根据每个地区对应的地区数据条数,按照预设的子线程分配策略为每个地区分配对应的子线程,包括:

当存在未分配子线程的地区时,判断该地区对应的地区数据条数是否小于等于预设的数据同步条数阈值;若是,则创建单独处理该地区的子线程;反之,则标记该地区为需合并处理的地区;以及

当存在需合并处理的地区时,根据需合并处理的地区的对应的数据条数,创建合并处理的子线程,以为每个地区分配对应的子线程。

在本发明的实施方式中,按照预设的时间间隔阈值通过定时器定时启动主线程。例如可以设置启动间隔为1分钟。主线程查询待同步数据中各地区的“地区编号”及对应的数据条数。对于未分配的地区,根据该地区的数据条数进行分配。具体地,若该地区对应的待同步的数据条数超过预设的数据同步条数阈值时,创建单独处理该地区的子线程;若未超过,则标记该地区为需合并处理的地区,并为这些需合并处理的地区创建对应的子线程。最后,启动全部子线程,开始同步数据。其中,预设的同步条数阈值可以根据具体需求设定,例如,设置为2000条或4000条等。

图2为根据本发明实施方式的主线程的流程图。如图2所示,主线程的工作流程包括:

步骤1,主线程开始工作,查询待同步数据中各地区的“地区编号”及对应的数据条数。

步骤2,判断是否存在未分配的地区,是则继续步骤3,否则跳至步骤4。

步骤3,根据该地区的数据条数进行分配;若数据条数超过预设的数据同步条数阈值,则创建单独处理该地区数据的子线程;若未超过,则标记该地区为需合并处理的地区;然后返回步骤3,循环分配下一个地区。

步骤4,判断是否存在需合并处理的地区,若存在,则创建合并处理这些地区的子线程。

步骤5,启动全部子线程,开始同步数据。

其中,主线程根据预设的时间间隔启动。例如,主线程可以通过定时器按照1分钟的时间间隔定时启动。

在步骤103,每个子线程根据已分配地区对应的地区数据条数,按照预设的同步策略进行数据同步。

优选地,其中所述方法还包括:

在每个子线程将对应的已分配地区标记为正在处理状态之前,判断该子线程对应的所有地区的处理状态;若不存在已经为正在处理状态的地区,则将该子线程对应的已分配地区标记为正在处理状态;反之,则直接结束此次数据同步。

优选地,其中所述每个子线程根据已分配地区对应的地区数据条数,按照预设的同步策略进行数据同步,包括:

每个子线程将对应的已分配地区标记为正在处理状态;

根据待同步数据的编号选取预设的数据同步条数阈值的数据,若选取的数据条数大于预设选取条数阈值,则直接调用接口同步数据,实现一次数据同步。

优选地,其中所述方法还包括:

当该次数据同步成功时,若该次同步的数据条数小于预设的数据同步条数阈值,则表示数据已全部同步完成,将该子线程对应的已分配地区标记为未处理状态;

当该次数据同步成功时,若该次同步的数据条数大于等于预设的数据同步条数阈值,则判断是否满足地区个数是否大于1且同步成功次数大于已分配的地区个数;若满足,则表示存在数据积压,将该子线程对应的已分配地区标记为未处理状态,并立即结束当前线程,由主线程重新调度分配独立处理子线程;若不满足,则重新根据待同步数据的编号重新选取预设的数据同步条数阈值的数据,以进行下一次的数据同步。

优选地,其中所述方法还包括:

若选取的数据条数大于预设选取条数阈值,则表示数据已全部同步完成,将该子线程对应的已分配地区标记为未处理状态。

图3为根据本发明实施方式的子线程的流程图。如图3所示,在本发明的实施方式中,任一个子线程进行数据同步的步骤,包括:

步骤1,判断子线程对应的全部待处理地区的处理状态,若不存在已经为正在处理状态的地区,则进入步骤2;反之,直接结束。

步骤2,将全部待处理地区标记为正在处理状态。

步骤3,对待同步的数据按编号升序排列,查询并选取编号靠前的条数最多不超过预设同步数据条数阈值的数据。

步骤4,判断选取的数据条数是否大于0条;若是,则进入步骤5;反之,则进入步骤9。

步骤5,调用接口同步数据,成功进入步骤6,否则进入步骤9。

步骤6,对数据进行归档,避免数据被重复处理。

步骤7,判断同步数据条数是否小于预设的数据同步条数阈值;若是,则进入步骤9;反之,继续步骤8。

步骤8,判断是否地区个数大于1,且同步成功次数大于地区个数,若是则表示存在数据积压,此时进入步骤9,并立即结束当前线程,由主线程重新调度分配独立处理子线程,以解决数据积压问题;反之,则返回步骤3,循环同步剩余的数据。

步骤9,将全部地区标记为未处理,以保证再出现新数据后其它子线程可以正常处理这些地区。

本发明实施方式提供的多线程数据同步方法,使用主线程和子线程两种线程配合完成。主线程负责各子线程的动态调度分配,分析各地区对应的数据条数,当数据条数较多时,单独分配子线程进行处理,当数据条数较少时,合并这些地区的数据分配一个子线程进行处理。既通过多线程并行同步提高数据同步的性能,又控制子线程的数量,保证服务器资源不会消耗过大。子线程对指定地区的数据进行单线程数据同步处理,按照“数据编号”从小到大的顺序依次处理,满足数据同步的顺序要求。由于数据产生的速度有时会远远大于数据同步的速度,造成合并处理子线程中的数据积压,进一步造成合并处理子线程中的其它地区的数据不能及时同步处理。为解决此问题,本发明实施方式对多线程数据同步方法进行动态优化,当合并处理子线程发现合并处理的数据条数短期内大量增多超过预期时,立即停止运行,然后由主线程重新分配,将数据条数较多的地区单独分配子线程进行处理,保证资源消耗不会过大的同时,提高了数据同步性能,并降低了某地区数据迅速增多造成的影响。

图4为根据本发明实施方式的动态优化的多线程数据同步系统400的结构示意图。如图4所示,本发明实施方式提供的动态优化的多线程数据同步系统400,包括:待同步的地区数据确定单元401、子线程分配单元402和数据同步单元403。

优选地,所述待同步的地区数据确定单元401,用于使主线程按照预设的时间间隔阈值,根据待同步数据中每个地区的地区标识确定每个地区对应的地区数据条数。

优选地,所述子线程分配单元402,用于使主线程根据每个地区对应的地区数据条数,按照预设的子线程分配策略为每个地区分配对应的子线程。

优选地,其中所述子线程分配单元402,使主线程根据每个地区对应的地区数据条数,按照预设的子线程分配策略为每个地区分配对应的子线程,包括:

当存在未分配子线程的地区时,判断该地区对应的地区数据条数是否小于等于预设的数据同步条数阈值;若是,则创建单独处理该地区的子线程;反之,则标记该地区为需合并处理的地区;以及

当存在需合并处理的地区时,根据需合并处理的地区的对应的数据条数,创建合并处理的子线程,以为每个地区分配对应的子线程。

优选地,所述数据同步单元403,用于每个子线程根据已分配地区对应的地区数据条数,按照预设的同步策略进行数据同步。

优选地,其中所述数据同步单元403,使每个子线程根据已分配地区对应的地区数据条数,按照预设的同步策略进行数据同步,包括:

每个子线程将对应的已分配地区标记为正在处理状态;

根据待同步数据的编号选取预设的数据同步条数阈值的数据,若选取的数据条数大于预设选取条数阈值,则直接调用接口同步数据,实现一次数据同步。

优选地,其中所述数据同步单元403,还包括:

在每个子线程将对应的已分配地区标记为正在处理状态之前,判断该子线程对应的所有地区的处理状态;若不存在已经为正在处理状态的地区,则将该子线程对应的已分配地区标记为正在处理状态;反之,则直接结束此次数据同步。

优选地,其中所述数据同步单元403,还包括:

当该次数据同步成功时,若该次同步的数据条数小于预设的数据同步条数阈值,则表示数据已全部同步完成,将该子线程对应的已分配地区标记为未处理状态;

当该次数据同步成功时,若该次同步的数据条数大于等于预设的数据同步条数阈值,则判断是否满足地区个数是否大于1且同步成功次数大于已分配的地区个数;若满足,则表示存在数据积压,将该子线程对应的已分配地区标记为未处理状态,并立即结束当前线程,由主线程重新调度分配独立处理子线程;若不满足,则重新根据待同步数据的编号重新选取预设的数据同步条数阈值的数据,以进行下一次的数据同步。

优选地,其中所述数据同步单元403,还包括:

若选取的数据条数大于预设选取条数阈值,则表示数据已全部同步完成,将该子线程对应的已分配地区标记为未处理状态。

本发明的实施例的动态优化的多线程数据同步系统400与本发明的另一个实施例的动态优化的多线程数据同步方法100相对应,在此不再赘述。

已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。

通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

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