基于服务锁的数据同步方法及装置、电子设备与存储介质与流程

文档序号:21363007发布日期:2020-07-04 04:37阅读:192来源:国知局
基于服务锁的数据同步方法及装置、电子设备与存储介质与流程

本申请涉及计算机技术领域,尤其涉及数据存储技术领域,具体涉及一种基于服务锁的数据同步方法及装置、电子设备与存储介质。



背景技术:

目前,数据同步的场景通常是数据库集群间的数据同步、数据库与缓存间的数据同步等,在这些场景下数据的格式通常是固定的,数据同步方案实现较为简单。而对于不同格式的数据库,如关系型数据库与nosql数据库间数据同步的方案,现有技术中具体可以采用手动的方式,将数据从关系型数据库中导出,利用工具,转换为nosql数据库的存储格式,在nosql数据库中创建新的索引,将转换后的数据导入新的索引中。

而在多写入源多数据库的应用场景中,例如,某种数据存储系统中,存在至少两种类型的数据库,如包括有关系型数据库和nosql数据库。其中,关系型数据库存储基础数据,nosql数据库对待提供数据查询服务,作为数据查询引擎使用。该场景下,由于存在多个写入源,多个数据库,数据同步的过程若采用现有的上述手动方式来实现,自动化程度低,人力成本高;数据的准确性完全依赖于人工操作,可靠性低;而且同步过程分析过于独立,未考虑多写入源的限制,因此,亟需提供一种多写入源多数据库的数据存储系统中的数据同步方案。



技术实现要素:

为了解决上述技术问题,本申请提供一种基于服务锁的数据同步方法及装置、电子设备与存储介质,用于提供一种多写入源多数据库的数据存储系统中的数据同步方案。

一方面,本申请提供一种基于服务锁的数据同步方法,所述方法适用于处理多写入源多数据库的数据存储系统中的数据同步,包括:

基于写入源的数据写入请求,为所述写入源配置数据表的服务锁;所述数据写入请求中携带所述写入源的标识和所述数据表的标识;

解析所述数据写入请求对应的同步任务;

执行所述同步任务,使得各所述数据库中存储的所述数据表的数据一致。

进一步可选地,如上所述的方法中,为所述写入源配置数据表的服务锁,包括:配置所述服务锁的信息,所述服务锁的信息包括所述写入源的标识、所述数据表的标识以及所述服务锁的状态,所述服务锁的状态设置为占用。

进一步可选地,如上所述的方法中,解析所述数据写入请求对应的同步任务,包括:解析所述数据写入请求对应的所述同步任务,并编排生成任务链,所述任务链中至少顺次包括:创建同步任务、执行同步任务和删除同步任务;

或者,在所述任务链中的所述创建同步任务之后,所述执行同步任务之前,还包括数据写入任务。

进一步可选地,如上所述的方法中,为所述写入源配置数据表的服务锁之后,解析所述数据写入请求对应的同步任务之前,所述方法还包括:

创建所述数据写入请求对应的任务,并将任务标识及对应的任务状态存储在任务管理数据库中;所述任务状态为未执行;

对应地,解析所述数据写入请求对应的同步任务之前,还包括:

从所述任务管理数据库中获取未执行的所述任务。

进一步可选地,如上所述的方法中,执行所述同步任务,包括:

调度主节点服务器上的多个任务执行器分别执行所述任务链中的各任务;

将所述任务管理数据库中对应的所述任务的状态修改为执行中;

调度主节点服务器上的多个任务执行器分别执行所述任务链中的各任务之前,还包括:

控制部署的多个服务器中的各所述服务器检测自身是否为主节点服务器。

进一步可选地,如上所述的方法中,控制部署的多个服务器中的各所述服务器检测自身是否为主节点服务器,包括:

控制各所述服务器向选主模块发送携带所述服务器的节点标识和所述任务标识的选主请求;由所述选主模块检测是否有其他服务器执行所述任务标识对应的任务,若没有,将所述服务器设置为主节点服务器,并将检测结果反馈给所述服务器。

