本发明涉及大数据同步,具体涉及基于分布式环境下的亿级数据同步方法、装置及存储介质。
背景技术:
1、在现有的大数据同步技术中,通常采用一台计算机完成数据同步,这在亿级数据同步的背景需求下,同步速率十分缓慢,且固定采用一台计算机,毫无扩展性可言,无法做到应数据体量大小而灵活增减计算机数量的目的;同时现有的技术中,在数据同步过程中,不支持将原始数据源中的单表数据拆分至目标数据源中的多张数据表,导致单目标表的读写压力较大。
技术实现思路
1、有鉴于此,本发明的目的在于提供基于分布式环境下的亿级数据同步方法、装置及存储介质,以解决现有技术中,采用一台计算机完成数据同步,在需要同步的数据较大的情况下,同步速率缓慢,且无法做到应数据体量大小而灵活增减计算机数量的问题,同时解决现有的数据同步过程中,不支持将原始数据源中的单表数据拆分至目标数据源中的多张数据表,导致单目标表的读写压力较大的问题。
2、根据本发明实施例的第一方面,提供基于分布式环境下的亿级数据同步方法,所述方法包括:
3、在分布式任务调度工具中配置分布式计算机的调度方法,通过分布式任务调度工具触发部署好的分布式计算机;
4、分布式计算机触发后,根据分布式任务调度工具中配置的分布式计算机的调度方法确定管理计算机以及多个子任务计算机;
5、所述管理计算机根据调度方法将数据同步任务拆分成多个子任务,并将拆分后的子任务分配给自身以及多个子任务计算机;
6、所述管理计算机以及子任务计算机根据自身的子任务从原始数据源中读取数据,并根据调度方法中指定的分片算法与目标表个数进行运算,从而得出原始数据源中每一条数据应该同步至目标数据源的哪一个目标表中,直到完成所有原始数据同步到目标数据源的目标。
7、优先地,
8、所述管理计算机根据调度方法将数据同步任务拆分成多个子任务,并将拆分后的子任务分配给自身以及多个子任务计算机包括:
9、所述管理计算机根据调度方法将数据同步任务拆分成多个子任务后,将拆分出的子任务持久化到任务管理器中,所有子任务计算机以及管理计算机在运行数据同步之前,以定时轮询的方式不断从任务管理器中查询任务直到获取到任务才终止轮询。
10、优选地,
11、所述管理计算机或子任务计算机获取到子任务后,根据调度方法将子任务再次进行拆分,得到第二子任务,所述管理计算机或子任务计算机同步执行自身的子任务拆分出的第二子任务。
12、优选地,
13、所述根据调度方法中指定的分片算法与目标表个数进行运算,从而得出原始数据源中每一条数据应该同步至目标数据源的哪一个目标表中包括:
14、对目标数据源中的所有数据表进行排序,每一个数据表都有其对应的序号;
15、所述管理计算机或子任务计算机根据自身的第二子任务,从原始数据源中解析对应的数据的每一列的数值作为分片值,计算分片值与目标数据源中数据表的个数的余值,该余值即为原始数据源中这一列数据应当存入目标数据源中的数据表的序号。
16、优选地,
17、所述调度方法中还包括数据同步模式;
18、所述数据同步模式包括全量同步模式以及全量加增量同步模式;
19、所述全量同步模式包括:
20、在所述管理计算机或子任务计算机开始执行子任务时,以开始执行子任务的时间点为准,将这一时间点的原始数据源中所有的数据同步至目标数据源中;
21、所述全量加增量同步模式包括:
22、通过数据库的插件感知到全量同步过程中所产生的增量数据,并将增量数据收集到分布式队列中;
23、在全量同步完成之后,所有完成全量同步的管理计算机或子任务计算机自动将分布式队列的增量数据进行消费;
24、消费到增量数据后,依然对增量数据进行拆分成多个子任务,管理计算机或子任务计算机根据获取到的子任务将增量数据同步至目标数据源的目标表中。
25、优选地,
26、所述管理计算机在将数据同步任务拆分成多个子任务后,将拆分成的子任务结果同步至状态管理器中,所述管理计算器以及子任务计算机每完成一个自身的第二子任务,所述管理计算机都将完成后的状态同步至状态管理器中。
27、优选地,
28、所述管理计算机或子任务计算机获取到原始数据源中的原始数据后,将原始数据直接打包并以方法参数的形式发送给用户;
29、用户对方法参数形式的原始数据进行各类加工处理,并将处理后的数据发送给管理计算机或子任务计算机,所述管理计算机或子任务计算机再将处理后的数据同步至目标数据源中。
30、根据本发明实施例的第二方面,提供基于分布式环境下的亿级数据同步装置,所述装置包括:
31、任务触发模块:用于在分布式任务调度工具中配置分布式计算机的调度方法,通过分布式任务调度工具触发部署好的分布式计算机;
32、计算机分类模块:用于分布式计算机触发后,根据分布式任务调度工具中配置的分布式计算机的调度方法确定管理计算机以及多个子任务计算机;
33、任务拆分模块:用于所述管理计算机根据调度方法将数据同步任务拆分成多个子任务,并将拆分后的子任务分配给自身以及多个子任务计算机;
34、数据同步模块:用于所述管理计算机以及子任务计算机根据自身的子任务从原始数据源中读取数据,并根据调度方法中指定的分片算法与目标表个数进行运算,从而得出原始数据源中每一条数据应该同步至目标数据源的哪一个目标表中,直到完成所有原始数据同步到目标数据源的目标。
35、根据本发明实施例的第三方面,提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被主控器执行时,实现所述的上述方法中的各个步骤。
36、本发明的实施例提供的技术方案可以包括以下有益效果:
37、本申请采用分布式计算机为基础,将数据同步任务进行拆分,使得多台计算机同时进行拆分出的子任务的同步,使得数据同步速率有了较大的提升,且分布式计算机的部署使得用户可以根据需要同步的数据量自由调整需要工作的计算机的数量,且在数据同步过程中,根据调度方法中指定的分片算法与目标数据源中的目标表个数进行运算,从而得出原始数据源中每一条数据应该同步至目标数据源的哪一个目标表中,实现将原始数据源中的单表数据拆分成目标数据源中的多表数据,可以有效的降低目标数据源中每一个目标表的读写压力。
38、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
1.基于分布式环境下的亿级数据同步方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,
3.根据权利要求2所述的方法,其特征在于,
4.根据权利要求3所述的方法,其特征在于,
5.根据权利要求1所述的方法,其特征在于,
6.根据权利要求4所述的方法,其特征在于,
7.根据权利要求1所述的方法,其特征在于,
8.基于分布式环境下的亿级数据同步装置,其特征在于,所述装置包括:
9.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被主控器执行时,实现如权利要求1-7任一项所述的基于分布式环境下的亿级数据同步方法中的各个步骤。