![数据双向实时同步系统的制作方法](http://img.xjishu.com/img/zl/2021/9/14/c8kvljxtx.jpg)
1.本发明涉及数据技术领域,特别涉及数据双向实时同步系统。
背景技术:2.数据双向实时同步系统是一种进行数据同步处理的支撑方法,企业在新老系统迭代的过程中,涉及新老系统同时在线,存在一个平滑过度期,且新老系统的存储形式、存储位置、数据结构、业务逻辑等等,完全不同,大多数据中间组件,仅支持简单业务逻辑的数据迁移和同步,随着科技的不断发展,人们对于数据双向实时同步系统的制造工艺要求也越来越高。
3.现有的数据双向实时同步系统在使用时存在一定的弊端,首先,市场上比较知名的同步组件,如阿里的canal组件,类似还有很多其他产品,主要实现是基于mysql的binlog,利用mysql的dump协议进行解析而实现同步,支持及实现单一,且仅支持mysql,比如常用的oracle、sqlserver、redis、mongo等都不支持,基于mysql的binlog,在数据库进行双主模式部署时,存在额外的数据回环同步问题,除了基于binlog之外,还存在的同步方案,就是业务双写模式,此方案,对于开发人员,工作量近乎翻倍,代码侵入性高,并且带来事务上复杂度提升,降低系统的不稳定性,另外对于新重构系统的开发人员,还要熟悉老的业务系统代码,带来沉重的梳理成本和沟通成本,不利于人们的使用,还有,双向实时同步,数据回环问题,一直没有得到有效解决或避免,新老系统,都存在实时流量,怎么控制数据是否需要同步,又带来额外的数据比对成本,并且在特殊的场景中,根本无法分辨数据的来源,也就是无法避免数据回环问题,给人们的使用过程带来了一定的不利影响,为此,我们提出数据双向实时同步系统。
技术实现要素:4.(一)解决的技术问题
5.针对现有技术的不足,本发明提供了数据双向实时同步系统,采用无侵入式数据同步客户端,同步体系为需要同步的业务系统,提供了无侵入式客户端,业务系统开发人员,只需引入客户端依赖,就可以实现数据同步,无需额外配置和开发工作,对原有系统没有影响,也不需要测试人员介入而投入新的测试成本,不限数据库类型和存储方式,实现不同数据源之间的同步,多数据源统一管理和动态切换,插件式json配置,自动映射生成同步逻辑,插件式扩展,可针对特殊逻辑做处理,接近实时同步,毫秒级同步延迟,可以有效解决背景技术中的问题。
6.(二)技术方案
7.为实现上述目的,本发明采取的技术方案为:数据双向实时同步系统,包括以下操作步骤:
8.s1:语句拦截:客户端通过mybatis的interceptor扩展,针对应用的持久层,在落库之前获取statement,获取其sql语句,实现程序数据的dml语句拦截;
9.s2:注册新事务:客户端拿到sql语句之后,如果当前线程存在事务,通过transactionsynchronizationmanager,为当前线程注册一个新的transactionsynchronizationadapter,在事务提交后,异步发送包含sql语句的同步信息至客户端;
10.s3:校验过滤转换:服务端在接收到同步信息后,根据配置文件中配置的映射关系、以及convert实现,对原sql进行校验、过滤、转换,然后发送到执行队列中;
11.s4:数据处理:服务端监听到队列中存在数据的时候,根据原数据中包含的目标数据源,对数据进行持久化执行;
12.s5:数据异常上报:数据同步的过程中,当存在异常时,直接发送到客户端中查看,数据双向实时同步完成。
13.作为一种优选的技术方案,所述数据双向实时同步系统具体包括data
‑
sync
‑
parser模块、data
‑
sync
‑
sink模块、data
‑
sync
‑
plugin模块、data
‑
sync
‑
dbm模块、data
‑
sync
‑
client模块与data
‑
sync
‑
server模块。
14.作为一种优选的技术方案,所述data
‑
sync
‑
parser模块为服务端的入口,是标准的restful接口,用于处理接收客户端发送过来的同步任务。
15.作为一种优选的技术方案,所述data
‑
sync
‑
sink模块对具体的同步任务进行数据过滤,根据配置做映射转换及校验补偿。
16.作为一种优选的技术方案,所述data
‑
sync
‑
plugin模块为扩展模块,采用插件式设计,针对同步数据加入个性的同步配置及处理逻辑。
17.作为一种优选的技术方案,所述data
‑
sync
‑
dbm模块为动态数据源的管理及监控模块,实现动态切换满足多样化的数据同步。
18.作为一种优选的技术方案,所述data
‑
sync
‑
client模块为轻量级同步客户端,无侵入式数据同步客户端,零配置零代码使用,实现数据的同步发送。
19.作为一种优选的技术方案,所述data
‑
sync
‑
server模块为集成模块,集成多有模块,编译打包脚本,作为application。
20.(三)有益效果
21.与现有技术相比,本发明提供了数据双向实时同步系统,具备以下有益效果:该数据双向实时同步系统,采用无侵入式数据同步客户端,同步体系为需要同步的业务系统,提供了无侵入式客户端,业务系统开发人员,只需引入客户端依赖,就可以实现数据同步,无需额外配置和开发工作,对原有系统没有影响,也不需要测试人员介入而投入新的测试成本,不限数据库类型和存储方式,实现不同数据源之间的同步,多数据源统一管理和动态切换,插件式json配置,自动映射生成同步逻辑,插件式扩展,可针对特殊逻辑做处理,接近实时同步,毫秒级同步延迟,客户端通过mybatis的interceptor扩展,针对应用的持久层,在落库之前获取statement,获取其sql语句,实现程序数据的dml语句拦截,客户端拿到sql语句之后,如果当前线程存在事务,通过transactionsynchronizationmanager,为当前线程注册一个新的transactionsynchronizationadapter,在事务提交后,异步发送包含sql语句的同步信息至客户端,服务端在接收到同步信息后,根据配置文件中配置的映射关系、以及convert实现,对原sql进行校验、过滤、转换,然后发送到执行队列中,服务端监听到队列中存在数据的时候,根据原数据中包含的目标数据源,对数据进行持久化执行,数据同步的过程中,当存在异常时,直接发送到客户端中查看,数据双向实时同步完成,整个数据双向
实时同步系统结构简单,操作方便,使用的效果相对于传统方式更好。
附图说明
22.图1为本发明数据双向实时同步系统的整体结构示意图。
具体实施方式
23.下面将结合附图和具体实施方式对本发明的技术方案进行清楚、完整地描述,但是本领域技术人员将会理解,下列所描述的实施例是本发明一部分实施例,而不是全部的实施例,仅用于说明本发明,而不应视为限制本发明的范围。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例中未注明具体条件者,按照常规条件或制造商建议的条件进行。所用试剂或仪器未注明生产厂商者,均为可以通过市售购买获得的常规产品。
24.实施例一:
25.如图1,数据双向实时同步系统,包括以下操作步骤:
26.s1:语句拦截:客户端通过mybatis的interceptor扩展,针对应用的持久层,在落库之前获取statement,获取其sql语句,实现程序数据的dml语句拦截;
27.s2:注册新事务:客户端拿到sql语句之后,如果当前线程存在事务,通过transactionsynchronizationmanager,为当前线程注册一个新的transactionsynchronizationadapter,在事务提交后,异步发送包含sql语句的同步信息至客户端;
28.s3:校验过滤转换:服务端在接收到同步信息后,根据配置文件中配置的映射关系、以及convert实现,对原sql进行校验、过滤、转换,然后发送到执行队列中;
29.s4:数据处理:服务端监听到队列中存在数据的时候,根据原数据中包含的目标数据源,对数据进行持久化执行;
30.s5:数据异常上报:数据同步的过程中,当存在异常时,直接发送到客户端中查看,数据双向实时同步完成。
31.进一步的,所述数据双向实时同步系统具体包括data
‑
sync
‑
parser模块、data
‑
sync
‑
sink模块、data
‑
sync
‑
plugin模块、data
‑
sync
‑
dbm模块、data
‑
sync
‑
client模块与data
‑
sync
‑
server模块。
32.进一步的,所述data
‑
sync
‑
parser模块为服务端的入口,是标准的restful接口,用于处理接收客户端发送过来的同步任务。
33.进一步的,所述data
‑
sync
‑
sink模块对具体的同步任务进行数据过滤,根据配置做映射转换及校验补偿。
34.进一步的,所述data
‑
sync
‑
plugin模块为扩展模块,采用插件式设计,针对同步数据加入个性的同步配置及处理逻辑。
35.进一步的,所述data
‑
sync
‑
dbm模块为动态数据源的管理及监控模块,实现动态切换满足多样化的数据同步。
36.进一步的,所述data
‑
sync
‑
client模块为轻量级同步客户端,无侵入式数据同步客户端,零配置零代码使用,实现数据的同步发送。
37.进一步的,所述data
‑
sync
‑
server模块为集成模块,集成多有模块,编译打包脚
本,作为application。
38.工作原理:客户端通过mybatis的interceptor扩展,针对应用的持久层,在落库之前获取statement,获取其sql语句,实现程序数据的dml语句拦截,客户端拿到sql语句之后,如果当前线程存在事务,通过transactionsynchronizationmanager,为当前线程注册一个新的transactionsynchronizationadapter,在事务提交后,异步发送包含sql语句的同步信息至客户端,服务端在接收到同步信息后,根据配置文件中配置的映射关系、以及convert实现,对原sql进行校验、过滤、转换,然后发送到执行队列中,服务端监听到队列中存在数据的时候,根据原数据中包含的目标数据源,对数据进行持久化执行,数据同步的过程中,当存在异常时,直接发送到客户端中查看,数据双向实时同步完成。
39.需要说明的是,在本文中,诸如第一和第二(一号、二号)等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
40.以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。