进一步可选地,如上所述的方法中,执行所述同步任务之后,所述方法还包括:

将所述任务管理数据库中对应的所述任务的状态修改为执行完;

将配置的所述服务锁的信息中所述服务锁的状态修改为已释放。

另一方面,本申请还提供了一种基于服务锁的数据同步装置,所述装置适用于处理多写入源多数据库的数据存储系统中的数据同步,包括:

锁服务组件,用于基于写入源的数据写入请求,为所述写入源配置数据表的服务锁;所述数据写入请求中携带所述写入源的标识和所述数据表的标识;

任务调度器,用于解析所述数据写入请求对应的同步任务;

任务执行器,用于执行所述同步任务,使得各所述数据库中存储的所述数据表的数据一致。

再一方面,本申请还提供了一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上任一项所述的方法。

又一方面,本申请还提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如上任一项所述的方法。

上述申请中的一个实施例具有如下优点或有益效果:通过基于写入源的数据写入请求,为写入源配置数据表的服务锁;数据写入请求中携带写入源的标识和数据表的标识;解析数据写入请求对应的同步任务;执行同步任务,使得各数据库中存储的数据表的数据一致,能够提供一套适用于多写入源多数据库的数据存储系统中的完整的数据同步机制,能够在数据写入时配置的服务锁的保护下,执行数据同步操作,保证数据同步操作的安全性和数据的准确性,而且也能够有效地保证各数据库之间的数据的一致性。

进一步地,本申请还可以采用任务管理数据库对所有的任务进行综合管理,在任务调度器的调度下,由主节点服务器对未执行的任务进行选取和执行,可以有效地保证同步任务执行的安全性和数据的准确性。

进一步地,本申请还能够在任务执行中对任务的状态进行更新,避免任务被多次执行,确保数据同步的准确性和数据的一致性。同时还能够对服务锁的状态进行及时更新,能够有效地保证系统中数据的安全性。

上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。

附图说明

附图用于更好地理解本方案,不构成对本申请的限定。其中:

图1是根据本申请第一实施例的示意图;

图2为本实施例提供的一种多写入源多数据库的数据存储系统的应用架构图;

图3是本申请第二实施例的示意图;

图4为图3所示实施例的应用架构图;

图5是根据本申请第三实施例的示意图;

图6是用来实现本申请实施例的基于服务锁的数据同步方法的电子设备的框图。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本申请第一实施例的示意图,如图1所示,详细介绍了一种基于服务锁的数据同步方法,该适用于处理多写入源多数据库的数据存储系统中的数据同步,具体可以包括如下步骤:

s101、基于写入源的数据写入请求,为写入源配置数据表的服务锁;数据写入请求中携带写入源的标识和数据表的标识;

本实施例的基于服务锁的数据同步方法的执行主体可以为基于服务锁的数据同步装置,该基于服务锁的数据同步装置可以设置在多写入源多数据库的数据存储系统中,用于在某个写入源向存储数据库中写入数据时,建立相应的服务锁,并基于该服务锁进一步实现各数据库间的数据同步,从而能够保证数据存储系统中的数据的准确性和一致性。

例如,图2为本实施例提供的一种多写入源多数据库的数据存储系统的应用架构图。如图2所示,以包括a和b两个数据库为例,其中数据库a负责数据写入的操作,数据库b负责数据读取的操作,数据库b的数据是由数据库a中的数据同步过来的。c和d为两个数据写入源,其中c可以为用户,d表示数据管理员。

当用户c修改了数据库a中一条数据,在数据库a中的数据尚未同步到数据库b之前,数据管理员d也修改了相同的数据,此时,当数据同步完成后,用户c所做的修改便被覆盖了,并且无法得知自己的操作是否成功。因此,在多写入源、多数据库的场景下,亟需提供一种基于服务锁的数据同步机制,以保证数据的一致性和准确性。

