一种云边数据实时同步方法、装置、设备及存储介质与流程
本发明涉及数据同步,特别涉及一种云边数据实时同步方法、装置、设备及存储介质。
背景技术:
1、现有云边数据同步框架通常采用周期任务方式执行同步。周期同步适用于数据量较大、实时性要求不高的场景,但在部分业务中存在明显不足:其一,数据变更后需要等待下一轮同步周期,中心或边缘端无法及时感知关键状态变化;其二,如果将所有表统一改造为高频同步,会显著增加数据库扫描、网络传输和远程调用压力;其三,如果针对每个表单独编写实时推送逻辑,会使业务代码与同步逻辑强耦合,后续新增表或调整同步策略时改动范围较大;其四,数据库更新通常处于事务内,如果在事务提交前触发同步,可能将最终回滚的数据推送到对端,造成数据不一致。
2、可见,如何提高数据同步的效率和准确性,是本领域技术人员急需解决的技术问题。
技术实现思路
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、此外,本发明还提供了一种云边数据实时同步装置、设备及计算机可读存储介质,同样具有上述有益效果。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com