数据同步方法以及相关设备与流程

本技术实施例涉及数据处理领域,尤其涉及数据同步方法以及相关设备。
背景技术:
1、电商系统每天都会面对大量订单的涌入,这些订单在erp系统中进行处理。然而,随着订单状态的变更,如商品配货、退货或者库存调整,都会引发库存的变动。由于这些变更一般发生在业务端,为了保证业务端和服务端的数据一致性,就需要准确记录业务数据库的每次变动。
2、现有技术采取的方案如下:在业务端的业务数据库发生变更后,业务端会向消息中间件发送开放消息服务的消息(ons,open notification service)。ons消息中包含了关于业务数据库变更的流水记录,例如商品id、变动数量和变动类型等。随后,消息中间件会将ons消息转发给相应的消费端,以保证业务端和服务端的数据一致性。
3、在实际应用中,业务数据库变更的流水记录可能会因为各种原因丢失,从而导致业务端和服务端的数据不一致。此时,若消息中间件未留存处理业务数据库变更的流水记录,面对业务端和服务端大量的流水记录,难以进行问题排查。
技术实现思路
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、在一种具体实现方式中,所述数据变更指令由用户发起,所述消费端还包括:处理单元;
39、所述处理单元,用于基于所述流水更新消息更新所述消费端的服务数据库;
40、所述处理单元,还用于基于预设分区算法确定所述用户关联的服务流水表;
41、所述处理单元,还用于生成所述业务流水记录对应的服务流水记录;
42、所述处理单元,还用于在所述用户关联的服务流水表中存储所述服务流水记录。
43、本技术实施例第五方面提供一种计算机设备,包括:
44、中央处理器,存储器以及输入输出接口;
45、所述存储器为短暂存储存储器或持久存储存储器;
46、所述中央处理器配置为与所述存储器通信,并执行所述存储器中的指令操作以执行第一方面或第二方面所述的方法。
47、本技术实施例第六方面提供一种包含指令的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面或第二方面所述的方法。
48、本技术实施例第七方面提供一种计算机存储介质,所述计算机存储介质中存储有指令,所述指令在计算机上执行时,使得所述计算机执行如第一方面或第二方面所述的方法。
49、从以上技术方案可以看出,本技术实施例具有以下优点:通过将数据更新操作以及流水更新操作作为一个事务来处理,保证了数据更新操作和流水更新操作的原子性。换句话说,数据更新操作以及流水更新操作只会同时更新执行成功或者同时执行失败。其次,通过对业务流水记录的持续监测,及时将业务流水记录更新至需要与业务数据库保持数据一致性的消费端,实现了数据同步。在上述设计下,若业务流水记录丢失,则可以通过业务数据库是否存在对应的业务流水记录判断问题是否来自于业务端,进而缩小排查范围,无需同时对业务数据库对应的所有业务流水记录和消费端的所有流水记录进行排查。
技术研发人员:黄俞磊,孙建安,舒保益,姜中亚,陈德俊
技术所有人:上海管易云计算软件有限公司
备 注:该技术已申请专利,仅供学习研究,如用于商业用途,请联系技术所有人。
声 明 :此信息收集于网络,如果你是此专利的发明人不想本网站收录此信息请联系我们,我们会在第一时间删除