图2所示实施例是以两个写入源为例,实际应用中,还可以有其他更多的用户对数据库a进行写入操作。另外,可选地,本实施例中也还可以包括其他更多的数据库,在同步时,均可以采用数据库a的数据去同步其他数据库中的数据。

具体地,本实施例的写入源可以为数据管理员即数据存储系统的管理员,也可以为普通用户。在使用时,使用者可以登录该数据存储系统的客户端,发起数据写入请求,例如该数据写入请求中可以携带写入源的标识以及请求数据写入的数据表的标识。其中写入源的标识用于唯一标识该写入源。例如若系统存在多个数据管理员时,对应的数据管理员的标识可以分别为administrator1、administrator2等等,用户的标识可以为user1、user2等等。本实施例的数据表的标识具体可以为数据表的名称。

本实施例的数据写入请求可以采用接口调用的方式发起的请求,例如该请求可以为超文本传输协议(hypertexttransferprotocol;http)请求。

例如,本实施例中的数据写入请求也可以认为是写入源发起的加锁请求,写入源发起该请求,是用于请求数据处理装置先为该写入源配置该数据表的服务锁,以便于该写入源占有该数据表的操作权,能够对该数据表进行数据写入操作。但是由于数据管理员和任何一个用户均可以对数据表进行数据写入操作,基于服务锁的数据同步装置接收到该请求后,可以先检测该数据表的操作权是否被管理员或者其他用户占用;若占用,向该写入源反馈该数据表的操作权已被占用,结束。否则,若未占用,可以为该写入源配置该数据表的服务锁,这样可以进入数据维护期,使得该写入源可以占用该数据表的操作权,能够对该数据表进行操作。

例如,本实施例中,可以直接配置一条服务锁的信息,实现为该写入源配置该数据表的服务锁。该服务锁的信息包括写入源的标识、数据表的标识以及服务锁的状态,由于该服务锁为写入源配置的,此时服务锁的状态需要设置为占用。对于每一个未被占用的数据表,基于服务锁的数据同步装置均可以按照上述方式为首次请求数据表的操作权的写入源配置服务锁的信息,并存储,相当于为该写入源分配服务锁。实际应用中,所有服务锁的信息可以按照列表的方式一条一条存储。

进一步地,该服务锁的信息中还可以包括该服务锁的建立时刻等等信息,以便于在服务锁被遗忘,未被及时释放时,可以设置一个超期时长,在服务锁占用时长超过超期时长时,可以强制释放服务锁。本实施例中,服务锁的状态还可以根据场景的不同设置为释放或者已释放。

进一步可选地,若写入源为数据管理员,由于数据管理员通常修改的数据量较大,写入时间较长,同步时间更长,此时,除了配置服务锁的信息之外,还需要在存储数据库中单独为该数据表执行加锁操作,以保证该数据表被该数据管理员进行数据写入操作时,数据的安全性和准确性。而多写入源为普通用户,考虑到普通用户通常修改数据量较少,而不用再单独在存储数据库中为该数据表执行加锁操作。仅通过配置一条服务锁的信息即可。

s102、解析数据写入请求对应的同步任务;

s103、执行同步任务,使得各数据库中存储的数据表的数据一致。

在上述步骤s101的限制下,在写入源写入数据时,为该写入源要写入的数据表配置服务锁后,可以执行数据写入操作,实际应用中数据写入操作的执行较为简单,少量的数据可以在数据写入请求中直接携带数据写入操作信息,而大量的数据,也可以在服务锁添加之后,反馈用户加锁成功的消息后,由用户或者数据管理员进行数据写入操作。

由于本实施例的数据存储系统中包括多个数据库,为了保证数据库间的数据一致性,本实施例中,在数据写入之后,务必要执行数据同步。具体地,可以先解析数据写入请求对应的同步任务,可以编排生成相应的任务链。

