本申请涉及数据处理,尤其涉及一种数据同步方法、装置、设备及计算机可读存储介质。
背景技术:
1、数据同步是一种不同应用和不同形式数据库之间进行数据共享的技术方案。数据同步主要分为存量数据铺底和增量数据同步两个过程。增量数据同步因为其对数据同步实时性的要求成为了数据同步设计中的关键。
2、增量数据同步目的是在数据库类型甚至数据表结构存在差异的情况下,将某个数据库中新增的数据库操作实时地传输给不同的应用和数据库,并保证数据的可靠性和最终一致性。
3、目前,异构数据库之间的增量数据同步主要采用kettle、gg,sqoop等开源工具,这些数据同步工具均具有实时性低,并且在同步过程中对系统性能影响较大的缺点。
技术实现思路
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、在本申请实施例中,从消息队列中获取待处理消息;将待处理消息登记到待处理消息登记簿中;利用多线程中的第一线程对第一待处理消息进行消息处理,得到第一待验证消息;利用第一线程对第一待验证消息对应的数据进行版本验证;在第一待验证消息对应的数据通过版本验证的情况下,利用第一线程对第一待验证消息对应的数据执行第一待验证消息中的数据库操作。本申请实施例通过多线程异步处理方式对待处理消息进行数据同步,提高了大数据量数据同步的实时性需求,同时通过版本验证环节来避免多线程异步情况下导致的消息无序性,提高了数据同步的效率和准确性。
1.一种数据同步方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,在所述利用所述第一线程对所述第一待验证消息对应的数据进行版本验证之后,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,在所述将所述第一待验证消息登记在待重试消息登记簿中之后,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,在所述对所述待重试列表的每一所述待重试消息对应的数据进行版本验证之后,所述方法还包括:
5.根据权利要求1至4任一项所述的方法,其特征在于,在所述利用所述第一线程对所述第一待验证消息对应的数据执行所述第一待验证消息中的数据库操作之后,所述方法还包括:
6.一种数据同步装置,其特征在于,所述装置包括:
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
9.一种计算机设备,其特征在于,包括:存储器以及处理器;
10.一种计算机可读存储介质,其特征在于,存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1至5任一项所述的方法。