一种分布式领域数据同步的方法、系统及设备与流程

    专利2022-07-08  80


    本申请涉及数据同步领域,特别涉及一种分布式领域数据同步的方法、系统、设备及可读存储介质。



    背景技术:

    随着现代社会的发展,人们对于计算机的应用越来与广泛,使得分布式存储系统得到了广泛的发展。一个完整的分布式存储系统是由很多处在不同位置的节点通过网络连接在一起形成的,海量的数据分布在整个系统的不同节点中。在读写数据的时候一个很重要的问题就是要保证每次读到的数据是可信的。这里的可信度是指数据是否为脏数据,即已经被更新过,但是在访问中并没有体现出来的数据。由于在分布式存储系统中数据量巨大,而且每个数据对象的副本数量多,因此,维护各个节点中副本的一致性是一个很关键的问题。

    现有技术中,分布式系统维护各个节点中副本的一致性的方式复杂,导致后期维护比较困难,对用户技术要求较高。

    因此,如何降低分布式系统中数据同步的复杂度是本领域技术人员目前需要解决的技术问题。



    技术实现要素:

    本申请的目的是提供一种分布式领域数据同步的方法、系统、设备及可读存储介质,用于降低分布式系统中数据同步的复杂度。

    为解决上述技术问题,本申请提供一种分布式领域数据同步的方法,该方法包括:

    拦截数据库操作请求,并确定所述数据库操作请求的操作类型;

    当所述操作类型为修改操作时,在第一数据库中执行所述数据库操作请求,并将操作结果发送至中转设备;

    将所述中转设备中的数据同步写入到第二数据库中。

    可选的,在将操作结果发送至中转设备之前,还包括:

    接收数据一致性框架的安装包,并在所述数据一致性框架中配置所述第一数据库和所述第二数据库的连接信息;

    将所述数据一致性框架的实例注入进sping容器中,并建立所述第一数据库与所述第二数据库的长连接。

    可选的,所述拦截数据库操作请求,包括:

    通过面向切面编程技术拦截所述数据库操作请求。

    可选的,在所述在第一数据库中执行所述数据库操作请求之后,还包括:

    每隔预设时间将所述操作结果以日志的形式写入硬盘中。

    可选的,还包括:

    当所述操作类型为查询操作时,在所述第二数据库中执行所述数据库操作请求,并返回对应的操作结果。

    可选的,所述修改操作包括插入操作、更新操作、删除操作中的至少一项。

    可选的,所述中转设备包括线程池设备或mq服务器。

    本申请还提供一种分布式领域数据同步的系统,该系统包括:

    拦截模块,用于拦截数据库操作请求,并确定所述数据库操作请求的操作类型;

    执行模块,用于当所述操作类型为修改操作时,在第一数据库中执行所述数据库操作请求,并将操作结果发送至中转设备;

    数据同步模块,用于将所述中转设备中的数据同步写入到第二数据库中。

    本申请还提供一种分布式领域数据同步设备,该分布式领域数据同步设备包括:

    存储器,用于存储计算机程序;

    处理器,用于执行所述计算机程序时实现如上述任一项所述分布式领域数据同步的方法的步骤。

    本申请还提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述分布式领域数据同步的方法的步骤。

    本申请所提供分布式领域数据同步的方法,包括:拦截数据库操作请求,并确定数据库操作请求的操作类型;当操作类型为修改操作时,在第一数据库中执行数据库操作请求,并将操作结果发送至中转设备;将中转设备中的数据同步写入到第二数据库中。

    本申请所提供的技术方案,通过拦截数据库操作请求,并在操作类型为修改操作时,先在第一数据库中执行该数据库操作请求,然后将操作结果发送至中转设备,最后将中转设备中的数据同步写入到第二数据库中,与现有技术相比,本申请不需要搭建中间服务器,减少了对服务器系统资源的占用,而且操作便捷,极大的降低了分布式系统中数据同步的复杂度。本申请同时还提供了一种分布式领域数据同步的系统、设备及可读存储介质,具有上述有益效果,在此不再赘述。

    附图说明

    为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

    图1为本申请实施例所提供的一种分布式领域数据同步的方法的流程图;

    图2为本申请实施例所提供的一种分布式领域数据同步的系统的结构图;

    图3为本申请实施例所提供的一种分布式领域数据同步设备的结构图。

    具体实施方式

    本申请的核心是提供一种分布式领域数据同步的方法、系统、设备及可读存储介质,用于降低分布式系统中数据同步的复杂度。

    为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

    谈到数据的一致性,就必须谈到redis数据库和mysql数据库的数据一致性问题,这也是互联网公司必须解决的问题。以redis数据库为例,redis数据库以其天生的优势占据大部分互联网公司的非关系型数据库的市场,其优势在于redis数据库是一个单线程的nosql服务器,不会存在线程安全的问题,其次由于redis底层基于nio的io模型,nio就是一个io的多路复用机制使得redis数据库为什么是单线程并且效率非常快的因素;而且,redis数据库速度快,有很丰富的数据结构,支持list,string,set等数据类型。而mysql数据库以其出色的性能和开源的特点占据了绝大部分的互联网企业数据库市场。

    目前市面上有很多种的数据一致性的协议,例如zookeeper,它的数据一致性遵循的是zab原子广播协议做为数据一致性的算法;而一致性hash算法也是在分布式缓存中提出的,具有平衡性、分散性、单调性、分散性、负载性,平滑性等性质特点。

    然而,现有的数据一致性框架的技术栈非常的多,比较复杂。写此框架必须具备java反射、并发编程、多线程、设计模式、自定义注解、自定义aqs、aop的思想、maven、redis、mysql、elasticsearch等技术栈。不仅要知道如何使用,还要懂其原理,导致其后期的维护比较困难,因为后期肯定还要进行版本迭代。而且测试的时间比较长,必须经过反复的使用和测试(在生产环境进行使用);故本申请提供了一种分布式领域数据同步的方法,用于解决上述问题。

    请参考图1,图1为本申请实施例所提供的一种分布式领域数据同步的方法的流程图。

    其具体包括如下步骤:

    s101:拦截数据库操作请求,并确定数据库操作请求的操作类型;

    这里提到的数据库操作请求的操作类型可以包括修改操作和查询操作,当检测到输入的数据库操作请求时,本申请先拦截该数据库操作请求,并确定数据库操作请求的操作类型,进而确定下一步的操作,当该操作类型为修改操作时,则执行步骤s102对应的操作;

    可选的,这里提到的拦截数据库操作请求,其具体可以为:

    通过面向切面编程技术拦截数据库操作请求。

    其中,面向切面编程技术是通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能,是软件开发中的一个热点,也是spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用面向切面编程技术可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

    s102:当操作类型为修改操作时,在第一数据库中执行数据库操作请求,并将操作结果发送至中转设备;

    在本步骤中,在第一数据库中执行数据库操作请求,并将操作结果发送至中转设备的目的在于,将中转设备中的数据同步写入到第二数据库中,进而实现数据同步,即实现分布式系统中的数据一致性;

    可选的,为实现第一数据库中执行数据库操作请求得到的操作结果能够同步写入到第二数据库中,在将操作结果发送至中转设备之前,还可以执行如下步骤实现第一数据库和第二数据库的长连接:

    接收数据一致性框架的安装包,并在数据一致性框架中配置第一数据库和第二数据库的连接信息;

    将数据一致性框架的实例注入进sping容器中,并建立第一数据库与第二数据库的长连接。

    这里提到的sping容器为spring框架的核心,sping容器用于创建对象,并把对象连接在一起进行配置,管理对象从创建到销毁的整个生命周期,当引入此框架时,如果mysql服务器和redis服务器正在正常运行时,就会自动的进行长连接,如果发生异常会进行补偿重试。

    在一个具体实施例中,本申请使用keepalive进行完成长连接的功能,这里以mysql数据库和redis数据库保持长连接来说,开启keepalive功能以后,mysql数据库就会在自动的在规定时间内向redis数据库发送心跳检测包,redis数据库则会回应,告诉mysql数据库是否正常运行;还可以根据业务场景对keepaliv超时时间进行设置。

    这里提到的修改操作即为需要对数据库中的数据进行修改的操作,可选的,这里提到的修改操作可以包括插入操作、更新操作、删除操作中的至少一项。

    可选的,这里提到的中转设备可以包括线程池设备或mq服务器;

    在一个具体实施例中,还可以根据项目的大小来判定使用线程池或者第三方mq服务器,如果数据量和并发量比较小的话则使用线程池设备作为中转设备,如果需要高并发则可以使用mq服务器作为中转设备。

    可选的,这里提到的将操作结果发送至中转设备,其具体可以为将操作结果异步写入到中转设备中,以降低数据同步对网络资源的需求。

    可选的,为避免出现mysql数据库和redis数据库在数据同步的过程中断电或者服务器宕机,进而导致数据丢失,所有必须使用持久化机制保证数据的不丢失,即在在第一数据库中执行数据库操作请求之后,还可以执行如下步骤保证数据的持久化:

    每隔预设时间将操作结果以日志的形式写入硬盘中。

    可选的,当该操作类型为查询操作时,则还可以在第二数据库中执行数据库操作请求,并返回对应的操作结果。

    可选的,这里以第一数据库为mysql数据库,第二数据库为redis数据库为例,在一个具体实施例中,可以将插入/删除/更新/查询操作进行获取。存储到一个集合里面。然后通过面向切面编程技术进行拦截,这时判断拦截到的数据库操作请求的操作语句为修改语句还是查询语句,如果是查询语句,则会直接读取redis据库中的数据;

    如果为修改语句,则会在修改保存到第一数据库以后才会进行异步的发送给线程池或者第三方mq服务器。如果事务没有提交,回滚了,则会将这个操作在数组中移除掉。

    s103:将中转设备中的数据同步写入到第二数据库中。

    可选的,这里提到的第二数据库具体也可以为搜索服务器elasticsearch,elasticsearch是一个基于lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,基于restfulweb接口。elasticsearch是用java语言开发的,并作为apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎,elasticsearch用于云计算中,能够达到实时搜索,具有稳定、可靠、快速、安装使用方便等优点。

    基于上述技术方案,本申请所提供的一种分布式领域数据同步的方法,通过拦截数据库操作请求,并在操作类型为修改操作时,先在第一数据库中执行该数据库操作请求,然后将操作结果发送至中转设备,最后将中转设备中的数据同步写入到第二数据库中,与现有技术相比,本申请不需要搭建中间服务器,减少了对服务器系统资源的占用,而且操作便捷,极大的降低了分布式系统中数据同步的复杂度。

    请参考图2,图2为本申请实施例所提供的一种分布式领域数据同步的系统的结构图。

    该系统可以包括:

    拦截模块100,用于拦截数据库操作请求,并确定数据库操作请求的操作类型;

    执行模块200,用于当操作类型为修改操作时,在第一数据库中执行数据库操作请求,并将操作结果发送至中转设备;

    数据同步模块300,用于将中转设备中的数据同步写入到第二数据库中。

    在上述实施例的基础上,在一个具体实施例中,该系统还可以包括:

    接收模块,用于接收数据一致性框架的安装包,并在数据一致性框架中配置第一数据库和第二数据库的连接信息;

    建立模块,用于将数据一致性框架的实例注入进sping容器中,并建立第一数据库与第二数据库的长连接。

    在上述实施例的基础上,在一个具体实施例中,该拦截模块100可以包括:

    拦截子模块,用于通过面向切面编程技术拦截数据库操作请求。

    在上述实施例的基础上,在一个具体实施例中,该系统还可以包括:

    写入模块,用于每隔预设时间将操作结果以日志的形式写入硬盘中。

    在上述实施例的基础上,在一个具体实施例中,该系统还可以包括:

    返回模块,用于当操作类型为查询操作时,在第二数据库中执行数据库操作请求,并返回对应的操作结果。

    在上述实施例的基础上,在一个具体实施例中,该修改操作可以包括插入操作、更新操作、删除操作中的至少一项。

    在上述实施例的基础上,在一个具体实施例中,该中转设备可以包括线程池设备或mq服务器。

    由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

    请参考图3,图3为本申请实施例所提供的一种分布式领域数据同步设备的结构图。

    该分布式领域数据同步设备400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)422(例如,一个或一个以上处理器)和存储器432,一个或一个以上存储应用程序442或数据444的存储介质430(例如一个或一个以上海量存储设备)。其中,存储器432和存储介质430可以是短暂存储或持久存储。存储在存储介质430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对装置中的一系列指令操作。更进一步地,处理器422可以设置为与存储介质430通信,在分布式领域数据同步设备400上执行存储介质430中的一系列指令操作。

    分布式领域数据同步设备400还可以包括一个或一个以上电源424,一个或一个以上有线或无线网络接口450,一个或一个以上输入输出接口458,和/或,一个或一个以上操作系统441,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

    上述图1所描述的分布式领域数据同步的方法中的步骤由分布式领域数据同步设备基于该图3所示的结构实现。

    所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

    在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

    作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

    另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

    集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,功能调用装置,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

    以上对本申请所提供的一种分布式领域数据同步的方法、系统、设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

    还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。


    技术特征:

    1.一种分布式领域数据同步的方法,其特征在于,包括:

    拦截数据库操作请求,并确定所述数据库操作请求的操作类型;

    当所述操作类型为修改操作时,在第一数据库中执行所述数据库操作请求,并将操作结果发送至中转设备;

    将所述中转设备中的数据同步写入到第二数据库中。

    2.根据权利要求1所述的方法,其特征在于,在将操作结果发送至中转设备之前,还包括:

    接收数据一致性框架的安装包,并在所述数据一致性框架中配置所述第一数据库和所述第二数据库的连接信息;

    将所述数据一致性框架的实例注入进sping容器中,并建立所述第一数据库与所述第二数据库的长连接。

    3.根据权利要求1所述的方法,其特征在于,所述拦截数据库操作请求,包括:

    通过面向切面编程技术拦截所述数据库操作请求。

    4.根据权利要求1所述的方法,其特征在于,在所述在第一数据库中执行所述数据库操作请求之后,还包括:

    每隔预设时间将所述操作结果以日志的形式写入硬盘中。

    5.根据权利要求1所述的方法,其特征在于,还包括:

    当所述操作类型为查询操作时,在所述第二数据库中执行所述数据库操作请求,并返回对应的操作结果。

    6.根据权利要求1所述的方法,其特征在于,所述修改操作包括插入操作、更新操作、删除操作中的至少一项。

    7.根据权利要求1所述的方法,其特征在于,所述中转设备包括线程池设备或mq服务器。

    8.一种分布式领域数据同步的系统,其特征在于,包括:

    拦截模块,用于拦截数据库操作请求,并确定所述数据库操作请求的操作类型;

    执行模块,用于当所述操作类型为修改操作时,在第一数据库中执行所述数据库操作请求,并将操作结果发送至中转设备;

    数据同步模块,用于将所述中转设备中的数据同步写入到第二数据库中。

    9.一种分布式领域数据同步设备,其特征在于,包括:

    存储器,用于存储计算机程序;

    处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述分布式领域数据同步的方法的步骤。

    10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述分布式领域数据同步的方法的步骤。

    技术总结
    本申请公开了一种分布式领域数据同步的方法,包括:拦截数据库操作请求,并确定数据库操作请求的操作类型;当操作类型为修改操作时,在第一数据库中执行数据库操作请求,并将操作结果发送至中转设备;将中转设备中的数据同步写入到第二数据库中。本申请通过拦截数据库操作请求,并在操作类型为修改操作时,先在第一数据库中执行该数据库操作请求,然后将操作结果发送至中转设备,最后将中转设备中的数据同步写入到第二数据库中,本申请不需要搭建中间服务器,减少了对服务器系统资源的占用,而且操作便捷,极大的降低了分布式系统中数据同步的复杂度。本申请同时还提供了一种分布式领域数据同步的系统、设备及可读存储介质,具有上述有益效果。

    技术研发人员:孙乘雨;范渊;刘博
    受保护的技术使用者:杭州安恒信息技术股份有限公司
    技术研发日:2020.12.11
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-21868.html

    最新回复(0)