本实施例中,为了保证数据写入效果,对于用户和数据管理员的写入可以设置不同的方式,例如,用户的写入涉及数据量少,用户的写入可以设置为及时写入;而数据管理员的写入涉及数据量大,数据管理员的写入可以为非及时写入。

对于用户的及时写入,可以在数据写入请求中直接携带数据写入操作信息;而对于数据管理员的非及时写入,可以不在数据写入请求中携带数据写入操作信息。此时解析数据写入请求对应的同步任务,并编排生成的任务链中可以依次包括创建同步任务、数据写入任务、执行同步任务和删除同步任务。本实施例的数据写入操作信息包括但不限于数据的写入、更新、删除。

上述实施例中的解析的两种情况的任务仅为两种举例,实际场景中,还可以根据实际的数据写入请求,解析出其他更多的任务,在此不再一一举例赘述。

而是由数据管理员先申请加锁,加锁成功后,数据管理员先进行数据写入操作,写入操作完成后,数据管理员可以先申请释放锁,在存储数据库中释放服务锁的同时,触发同步任务启动,但是此时配置的服务锁的信息中该服务锁的状态仍为释放中,此时该数据表还处于数据维护期,其他用户或者数据管理员无法占用对该数据表的操作权。此时由于数据写入操作已完成,解析数据写入请求对应的同步任务,编排生成的任务链中可以依次包括创建同步任务、执行同步任务和删除同步任务。

最后,执行同步任务,如执行解析后编排生成的任务链中的各任务,本实施例中,可以采用多个任务执行器分别执行任务链中的各任务。本实施例中同步任务是以数据表为粒度的同步,即将存储数据库中发生数据写入的整张数据表同步至其他数据库中,从而使得各数据库中存储的数据表的数据一致。

本实施例的基于服务锁的数据同步方法,通过基于写入源的数据写入请求,为写入源配置数据表的服务锁;数据写入请求中携带写入源的标识和数据表的标识;解析数据写入请求对应的同步任务;执行同步任务,使得各数据库中存储的数据表的数据一致,能够提供一套适用于多写入源多数据库的数据存储系统中的完整的数据同步机制,能够在数据写入时配置的服务锁的保护下,执行数据同步操作,保证数据同步操作的安全性和数据的准确性,而且也能够有效地保证各数据库之间的数据的一致性。

图3是本申请第二实施例的示意图。如图3所示,本实施例详细描述在多写入源多数据库的数据存储系统中的数据同步方案。如图3所示,本实施例的基于服务锁的数据同步方法,具体可以包括如下步骤:

s301、基于服务锁的数据同步装置中的锁服务组件接收写入源的数据写入请求;该数据写入请求中携带写入源的标识和数据表的标识;

s302锁服务组件检测该数据表的操作权是否已经被占用;若该数据表的操作权已经被占用,则执行步骤s303;否则执行步骤s304;

具体地,在本实施例中,在锁服务组件中记录有存储数据库中每一条服务锁的信息,每一条服务锁的信息中可以包括写入源的标识即申请服务锁的人员的标识、数据表的名称以及服务锁的状态,例如服务锁的状态可以包括:占用、释放中以及已释放。锁服务组件根据记录的所有服务锁的信息,可以检测该数据表的操作权是否被占用。

在实际应用中,对于已释放的服务锁,在锁服务组件中可以仅保留一段时间长度,便可以删除相应的服务锁的信息。

s303、锁服务组件将该数据表的操作权已经被占用的消息返回给写入源;结束。

s304、锁服务组件配置服务锁的信息;

s305、任务调度器创建数据写入请求对应的同步任务,并将任务标识及对应的任务状态存储在任务管理数据库中;

此时创建的任务还未执行,对应将任务状态设置为未执行。后续操作中,该任务状态还可以为执行中或者已执行。

数据存储系统的所有数据同步任务,均可以一条一条地记录在该任务管理数据库中。

