CN108200219A - 数据同步方法、装置、服务器及存储介质 - Google Patents

数据同步方法、装置、服务器及存储介质 Download PDF

Info

Publication number
CN108200219A
CN108200219A CN201810204886.XA CN201810204886A CN108200219A CN 108200219 A CN108200219 A CN 108200219A CN 201810204886 A CN201810204886 A CN 201810204886A CN 108200219 A CN108200219 A CN 108200219A
Authority
CN
China
Prior art keywords
server
change
message
data
data cached
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810204886.XA
Other languages
English (en)
Other versions
CN108200219B (zh
Inventor
肖利强
康大强
李元军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201810204886.XA priority Critical patent/CN108200219B/zh
Publication of CN108200219A publication Critical patent/CN108200219A/zh
Application granted granted Critical
Publication of CN108200219B publication Critical patent/CN108200219B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data

Abstract

本申请实施例公开了一种数据同步方法、装置、服务器及存储介质,属于数据存储技术领域。该方法包括:获取对第一服务器中的缓存数据的更改指令;通过拦截组件拦截所述更改指令,并将所述更改指令对应的更改消息添加至消息队列;根据所述更改指令更改所述第一服务器中的缓存数据;向第二服务器发送所述消息队列中的更改消息,所述更改消息用于所述第二服务器同步更改所述第二服务器中的缓存数据。本申请实施例可以解决从服务器的缓存数据更改时,主服务器无法同步更改缓存数据的问题;由于无论第一服务器是从服务器还是主服务器,都可以实现缓存数据与第二服务器中的缓存数据保持一致,而不受服务器类型的限制,可以提高缓存数据的一致性。

Description

数据同步方法、装置、服务器及存储介质
技术领域
本申请实施例涉及数据存储技术领域,特别涉及一种数据同步方法、装置、服务器及存储介质。
背景技术
分布式服务是指由多个服务器协同工作完成某一业务的服务系统。在分布式服务系统中,为了保证同一终端能够从不同的服务器中访问到该终端对应的缓存数据,不同的服务器中的缓存数据需要保持同步。
以同步远程数据服务(Remote Dictionary Serve,Redis)中的缓存数据为例,分布式服务系统包括主服务器和从服务器,在同步Redis缓存数据时,从服务器只能同步主服务器中的Redis缓存数据,而主服务器不能同步从服务器中的Redis缓存数据。
由于从服务器只能单向复制主服务器的缓存数据,此时,一旦从服务器中的缓存数据发生变化,主服务器中的缓存数据无法同步更新,会导致缓存数据不一致的问题。
发明内容
本申请实施例提供的数据同步方法、装置、服务器及存储介质,可以解决同步缓存数据时,从服务器只能单向地同步主服务器中的缓存数据,而主服务器不能同步从服务器中的缓存数据,导致从服务器中的缓存数据与主服务器中的缓存数据不一致的问题。所述技术方案如下:
第一方面,提供了一种数据同步方法,所述方法包括:
获取对第一服务器中的缓存数据的更改指令;
通过拦截组件拦截所述更改指令,并将所述更改指令对应的更改消息添加至消息队列;
根据所述更改指令更改所述第一服务器中的缓存数据;
向第二服务器发送所述消息队列中的所述更改消息,所述更改消息用于所述第二服务器更改所述第二服务器中的缓存数据。
第二方面,提供了一种数据同步方法,所述方法包括:
通过缓存同步组件接收第一服务器发送的更改消息,所述更改消息是所述第一服务器中的拦截组件发送的,所述拦截组件用于拦截所述第一服务器接收到的对缓存数据的更改指令,并根据所述更改指令生成所述更改消息;
通过所述缓存同步组件根据所述更改消息对所述缓存数据进行更改。
第三方面,提供了一种数据同步装置,所述装置包括:
指令获取单元,用于获取对第一服务器中的缓存数据的更改指令;
指令拦截单元,用于拦截所述更改指令,并将所述更改指令对应的更改消息添加至消息队列;
数据更改单元,用于根据所述更改指令更改所述第一服务器中的缓存数据;
消息发送单元,用于向第二服务器发送所述消息队列中的所述更改消息,所述更改消息用于所述第二服务器更改所述第二服务器中的缓存数据。
第四方面,提供了一种数据同步装置,所述装置包括:
消息接收单元,用于接收第一服务器发送的更改消息,所述更改消息是所述第一服务器中的拦截组件发送的,所述拦截组件用于拦截所述第一服务器接收到的对缓存数据的更改指令,并根据所述更改指令生成所述更改消息;
数据同步单元,用于根据所述更改消息对所述缓存数据进行更改。
第五方面,提供了一种服务器,所述服务器包括处理器、与所述处理器相连的存储器,以及存储在所述存储器上的程序指令,所述处理器执行所述程序指令时实现第一方面提供的数据同步方法;或者,实现第二方面提供的数据同步方法。
第六方面,一种计算机可读介质,其上存储有程序指令,所述程序指令被处理器执行时实现第一方面提供的数据同步方法;或者,实现第二方面提供的数据同步方法。
本申请实施例提供的技术方案带来的有益效果包括:
通过在第一服务器中安装拦截组件来拦截对缓存数据的更改指令,并将该更改指令对应的更改消息发送至消息队列中;然后第一服务器将该消息队列中的更改消息发送至第二服务器,从而实现第二服务器中缓存数据与第一服务器中的缓存数据保持一致;可以解决同步Redis缓存数据时,若从服务器中的缓存数据更改,主服务器中的缓存数据无法与从服务器中的缓存数据保持一致的问题;由于无论第一服务器是从服务器还是主服务器,都可以实现缓存数据与第二服务器中的缓存数据保持一致,而不受服务器类型的限制,因此,在第一服务器为从服务器,第二服务器为主服务器时,可以实现从服务器中的缓存数据同步至主服务器中,可以提高不同服务器之间的缓存数据的一致性,降低同步缓存数据的复杂度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的数据同步系统的结构示意图;
图2是本申请一个示例性实施例提供的数据同步方法的流程图;
图3是本申请一个示例性实施例提供的数据同步方法的流程图;
图4是本申请一个示例性实施例提供的数据同步方法的流程图;
图5是本申请另一个示例性实施例提供的数据同步方法的流程图;
图6是本申请一个实施例提供的数据同步装置的结构方框图;
图7是本申请一个实施例提供的数据同步装置的结构方框图;
图8是本申请一个实施例提供的服务器的结构方框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先,对本申请实施例涉及的若干名词进行介绍。
缓存数据:是指为了提高数据访问速度而直接缓存在缓存内存中的数据。缓存数据的访问频率通常较高,发生变化的速度较快。
可选地,本申请实施例中,缓存数据可以是远程数据服务(Remote DictionaryServe,Redis)中的缓存数据,也可以是分布式的高速缓存系统Memcache中的缓存数据,本申请实施例中不做限定。
图1是本申请的一个示例性实施例示出的数据同步系统的结构示意图,该系统包括第一服务器110和第二服务器120。
第一服务器110为缓存数据发生更改的服务器。
可选地,第一服务器110中安装有拦截组件111。拦截组件111用于拦截对第一服务器110中的缓存数据的更改指令,并将该更改指令对应的更改消息添加到至少一个消息队列112中。
可选地,本申请中,将具有拦截更改指令功能的组件称为拦截组件111。当然,该拦截组件111也可以称为其它名称,本实施例对此不作限定。在实际实现时,与拦截组件111具有相同的功能的软件、硬件或者软硬件结合的组件都在本申请所描述的拦截组件111的保护范围内。
可选地,更改指令对应的更改消息是指:将更改指令的格式修改为消息的格式后得到的消息。可选地,第一服务器获取到的更改指令的格式与消息队列允许的消息的格式的不同,因此,拦截组件拦截到更改指令之后,需要将该更改指令的格式修改为消息的格式,得到该更改指令对应的更改消息,才能发送至消息队列。
可选地,消息队列112位于第一服务器110中,也可以位于与第一服务器110相独立的其它服务器中,本实施例对此不作限定。本申请中,以消息队列112位于第一服务器110中为例进行说明。
可选地,第一服务器110接收到更改指令后,根据该更改指令对缓存数据进行更改。可选地,更改指令包括但不限于:添加指令、删除指令和修改指令中的至少一种。
可选地,第一服务器110和第二服务器120通过无线网络或有线网络相连。
第二服务器120为订阅了第一服务器110中的更改消息的服务器。第二服务器120和第一服务器110提供的服务完全相同或者部分相同。
第二服务器120中安装有缓存同步组件121,缓存同步组件121用于监听第一服务器中的更改消息,并根据该更改消息对第二服务器120中的缓存数据进行同步更改。
可选地,本申请中,将具有监听更改消息的功能的组件称为缓存同步组件121。当然,该缓存同步组件121也可以称为其它名称,本实施例对此不作限定。在实际实现时,与缓存同步组件121具有相同的功能的软件、硬件或者软硬件结合的组件都在本申请所描述的缓存同步组件121的保护范围内。
可选地,缓存同步组件121通过第一服务器110和第二服务器120之间的通信连接向第一服务器110发送订阅请求;相应地,第一服务器110接收到订阅请求后,建立与第二服务器120之间的订阅关系。然后,第一服务器110在消息队列112不为空时,将消息队列112中的更改消息发送至缓存同步组件121;缓存同步组件121根据该更改消息对缓存数据进行同步更改。
可选地,当第二服务器120的数量为至少两个时,每个第二服务器120对应一个消息队列112。
可选地,第一服务器110和第二服务器120部署于不同的机房中。比如:第一服务器110部署于机房1中,存在两个第二服务器120分别部署于机房2和机房3中。
可选地,第一服务器110中安装有缓存同步组件113,第二服务器120中安装有拦截组件122。其中,拦截组件122用于拦截对第二服务器120中的缓存数据的更改指令,并将该更改指令对应的更改消息添加至消息队列123中。
缓存同步组件113用于监听消息队列123中的更改消息,并根据该更改消息对缓存数据进行同步更改。
可选地,上述第一服务器110的数量可以为至少一个,第二服务器120的数量也可以为至少一个,本实施例对此不作限定。
图2是本申请的一个示例性实施例示出的数据同步方法的流程图。本实施例以该数据同步方法应用于图1所示的数据同步系统中的第一服务器110为例,该第一服务器110为缓存数据发生更改的服务器。该数据同步方法至少包括以下几个步骤。
步骤201,获取对第一服务器中的缓存数据的更改指令。
步骤202,通过拦截组件拦截更改指令,并将更改指令对应的更改消息添加至消息队列。
步骤203,根据更改指令更改第一服务器中的缓存数据。
可选地,本步骤可以在步骤202之前执行;或者,也可以在步骤202之后执行;或者,也可以与步骤202同时执行,本实施例对于步骤202和步骤203的执行顺序不作限定。
步骤204,向第二服务器发送消息队列中的更改消息,该更改消息用于第二服务器更改该第二服务器中的缓存数据。
可选地,第二服务器为与第一服务器之间存在订阅关系的服务器,第一服务器通过与第二服务器之间的订阅关系,将消息队列中的更改消息发送至第二服务器。
可选地,步骤204可以在步骤203之后执行;或者,也可以在步骤203之前执行;或者,还可以与步骤203同时执行,本实施例对于步骤204和步骤203的执行顺序不作限定。
综上所述,本实施例提供的数据同步方法,通过在第一服务器中安装拦截组件来拦截对缓存数据的更改指令,并将该更改指令对应的更改消息发送至消息队列中;然后第一服务器将该消息队列中的更改消息发送至第二服务器,从而实现第二服务器中缓存数据与第一服务器中的缓存数据保持一致;可以解决同步Redis缓存数据时,若从服务器中的缓存数据更改,主服务器中的缓存数据无法与从服务器中的缓存数据保持一致的问题;由于无论第一服务器是从服务器还是主服务器,都可以实现缓存数据与第二服务器中的缓存数据保持一致,而不受服务器类型的限制,因此,在第一服务器为从服务器,第二服务器为主服务器时,可以实现从服务器中的缓存数据同步至主服务器中,可以提高不同服务器之间的缓存数据的一致性,降低同步缓存数据的复杂度。
图3是本申请的一个示例性实施例示出的数据同步方法的流程图。本实施例以该数据同步方法应用于图1所示的数据同步系统中的第二服务器120为例,该第二服务器120为同步更新第一服务器120中的缓存数据的服务器。该数据同步方法至少包括以下几个步骤。
步骤301,通过缓存同步组件接收第一服务器发送的更改消息。
可选地,更改消息是第一服务器中的拦截组件发送的;拦截组件用于拦截第一服务器获取到的对缓存数据的更改指令,并根据更改指令生成更改消息。
可选地,第二服务器与第一服务器之间预先建立有订阅关系,通过该订阅关系,第二服务器能够接收到第一服务器发送的更改消息。
步骤302,通过缓存同步组件根据更改消息对缓存数据进行更改。
综上所述,本实施例提供的数据同步方法,通过在第二服务器中安装缓存同步组件,使得第二服务器可以订阅第一服务器中的更改消息,从而实现第二服务器中的缓存数据与第一服务器中的缓存数据的同步;可以解决同步Redis缓存数据时,若从服务器中的缓存数据更改,主服务器中的缓存数据无法与从服务器中的缓存数据保持一致的问题;由于无论第一服务器是从服务器还是主服务器,都可以实现缓存数据与第二服务器中的缓存数据保持一致,而不受服务器类型的限制,因此,在第一服务器为从服务器,第二服务器为主服务器时,可以实现从服务器中的缓存数据同步至主服务器中,可以提高不同服务器之间的缓存数据的一致性,降低同步缓存数据的复杂度。
图4是本申请的一个示例性实施例示出的数据同步方法的流程图。本实施例以该数据同步方法应用于图1所示的数据同步系统中为例。该数据同步方法至少包括以下几个步骤。
步骤401,第一服务器获取对第一服务器中的缓存数据的更改指令。
可选地,第一服务器通过本地安装的应用服务获取更改指令。
可选地,更改指令可以是与第一服务器中的应用服务建立有通信连接的客户端发送的,该应用服务用于为该客户端提供后台服务;或者,也可以是第一服务器中的应用服务自动生成的。更改指令包括但不限于:添加指令、删除指令和修改指令中的至少一种。
可选地,与第一服务器建立有通信连接的客户端与第一服务器之间的距离小于该客户端与第二服务器之间的距离。即,客户端在与服务器连接时可以选择连接到距离较近的第一服务器上。这样,可以减少客户端与服务器之间的通信距离,提高通信效率。
比如:第一服务器设置在北京、第二服务器设置在上海。处于北京的客户端可以自动地连接到第一服务器。当客户端从北京迁移至上海之后,该客户端可以自动地连接到第二服务器。为了保证客户端能够在第二服务器上能够访问到在第一服务器中缓存的数据,需要对第一服务器和第二服务器中的缓存数据进行数据同步。
步骤402,第一服务器通过拦截组件拦截更改指令,并将更改指令对应的更改消息添加至消息队列。
可选地,拦截组件拦截到更改指令后,根据该更改指令生成更改消息;将该更改消息添加至消息队列。
可选地,更改指令对应的更改消息是指:将更改指令的格式修改为消息的格式后得到的消息。可选地,第一服务器获取到的更改指令的格式与消息队列允许的消息的格式的不同,因此,拦截组件拦截到更改指令之后,需要将该更改指令的格式修改为消息的格式,得到该更改指令对应的更改消息,才能发送至消息队列。
可选地,消息队列的数量为至少一个,拦截组件将更改消息发送至每个消息队列中。
可选地,更改消息包括数据标识和/或更改类型。数据标识用于指示被更改的缓存数据。可选地,数据标识包括但不限于:缓存数据的哈希值和缓存数据的缓存地址中的至少一种。更改类型为添加、删除和修改中的至少一种,该更改类型是根据更改指令确定的。
可选地,在本步骤之前,第一服务器在应用服务中安装拦截组件,该拦截组件为基于面向切面编程(Aspect Oriented Programming,AOP)实现的组件。示意性地,拦截组件为基于AOP实现的软件开发工具包(Software Development Kit,SDK)。
其中,AOP可以在不改变程序源码的情况下为应用服务添加额外的功能,且可以降低业务逻辑之间的耦合度。本实施例中,基于AOP的拦截组件可以动态代理应用服务中的某一环节的业务逻辑,降低业务逻辑之间的耦合度,降低开发拦截组件的难度。
可选地,消息队列用于接收拦截组件发送的更改消息,该消息队列按照接收更改消息的先后顺序对更改消息排序,即,接收顺序在前的更改消息排序在前,接收顺序在后的更改消息排序在后。
可选地,消息队列为RabbitMQ。RabbitMQ是一个开源的高级消息队列协议(Advanced Message Queuing Protocol,AMQP)实现,RabbitMQ的易用性和扩展性较高。当然,消息队列也可以为其它类型的消息队列,本实施例对此不作限定。
步骤403,第一服务器根据更改指令更改该第一服务器中的缓存数据。
可选地,第一服务器中的应用服务根据更改指令更改第一服务器中的缓存数据。
可选地,本步骤可以在步骤402之前执行;也可以在步骤402之后执行;还可以与步骤402同时执行,本实施不对步骤403和步骤402之间的执行顺序作限定。
步骤404,第二服务器通过缓存同步组件向第一服务器发送订阅请求。
订阅请求用于请求第一服务器发送消息队列中的更改消息,该更改消息是第一服务器中的拦截组件发送的,该拦截组件用于拦截第一服务器接收到的对缓存数据的更改指令,并根据更改指令生成更改消息。
可选地,订阅请求触发第一服务器建立与第二服务器之间的订阅关系。
可选地,安装在第二服务器中的缓存同步组件订阅消息队列中的更改消息。
可选地,步骤404可以在步骤401-403之前执行;或者,也可以在步骤401-403之后执行;或者,还可以与步骤401-403同时执行,本实施例对步骤404和步骤401-403之间的执行顺序不作限定。
步骤405,第一服务器接收第二服务器对消息队列的订阅请求。
可选地,第一服务器接收到订阅请求之后,建立与第二服务器之间的订阅关系。
步骤406,第一服务器向第二服务器发送消息队列中的更改消息,该更改消息用于第二服务器对缓存数据进行更改。
可选地,第一服务器通过与第二服务器之间的订阅关系,向第二服务器发送消息队列中的更改消息。
示意性地,第一服务器可以在消息队列不为空时,每隔一定时长向第二服务器发送消息队列中的更改消息。
可选地,当第二服务器的数量为一个时,第一服务器中消息队列的数量至少为一个。第一服务器按照消息队列中更改消息的接收顺序,向第二服务器发送该消息队列中的前n个更改消息。n为正整数。本实施不对n的数值作限定,示意性地,n的值为1。
可选地,当第二服务器的数量为至少两个时,第一服务器中的消息队列包括的至少两个,每个第二服务器中的缓存同步组件对应监控第一服务器中的一个消息队列。此时,第一服务器接收到订阅请求之后,对于每个第二服务器,确定该第二服务器对应的消息队列;将该消息队列中的前n个更改消息发送至该第二服务器。
可选地,当n的取值为1时,第一服务器将消息队列中的第一条消息发送第二服务器;当n的取值为大于1的数值时,第一服务器将消息队列中的第一条消息和其它更改消息发送至第二服务器。
步骤407,第二服务器通过缓存同步组件接收第一服务器发送的更改消息。
步骤408,第二服务器通过缓存同步组件根据更改消息对该第二服务器中的缓存数据进行更改。
可选地,缓存同步组件根据更改消息对第二服务器中的缓存数据进行更改是指:将第二服务器中的缓存数据更改至与第一服务器中的缓存数据相同。
步骤409,第二服务器通过缓存同步组件向第一服务器发送对更改消息的接收回执。
对更改消息的接收回执用于指示第二服务器成功接收到该更改消息。
可选地,本步骤可以在步骤408之前执行;或者,也可以在步骤408之后执行;或者,也可以与步骤408同时执行,本实施对步骤408和步骤409之间的执行顺序不作限定。
步骤410,第一服务器接收对更改消息的接收回执,根据该接收回执在消息队列中删除更改消息。
综上所述,本实施例提供的数据同步方法,通过在第一服务器中安装拦截组件来拦截对缓存数据的更改指令,并将该更改指令对应的更改消息发送至消息队列中;然后第一服务器将该消息队列中的更改消息发送至第二服务器,从而实现第二服务器中缓存数据与第一服务器中的缓存数据保持一致;可以解决同步Redis缓存数据时,若从服务器中的缓存数据更改,主服务器中的缓存数据无法与从服务器中的缓存数据保持一致的问题;由于无论第一服务器是从服务器还是主服务器,都可以实现缓存数据与第二服务器中的缓存数据保持一致,而不受服务器类型的限制,因此,在第一服务器为从服务器,第二服务器为主服务器时,可以实现从服务器中的缓存数据同步至主服务器中,可以提高不同服务器之间的缓存数据的一致性,降低同步缓存数据的复杂度。
另外,通过基于AOP实现拦截组件,可以使得拦截组件动态代理应用服务中的某一环节的业务逻辑,降低业务逻辑之间的耦合度,降低开发拦截组件的难度。
可选地,步骤401-403、405和410可单独实现为第一服务器侧的方法实施例,步骤404、406-409可单独实现为第二服务器侧的方法实施例,本实施例对此不作限定。
可选地,本实施仅以第二服务器直接向第一服务器发送订阅请求,来建立第一服务器与第二服务器之间的订阅关系为例进行说明,在实际实现时,也可以由第二服务器通过至少一个其它服务器向第一服务器发送订阅请求,来建立第一服务器与第二服务器之间的订阅关系。
可选地,在步骤406之后,第一服务器与第二服务器之间通信连接可能中断,此时,第二服务器可能接收不到第一服务器发送的更改消息,为了保证第二服务器在通信连接恢复时能够继续接收该更改消息,第一服务器需要在消息队列中保留该更改消息。
图5是本申请的另一个示例性实施例示出的数据同步方法的流程图。本实施例以该数据同步方法应用于图1所示的数据同步系统中为例。基于图4所示的实施例,在步骤406之后,该方法还包括以下几个步骤。
步骤501,在第一服务器与第二服务器之间的通信连接在中断之后恢复时,第一服务器再次向第二服务器发送更改消息,该更改消息是第一服务器在未接收到第二服务器对更改消息的接收回执,且第一服务器与第二服务器之间的通信连接中断时保留在消息队列中的;执行步骤407。
可选地,第一服务器每隔检测时长检测与第二服务器之间的通信连接是否中断,在检测出通信连接中断且未接收到第二服务器对更改消息的接收回执时,此时,第二服务器可能接收更改消息失败。因此,为了保证第二服务器能够接收到该更改消息,第一服务器发送更改消息之后,暂时不将该更改消息删除,而是在消息队列中保留该更改消息。
综上所述,本实施例提供的数据同步方法,通过在未接收到第二服务器对更改消息的接收回执,且第一服务器与第二服务器之间的通信连接中断时,第一服务器在消息队列中保留更改消息;在第一服务器与第二服务器之间的通信连接恢复时,第一服务器再次向第二服务器发送更改消息;保证了第二服务器能够接收到该更改消息,从而根据该更改消息进行缓存数据的同步,可以提高缓存数据同步的可靠性。
可选地,若第一服务器在发送更改消息之后的时长达到时长阈值时,该第一服务器还未接收到对该更改消息的接收回执,说明第一服务器发送失败;或者,第二服务器接收失败,此时,第一服务器再次向第二服务器发送更改消息,直至接收到对该更改消息的接收回执时将该更改消息删除。
本实施例中,通过设置时长阈值,在该时长阈值内未接收到接收回执时再次向第二服务器发送更改消息,可以保证第二服务器能够接收到该更改消息,从而根据该更改消息进行缓存数据的同步,可以提高缓存数据同步的可靠性。
需要补充说明的是,本申请实施例仅以第一服务器包括拦截组件和消息队列,第二服务器包括缓存同步组件为例进行说明,在实际实现时,第一服务器也可以包括缓存同步组件,第二服务器也可以包括拦截组件和消息队列。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图6,其示出了本申请一个实施例提供的数据同步装置的结构方框图,该数据同步装置可通过软件、硬件或者两者的结合实现成为第一服务器的部分或者全部。该装置可以包括:指令获取单元610、指令拦截单元620、数据更改单元630和消息发送单元640。
指令获取单元610,用于获取对第一服务器中的缓存数据的更改指令;
指令拦截单元620,用于拦截所述更改指令,并将所述更改指令对应的更改消息添加至消息队列;
数据更改单元630,用于根据所述更改指令更改所述第一服务器中的缓存数据;
消息发送单元640,用于向第二服务器发送所述消息队列中的更改消息,所述更改消息用于所述第二服务器更改所述第二服务器中的缓存数据。
可选地,所述装置还包括:组件安装单元。
组件安装单元,用于在所述第一服务器的应用服务中安装所述拦截组件,所述拦截组件是基于AOP实现的。
可选地,在未接收到所述第二服务器对所述更改消息的接收回执,且所述第一服务器与所述第二服务器之间的通信连接中断时,所述更改消息保留在消息队列中;
所述装置还包括:消息重传单元。
消息重传单元,用于在所述第一服务器与所述第二服务器之间的通信连接恢复时,再次向所述第二服务器发送所述保留在消息队列中的更改消息。
可选地,所述装置还包括:消息删除单元。
消息删除单元,用于在接收到所述第二服务器对所述更改消息的接收回执时,在所述消息队列中删除所述更改消息。
可选地,所述第二服务器的数量为至少两个,每个第二服务器对应一个消息队列;所述消息发送单元640,用于:
对于每个第二服务器,确定所述第二服务器对应的消息队列;
将所述消息队列中的所述更改消息发送至所述第二服务器;或者,将所述消息队列中的所述更改消息和至少一个其它更改消息发送至所述第二服务器。
相关细节参考上述第一服务器侧的方法实施例。
请参考图7,其示出了本申请实施例一个实施例提供的数据同步装置的结构方框图,该数据同步装置可通过软件、硬件或者两者的结合实现成为第一服务器的部分或者全部。该装置可以包括:消息接收单元710和数据同步单元720。
消息接收单元710,用于接收第一服务器发送的更改消息,所述更改消息是所述第一服务器中的拦截组件发送的,所述拦截组件用于拦截所述第一服务器接收到的对缓存数据的更改指令,并根据所述更改指令生成所述更改消息;
数据同步单元720,用于根据所述更改消息对所述缓存数据进行同步更改。
可选地,所述装置还包括:回执发送单元。
回执发送单元,用于向所述第一服务器发送对所述更改消息的接收回执,所述接收回执用于指示已成功接收所述更改消息。
可选地,所述装置还包括,请求发送单元。
请求发送单元,用于向所述第一服务器发送订阅请求,所述订阅请求用于请求所述第一服务器发送消息队列中的更改消息。
相关细节参考上述第二服务器侧的方法实施例。
本申请实施例还提供一种计算机可读介质,其上存储有程序指令,程序指令被处理器执行时实现上述各个方法实施例提供的数据同步方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例提供的数据同步方法。
参考图8,其示出了本申请实施例一个示例性实施例提供的服务器的结构方框图。本申请实施例中的服务器可以包括一个或多个如下部件:处理器810和存储器820。
处理器810可以包括一个或者多个处理核心。处理器810利用各种接口和线路连接整个服务器内的各个部分,通过运行或执行存储在存储器820内的指令、程序、代码集或指令集,以及调用存储在存储器820内的数据,执行服务器的各种功能和处理数据。可选地,处理器810可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器810可集成中央处理器(CentralProcessing Unit,CPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统和应用程序等;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器810中,单独通过一块芯片进行实现。
可选地,处理器810执行存储器820中的程序指令时实现下上述各个方法实施例提供的数据同步方法。
存储器820可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选地,该存储器820包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器820可用于存储指令、程序、代码、代码集或指令集。存储器820可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令、用于实现上述各个方法实施例的指令等;存储数据区可存储根据服务器的使用所创建的数据等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请实施例的较佳实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。

Claims (12)

1.一种数据同步方法,其特征在于,所述方法包括:
获取对第一服务器中的缓存数据的更改指令;
通过拦截组件拦截所述更改指令,并将所述更改指令对应的更改消息添加至消息队列;
根据所述更改指令更改所述第一服务器中的缓存数据;
向第二服务器发送所述消息队列中的所述更改消息,所述更改消息用于所述第二服务器更改所述第二服务器中的缓存数据。
2.根据权利要求1所述的方法,其特征在于,所述通过拦截组件拦截所述更改指令之前,还包括:
在所述第一服务器的应用服务中安装所述拦截组件,所述拦截组件是基于面向切面编程AOP实现的。
3.根据权利要求1所述的方法,其特征在于,在未接收到所述第二服务器对所述更改消息的接收回执,且所述第一服务器与所述第二服务器之间的通信连接中断时,所述更改消息保留在所述消息队列中;
所述向所述第二服务器发送所述消息队列中的所述更改消息之后,还包括:
在所述第一服务器与所述第二服务器之间的通信连接恢复时,再次向所述第二服务器发送保留在所述消息队列中的所述更改消息。
4.根据权利要求1至3任一所述的方法,其特征在于,所述向所述第二服务器发送所述消息队列中的所述更改消息之后,还包括:
在接收到所述第二服务器对所述更改消息的接收回执时,在所述消息队列中删除所述更改消息。
5.根据权利要求1至3任一所述的方法,其特征在于,所述第二服务器的数量为至少两个,每个第二服务器对应一个消息队列;
所述向所述第二服务器发送所述消息队列中的更改消息,包括:
对于每个第二服务器,确定所述第二服务器对应的消息队列;
将所述消息队列中的所述更改消息发送至所述第二服务器;或者,将所述消息队列中的所述更改消息和至少一个其它更改消息发送至所述第二服务器。
6.一种数据同步方法,其特征在于,所述方法包括:
通过缓存同步组件接收第一服务器发送的更改消息,所述更改消息是所述第一服务器中的拦截组件发送的;所述拦截组件用于拦截所述第一服务器获取到的对缓存数据的更改指令,并根据所述更改指令生成所述更改消息;
通过所述缓存同步组件根据所述更改消息对所述缓存数据进行更改。
7.根据权利要求6所述的方法,其特征在于,所述通过缓存同步组件接收第一服务器发送的更改消息之后,还包括:
通过所述缓存同步组件向所述第一服务器发送对所述更改消息的接收回执,所述接收回执用于指示已成功接收所述更改消息。
8.根据权利要求6或7所述的方法,其特征在于,所述通过缓存同步组件接收第一服务器发送的更改消息之前,还包括:
通过所述缓存同步组件向所述第一服务器发送订阅请求,所述订阅请求用于请求所述第一服务器发送消息队列中的更改消息。
9.一种数据同步装置,其特征在于,所述装置包括:
指令获取单元,用于获取对第一服务器中的缓存数据的更改指令;
指令拦截单元,用于拦截所述更改指令,并将所述更改指令对应的更改消息添加至消息队列;
数据更改单元,用于根据所述更改指令更改所述第一服务器中的缓存数据;
消息发送单元,用于向第二服务器发送所述消息队列中的所述更改消息,所述更改消息用于所述第二服务器更改所述第二服务器中的缓存数据。
10.一种数据同步装置,其特征在于,所述装置包括:
消息接收单元,用于接收第一服务器发送的更改消息,所述更改消息是所述第一服务器中的拦截组件发送的,所述拦截组件用于拦截所述第一服务器接收到的对缓存数据的更改指令,并根据所述更改指令生成所述更改消息;
数据同步单元,用于根据所述更改消息对所述缓存数据进行更改。
11.一种服务器,其特征在于,所述服务器包括处理器、与所述处理器相连的存储器,以及存储在所述存储器上的程序指令,所述处理器执行所述程序指令时实现如权利要求1至5任一所述的数据同步方法;或者,如权利要求6至8任一所述的数据同步方法。
12.一种计算机可读存储介质,其特征在于,其上存储有程序指令,所述程序指令被处理器执行时实现如权利要求1至5任一所述的数据同步方法;或者,如权利要求6至8任一所述的数据同步方法。
CN201810204886.XA 2018-03-13 2018-03-13 数据同步方法、装置、服务器及存储介质 Expired - Fee Related CN108200219B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810204886.XA CN108200219B (zh) 2018-03-13 2018-03-13 数据同步方法、装置、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810204886.XA CN108200219B (zh) 2018-03-13 2018-03-13 数据同步方法、装置、服务器及存储介质

Publications (2)

Publication Number Publication Date
CN108200219A true CN108200219A (zh) 2018-06-22
CN108200219B CN108200219B (zh) 2020-04-14

Family

ID=62595625

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810204886.XA Expired - Fee Related CN108200219B (zh) 2018-03-13 2018-03-13 数据同步方法、装置、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN108200219B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109905457A (zh) * 2019-01-09 2019-06-18 广州视源电子科技股份有限公司 主从服务器数据同步方法、装置、计算机设备和存储介质
CN110570859A (zh) * 2019-09-20 2019-12-13 Oppo广东移动通信有限公司 智能音箱控制方法、装置、系统及存储介质
CN110659297A (zh) * 2019-08-13 2020-01-07 上海陆家嘴国际金融资产交易市场股份有限公司 数据处理方法、装置、计算机设备和存储介质
CN111177254A (zh) * 2019-12-05 2020-05-19 武汉达梦数据库有限公司 一种异构关系型数据库之间数据同步的方法和装置
CN111309693A (zh) * 2020-02-07 2020-06-19 北京奇艺世纪科技有限公司 一种数据同步方法、装置、系统、电子设备及存储介质
CN111767296A (zh) * 2020-06-30 2020-10-13 北京百度网讯科技有限公司 用于同步数据的方法、装置、电子设备及可读存储介质
CN112925848A (zh) * 2021-02-23 2021-06-08 马上消费金融股份有限公司 一种数据同步方法、装置、设备及可读存储介质
CN112948491A (zh) * 2021-02-26 2021-06-11 平安普惠企业管理有限公司 数据同步的方法、装置、终端设备及计算机可读存储介质
CN116401317A (zh) * 2023-04-19 2023-07-07 中国环球租赁有限公司 一种缓存数据同步方法、装置、电子设备及介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104967536A (zh) * 2015-06-29 2015-10-07 北京奇虎科技有限公司 实现多机房数据一致性的方法和装置
CN106254417A (zh) * 2016-07-12 2016-12-21 乐视控股(北京)有限公司 数据缓存方法、装置及系统
CN106302827A (zh) * 2016-10-25 2017-01-04 聚好看科技股份有限公司 基于分布式系统的通信方法、设备及分布式系统
CN106375362A (zh) * 2015-07-24 2017-02-01 广州市百果园信息技术有限公司 分布式服务器的缓存同步方法及系统
CN106656760A (zh) * 2016-12-28 2017-05-10 广州赛意信息科技股份有限公司 一种基于消息队列的消息传递方法及系统
US20170154053A1 (en) * 2001-12-28 2017-06-01 Open Text Sa Ulc System and method for the synchronization of a file in a cache
CN106980625A (zh) * 2016-01-18 2017-07-25 阿里巴巴集团控股有限公司 一种数据同步方法、装置及系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170154053A1 (en) * 2001-12-28 2017-06-01 Open Text Sa Ulc System and method for the synchronization of a file in a cache
CN104967536A (zh) * 2015-06-29 2015-10-07 北京奇虎科技有限公司 实现多机房数据一致性的方法和装置
CN106375362A (zh) * 2015-07-24 2017-02-01 广州市百果园信息技术有限公司 分布式服务器的缓存同步方法及系统
CN106980625A (zh) * 2016-01-18 2017-07-25 阿里巴巴集团控股有限公司 一种数据同步方法、装置及系统
CN106254417A (zh) * 2016-07-12 2016-12-21 乐视控股(北京)有限公司 数据缓存方法、装置及系统
CN106302827A (zh) * 2016-10-25 2017-01-04 聚好看科技股份有限公司 基于分布式系统的通信方法、设备及分布式系统
CN106656760A (zh) * 2016-12-28 2017-05-10 广州赛意信息科技股份有限公司 一种基于消息队列的消息传递方法及系统

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109905457A (zh) * 2019-01-09 2019-06-18 广州视源电子科技股份有限公司 主从服务器数据同步方法、装置、计算机设备和存储介质
CN110659297A (zh) * 2019-08-13 2020-01-07 上海陆家嘴国际金融资产交易市场股份有限公司 数据处理方法、装置、计算机设备和存储介质
CN110570859A (zh) * 2019-09-20 2019-12-13 Oppo广东移动通信有限公司 智能音箱控制方法、装置、系统及存储介质
CN111177254B (zh) * 2019-12-05 2021-08-17 武汉达梦数据库股份有限公司 一种异构关系型数据库之间数据同步的方法和装置
CN111177254A (zh) * 2019-12-05 2020-05-19 武汉达梦数据库有限公司 一种异构关系型数据库之间数据同步的方法和装置
CN111309693A (zh) * 2020-02-07 2020-06-19 北京奇艺世纪科技有限公司 一种数据同步方法、装置、系统、电子设备及存储介质
CN111767296A (zh) * 2020-06-30 2020-10-13 北京百度网讯科技有限公司 用于同步数据的方法、装置、电子设备及可读存储介质
CN112925848A (zh) * 2021-02-23 2021-06-08 马上消费金融股份有限公司 一种数据同步方法、装置、设备及可读存储介质
CN112925848B (zh) * 2021-02-23 2024-02-06 马上消费金融股份有限公司 一种数据同步方法、装置、设备及可读存储介质
CN112948491A (zh) * 2021-02-26 2021-06-11 平安普惠企业管理有限公司 数据同步的方法、装置、终端设备及计算机可读存储介质
CN112948491B (zh) * 2021-02-26 2023-09-22 湖北华中电力科技开发有限责任公司 数据同步的方法、装置、终端设备及计算机可读存储介质
CN116401317A (zh) * 2023-04-19 2023-07-07 中国环球租赁有限公司 一种缓存数据同步方法、装置、电子设备及介质
CN116401317B (zh) * 2023-04-19 2023-11-17 中国环球租赁有限公司 一种缓存数据同步方法、装置、电子设备及介质

Also Published As

Publication number Publication date
CN108200219B (zh) 2020-04-14

Similar Documents

Publication Publication Date Title
CN108200219A (zh) 数据同步方法、装置、服务器及存储介质
EP3490224B1 (en) Data synchronization method and system
US11206451B2 (en) Information interception processing method, terminal, and computer storage medium
US10867033B2 (en) Load distribution enabling detection of first appearance of a new property value in pipeline data processing
WO2017167100A1 (zh) 一种数据迁移方法和装置
WO2019001421A1 (zh) 网络切片管理方法、装置及计算机可读存储介质
JP2020501209A (ja) マルウェア検出及びコンテンツアイムの復元
CN101902473B (zh) 基于网格gis的数据同步更新实现方法
WO2014094468A1 (zh) 实现浏览器数据同步的系统、方法及浏览器客户端
CN109729147A (zh) 一种云环境下支持多租户的审计系统及实现方法
EP3117590A1 (en) Computer system to support failover in an event stream processing system
CN109739708B (zh) 测试压力的方法、装置和系统
CN104639596A (zh) 用于使用rdma的低等待时间fifo消息收发中支持多个发送器的系统和方法
CN107659663A (zh) 一种数据同步的方法、装置、设备和存储介质
JP6405255B2 (ja) 通信システム、キュー管理サーバ、及び、通信方法
US20200310858A1 (en) Unified Application Notification Framework
CN113626286A (zh) 多集群实例处理方法、装置、电子设备及存储介质
WO2021218036A1 (zh) 信息监控方法、系统及计算机可读存储介质
CN106941418B (zh) Ssl vpn配置信息的同步方法和装置
CN115878138B (zh) 应用预下载方法、装置、计算机、存储介质
CN107846476B (zh) 一种信息同步方法、设备及存储介质
US11662928B1 (en) Snapshot management across cloud provider network extension security boundaries
CN110674172A (zh) 数据查询方法及装置
WO2022171190A1 (zh) 固定执行顺序的交易方法和装置
CN113014615B (zh) 数据同步方法、装置和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Applicant after: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd.

Address before: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Applicant before: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd.

GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20200414