s306、任务调度器从任务管理数据库中获取未执行的同步任务;并解析任务对应的数据写入请求,得到相应的任务链;

例如,若用户为写入源,对应的任务链为创建同步任务、数据写入任务、执行同步任务和删除同步任务。而若数据管理员为写入源,对应的任务链为创建同步任务、执行同步任务和删除同步任务。

s307、任务调度器调度主节点服务器上的多个任务执行器分别执行任务链中的各任务;

s308、任务调度器将任务管理数据库中对应的任务的状态修改为执行中;

首先,任务调度器需要从部署的多个服务器上选择执行该任务的主节点服务器。具体地操作过程可以为:任务调度器控制部署的多个服务器中的各服务器检测自身是否为主节点服务器。具体检测时,可以由各服务器向选主模块发送携带服务器的节点标识和任务标识的选主请求;由选主模块检测是否有其他服务器执行任务标识对应的任务,若没有,将服务器设置为主节点服务器,并将检测结果反馈给服务器。同时,选主模块还在自身中记录主节点服务器的标识和要执行的任务标识。

需要说明的是,多个服务器上的一组任务执行器为一个服务部署在不同服务器上的服务实例,在任务执行过程中,可能多组任务执行器均能够获取到未执行的任务,但每个服务器通过选主模块的检测,若确定自身为非主节点服务器,则可以忽略任务,不执行;如果是主节点服务器,则执行数据同步的任务。当然若只有一个服务器,所有由该服务器执行即可,不用再进行主节点的检测。

任务执行器执行同步任务的过程中,可以从来源数据库(如存储数据库)获取数据表中的数据;然后经过数据适配器,转换为适配于目标数据库的数据格式;进一步地,将经过数据适配器转换后的数据存入目标数据库,从而实现对目标数据中该数据表中的数据进行同步更新。即该同步过程中,是以数据表为粒度的同步。

s309、任务调度器检测到主节点服务器上的多个任务执行器执行完毕后,将任务管理数据库中对应的任务的状态修改为执行完;

s310、任务调度器反馈锁服务组件任务执行完毕;

s311、锁服务组件将配置的服务锁的信息中服务锁的状态修改为已释放。

需要说明的是,本实施例的过程,重点强调的是基于服务锁的数据的同步任务的执行过程。本实施例的服务锁的建立和释放过程还可以随着写入源的不同而不同。

例如写入源为用户,参考本实施例的技术方案,步骤s301可以认为是写入数据的同时申请的加锁请求,步骤s304为服务锁的配置,此时不需要在存储数据库中单独执行加锁操作。按照本实施例的步骤,在执行同步任务的过程中,完成数据的写入。

而若写入源为数据管理源,如上述实施例所示,同步任务中没有数据写入操作。在步骤s304配置服务锁之后,步骤s305之前,还可以包括如下步骤:

(a)在存储数据库中对该数据表执行加锁的操作;并将加锁成功的消息返回给该数据管理员;

(b)基于数据管理员执行的数据写入操作,在存储数据库中执行数据写入操作;

(c)数据管理员数据写入操作完成后,发起锁释放请求;该锁释放请求中可以包括数据管理员的标识以及数据表的名称;

(d)锁服务组件接收数据管理员的锁释放请求,检测该数据表是否满足释放条件;若满足,执行步骤(e);否则返回数据管理员,不满足释放条件,结束。

本实施例中,检测该数据表是否满足释放条件,具体可以包括检测该数据表的服务锁是否存在、是否过期以及是否被当前的数据管理员占用;若该数据表的服务锁确实存在,且没有过期,也是被当前的数据管理员占用,则确定满足释放条件;否则若数据表的服务锁不存在、或者数据表的服务锁已过期或者该服务锁不是被当前的数据管理员占用,此时均不满足释放条件。

具体地,若不满足释放条件,还可以进一步将错误信息返回给数据管理员,如错误信息可以包含但不限于“未获得数据表的操作权限”、“数据表操作权限过期”、“请求参数错误”等等。

(e)锁服务组件请求任务调度器为该数据表释放锁;

(f)任务调度器在存储数据库中释放为数据管理员配置的数据表的服务锁;

(g)锁服务组件修改配置的服务锁的信息中服务锁的状态为释放中;并将服务锁释放中的消息返回给数据管理员;后续便可以从步骤s305开始执行同步任务。

进一步地,在步骤s310之后,锁服务组件还可以向写入源反馈结果。如写入源为用户,由于之前的请求建立的链路还在可以直接向用户反馈数据写入完成。而若写入源为数据管理员,之前建立的请求链路已经释放,此时需要通过通知服务组件告知数据管理员,服务锁已经释放。例如,通知服务组件可以通过短信或者邮件的方式将所释放完成的消息通知数据管理员。

进一步地,本实施例中,为避免数据管理员在导入数据完成后,忘记申请释放锁,导致数据表无法释放的情况发生,锁服务组件为每个服务锁设置过期时长,并还可以设置定时检测服务组件周期性地对服务锁进行校验,校验服务锁是否超时,即周期性地检测配置的服务锁的占用时长是否超出预设时间长度;当服务锁的占用时长超过预设时间长度,则认为该服务锁过期,通知锁服务组件自动释放服务锁,由锁服务组件通知任务调度器在存储数据库中释放服务锁;并通过通知服务将锁释放的消息通知数据管理员。其中锁服务组件在配置服务锁时,记录每个服务锁的占用开始时刻,可以记录在服务锁的信息中。预设时间长度可以根据实际经验来设置。

本实施例的基于服务锁的数据同步方法,通过采用上述技术方案,能够提供一套适用于多写入源多数据库的数据存储系统中的完整的数据同步机制,能够在数据写入时配置的服务锁的保护下,执行数据同步操作,保证数据同步操作的安全性和数据的准确性,而且也能够有效地保证各数据库之间的数据的一致性。

而且,本实施例中,采用任务管理数据库对所有的任务进行综合管理,在任务调度器的调度下,由主节点服务器对未执行的任务进行选取和执行,可以有效地保证同步任务执行的安全性和数据的准确性。

再者,本实施例中,能够在任务执行中对任务的状态进行更新,避免任务被多次执行,确保数据同步的准确性和数据的一致性。同时还能够对服务锁的状态进行及时更新,能够有效地保证系统中数据的安全性。

图4为图3所示实施例的应用架构图。如图4所示,本实施例中以基于服务锁的数据同步装置中包括锁服务组件、任务调度器、任务执行器、数据适配器、定时检测服务组件等为例。其中本实施例以包括四个任务执行器为例,如:创建任务执行器(createtaskexecutor)、更新数据执行器(updatedataexecutor)、同步任务执行器(synctaskexecutor)、删除任务执行器(deletetaskexecutor)。且图4所示的实施例中以包括来源数据库和目标数据库两个数据库为例。按照上述图3所示实施例的数据处理方法可以在图4所示的应用架构中实现相应的数据处理。

图5是根据本申请第三实施例的示意图;如图5所示,本实施例的基于服务锁的数据同步装置500,适用于处理多写入源多数据库的数据存储系统中的数据同步,该装置包括:

锁服务组件501用于基于写入源的数据写入请求,为写入源配置数据表的服务锁;数据写入请求中携带写入源的标识和数据表的标识;

任务调度器502用于解析数据写入请求对应的同步任务;

任务执行器503用于执行同步任务,使得各数据库中存储的数据表的数据一致。

进一步地,本实施例的基于服务锁的数据同步装置500中,锁服务组件501,用于配置服务锁的信息,服务锁的信息包括写入源的标识、数据表的标识以及服务锁的状态,服务锁的状态设置为占用。

进一步地,本实施例的基于服务锁的数据同步装置500中,任务调度器502用于解析数据写入请求对应的同步任务,并编排生成任务链,任务链中至少顺次包括:创建同步任务、执行同步任务和删除同步任务;

或者,在任务链中的创建同步任务之后,执行同步任务之前,还包括数据写入任务。

进一步地,本实施例的基于服务锁的数据同步装置500中,任务调度器502,还用于:

创建数据写入请求对应的任务,并将任务标识及对应的任务状态存储在任务管理数据库中;任务状态为未执行;

任务调度器502,还用于从任务管理数据库中获取未执行的任务。

进一步地,本实施例的基于服务锁的数据同步装置500中,任务调度器502,具体用于:

调度主节点服务器上的多个任务执行器503分别执行任务链中的各任务;

将任务管理数据库中对应的任务的状态修改为执行中;

任务调度器502还用于控制部署的多个服务器中的各服务器检测自身是否为主节点服务器。

进一步地,本实施例的基于服务锁的数据同步装置500中,任务调度器502还用于:

控制各服务器向选主模块发送携带服务器的节点标识和任务标识的选主请求;由选主模块检测是否有其他服务器执行任务标识对应的任务,若没有,将服务器设置为主节点服务器,并将检测结果反馈给服务器。

进一步地,本实施例的基于服务锁的数据同步装置500中,任务执行器503还用于将任务管理数据库中对应的任务的状态修改为执行完;具体可以由执行删除同步任务的任务执行器503来执行。

锁服务组件501还用于将配置的服务锁的信息中服务锁的状态修改为已释放。

进一步可选地,本实施例的基于服务锁的数据同步装置500中,还可以包括上述图4所示的定时检测服务组件等,详细可以参考上述图4所示实施例的记载,在此不再赘述。

本实施例的基于服务锁的数据同步装置500,通过采用上述组件实现基于服务锁的数据同步处理的实现原理以及技术效果与上述相关方法实施例相同,详细可以参考上述相关方法实施例的记载,在此不再赘述。

根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。

如图6所示,是根据本申请实施例的实现基于服务锁的数据同步方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。

如图6所示,该电子设备包括:一个或多个处理器601、存储器602,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图6中以一个处理器601为例。

存储器602即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的基于服务锁的数据同步方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的基于服务锁的数据同步方法。

存储器602作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的基于服务锁的数据同步方法对应的程序指令/模块(例如,附图5所示的各组件)。处理器601通过运行存储在存储器602中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的基于服务锁的数据同步方法。

存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储实现基于服务锁的数据同步方法的电子设备的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器602可选包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至实现基于服务锁的数据同步方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

实现基于服务锁的数据同步方法的电子设备还可以包括:输入装置603和输出装置604。处理器601、存储器602、输入装置603和输出装置604可以通过总线或者其他方式连接,图6中以通过总线连接为例。

输入装置603可接收输入的数字或字符信息,以及产生与实现基于服务锁的数据同步方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置604可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。

此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

根据本申请实施例的技术方案,通过基于写入源的数据写入请求,为写入源配置数据表的服务锁;数据写入请求中携带写入源的标识和数据表的标识;解析数据写入请求对应的同步任务;执行同步任务,使得各数据库中存储的数据表的数据一致,能够提供一套适用于多写入源多数据库的数据存储系统中的完整的数据同步机制,能够在数据写入时配置的服务锁的保护下,执行数据同步操作,保证数据同步操作的安全性和数据的准确性,而且也能够有效地保证各数据库之间的数据的一致性。

根据本申请实施例的技术方案,还可以采用任务管理数据库对所有的任务进行综合管理,在任务调度器的调度下,由主节点服务器对未执行的任务进行选取和执行,可以有效地保证同步任务执行的安全性和数据的准确性。

根据本申请实施例的技术方案,还能够在任务执行中对任务的状态进行更新,避免任务被多次执行,确保数据同步的准确性和数据的一致性。同时还能够对服务锁的状态进行及时更新,能够有效地保证系统中数据的安全性。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1