CN113268540A - 一种数据同步的方法及装置 - Google Patents

一种数据同步的方法及装置 Download PDF

Info

Publication number
CN113268540A
CN113268540A CN202110326796.XA CN202110326796A CN113268540A CN 113268540 A CN113268540 A CN 113268540A CN 202110326796 A CN202110326796 A CN 202110326796A CN 113268540 A CN113268540 A CN 113268540A
Authority
CN
China
Prior art keywords
data
data change
change log
target service
log
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
CN202110326796.XA
Other languages
English (en)
Other versions
CN113268540B (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.)
Beijing Shiboyun Information Technology Co ltd
Original Assignee
Beijing Shiboyun Information Technology Co 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 Beijing Shiboyun Information Technology Co ltd filed Critical Beijing Shiboyun Information Technology Co ltd
Priority to CN202110326796.XA priority Critical patent/CN113268540B/zh
Publication of CN113268540A publication Critical patent/CN113268540A/zh
Application granted granted Critical
Publication of CN113268540B publication Critical patent/CN113268540B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种数据同步的方法及装置。其中,方法应用于业务服务器,方法包括:在初始化后,监听本业务服务器上所产生的需要与其他业务服务器进行同步的目标业务数据是否发生更新;若发生更新,则生成记录该目标业务数据本次更新的一个或多个第一数据变更日志;将生成的所述第一数据变更日志发送至目标业务服务器,以使所述目标业务服务器接收所述第一数据变更日志,根据所述第一数据变更日志对本地内存中的目标业务数据进行同步更新。本申请能够提高业务服务器间需要进行同步的数据的一致性。

Description

一种数据同步的方法及装置
技术领域
本发明涉及数据存储技术领域,具体而言,涉及一种数据同步的方法及装置。
背景技术
本发明的发明人在研究中发现,大型服务器集群系统中(比如,云游戏集群系统),在服务器间进行业务数据同步时,如果是采用全量数据同步的方式,当数据量较大时,同步耗时较长,并且在同步过程中,源服务器响应业务请求可能会使该业务数据再次发生变化,进而为了保证数据的实时同步性,需要重复执行全量数据同步;因此,在业务请求持续发生,业务数据变更比较频繁的情况下,全量数据同步的方式缺点较为明显。
现有技术中,如果是通过比对hash树进行差异数据同步的方式,同样存在着如果源服务器业务处理频繁,需要频繁的针对变化后的数据范围进行hash计算及hash树更新,该过程中为了维护hash树的状态跟内存数据的实时一致性,源服务器需要消耗一定量的计算资源。而这个计算资源开销在目标服务器上同样存在,频繁变化的hash树,也会导致目标服务器与源服务器之间通过接口协议频繁的进行hash树的比对,以求得数据差异范围;并且该方式中,如果在目标服务器比对hash树的过程中,源服务器因为处理业务请求,又发生了业务数据变化,会导致目标服务器上进行比对的hash树状态已经过期,此时如果继续按照根据hash树状态确定的数据差异范围进行同步差异数据,将有可能发生差异数据不存在或差异数据已经再次发生变化的情况,进而影响服务器间数据实时一致性或者导致数据同步失败。
发明内容
有鉴于此,本发明提供一种数据同步的方法及装置,以提高业务服务器间需要进行同步的数据的一致性。
具体地,本发明是通过如下技术方案实现的:
第一方面,本发明实施例中提供了一种数据同步的方法,所述方法应用于业务服务器,所述方法包括:
在初始化后,监听本业务服务器上所产生的需要与其他业务服务器进行同步的目标业务数据是否发生更新;
若发生更新,则生成记录所述目标业务数据本次更新的一个或多个第一数据变更日志;
将生成的所述第一数据变更日志发送至目标业务服务器,以使所述目标业务服务器接收所述第一更新日志,根据所述第一数据变更日志对本地内存中的目标业务数据进行同步更新。
第二方面,本发明实施例提供了一种数据同步的装置,所述方法应用于业务服务器,所述装置包括:
监听模块,用于在初始化后,监听本业务服务器上所产生的需要与其他业务服务器进行同步的目标业务数据是否发生更新;
生成模块,用于若发生更新,则生成记录所述目标业务数据本次更新的一个或多个第一数据变更日志;
发送模块,用于将生成的所述第一数据变更日志发送至目标业务服务器,以使所述目标业务服务器接收所述第一更新日志,根据所述第一数据变更日志对本地内存中的目标业务数据进行同步更新。
第三方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面所述方法的步骤。
第四方面,本本发明实施例还提供了一种计算机设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现如第一方面所述的方法步骤。
本发明实施例中提供的一种数据同步的方法及装置,业务服务器上若有生成的需要与其他业务服务器进行数据同步的目标业务数据,业务服务器在初始化后,会实时监听该目标业务数据是否发生更新;若发生更新,则生成记录本次更新的第一数据变更日志,将该第一数据变更日志发送至需要执行目标业务数据同步的目标业务服务器,目标业务服务器接收第一数据变更日志,根据该第一数据变更日志对本地内存中的目标业务数据进行同步更新。进而本申请中,业务服务器通过第一数据变更日志记录目标业务数据的每次更新,并将该第一数据变更日志发送至目标业务服务器,由目标业务服务器根据数据变更日志对本地内存中的目标业务数据进行同步更新,以此实现源业务服务器与目的业务服务器之间的目标业务数据的同步;本申请相对于现有技术,能够在业务数据更新较为频繁的情况下保持业务服务器间数据的更高的一致性,并且避免在数据同步的过程再次发生数据更新导致的数据同步不一致的问题,同时可解决全量数据同步由于数据量大导致同步时间长的问题。
附图说明
图1是本发明一示例性实施例示出的一种业务服务器间进行数据同步的方法的应用场景示意图;
图2是本发明一示例性实施例示出的一种数据同步方法的流程示意图;
图3是本发明一示例性实施例示出的业务服务器上更新日志时序分布示意图;
图4是本发明一示例性实施例示出的另一种数据同步方法的流程示意图;
图5是本发明一示例性实施例示出的一种待处理日志队列的示意图;
图6是本发明一示例性实施例示出的数据变更日志的处理流程的示意图;
图7是本发明一示例性实施例示出的一种数据同步装置的结构示意图;
图8是本发明一示例性实施例示出的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在服务器集群系统中,某个业务服务器上所产生的业务数据有可能会被集群中其他业务服务器所使用,示例性地,在云游戏系统中,一业务服务器上运行资源管理服务,该资源管理服务用于维护云游戏系统中渲染业务服务器上CPU、GPU等资源的使用状态,而该资源使用状态数据会同时需要被部署于其他业务服务器上的弹性伸缩等业务服务所使用,进而该场景中,资源管理服务所产生的资源使用状态数据需要与被部署于其他服务器上的比如弹性伸缩业务进行共享,因此需要在业务服务器之间进行资源状态数据的同步。
由于现有技术中,全量数据同步的方式和使用哈希树进行增量数据同步的方式都存在着需要保持同步的数据的一致性不佳的问题;基于此,本申请实施例提供了一种数据同步的方法及装置。
图1是本发明一示例性实施例示出的一种数据同步方法的场景示意图;参照图1所示,业务服务器A将生成的需要与业务服务器B进行同步的目标业务数据按照map等数据结构在内存中进行存储,目标业务数据被构建成形式为key-value的一个或多个数据单元,其中,key代表数据单元的标识,作为该数据单元唯一索引,业务服务器A在响应业务服务请求时,以数据单元为单位对目标业务数据执行更新操作,业务服务器A通过数据变更日志记录该更新操作,并将生成的数据变更日志发送至业务服务器B;业务服务器B上,目标业务数据采用与业务服务器A上相同的数据结构进行存储,业务服务器B接收到数据变更日志后,根据该数据变更日志对本地存储的目标数据进行同步更新。
图2是本申请一示例性实施例所提供的一种数据同步方法的流程示意图;本申请实施例中所提供的一种数据同步的方法应用于业务服务器,比如上述的业务服务器A,参照图2所示,该方法具体包括如下步骤S10-S50:
S10、若本业务服务器发生初始化,生成记录所述目标业务数据发生初始化的第二数据变更日志;其中,所述第二数据变更日志中包含该日志的顺序编号和初始化时间戳,所述顺序编号用于表征本次初始化发生在第一数据变更日志对应的更新之前。
本申请实施例中,业务服务器在初始化后会触发与目标业务服务器之间通过全量数据同步的方式进行一次数据同步。
S20、将所述第二数据变更日志发送至所述目标业务服务器,以使所述目标业务服务器接收所述第二数据变更日志,根据所述第二数据变更日志向所述业务服务器请求获取所述目标业务数据的全量数据。
上述的目标业务服务器的数量可以是一个或多个,本源业务服务器上预先存储有所有目标业务服务器的信息,比如通信地址等。
本实施例中,业务服务器(此时作为源业务服务器)发生初始化后会生成第二数据变更日志,将该第二数据变更日志发送至目标业务服务器,目标业务服务器处理第二数据变更日志,向源业务服务器发送全量数据获取请求,源业务服务器接收到该全量数据获取请求后对当前的目标业务数据进行全量复制得到目标业务数据副本,将该目标业务数据副本一次或分多次同步至目标业务服务器,在目标业务服务器上目标业务数据也是按照key-value的键值对的数据结构进行存储。
S30、在初始化后,监听本业务服务器上目标业务数据是否发生更新。
业务服务器初始化后,实时监听目标业务数据是否发生更新,若发生更新,采用增量数据同步的方式,将更新的数据同步至目标业务服务器。
需要说明的是,源业务服务器上可以是存在有多个目标业务数据,业务服务器对各目标业务数据进行监听是否发生更新。
S40、若发生更新,则生成记录所述目标业务数据本次更新的一个或多个第一数据变更日志。
本申请实施例中,如果目标业务数据发生更新,比如业务服务器执行业务服务请求对目标业务数据所分布的一个或多个数据单元中的数据进行了部分删除、修改操作,或者是增加了一个或多个新的数据单元,或者是删除了一个或多个原有的数据单元;业务服务器在监测到目标业务数据发生更新以后,生成记录目标业务数据该次更新的第一数据变更日志。
本申请实施例中,上述业务服务器在生成第一数据变更日志、第二数据变更日志后,对该日志进行存储指定时间,若存储时间超出指定时间,在判断数据变更日志不为更新时间戳距当前最近的数据变更日志后,则进行删除。
进而本实施例中,为避免数据变更日志的累积占用业务服务器的大量内存,业务服务器会定期对数据变更日志进行删除,只保留最近一段时间的数据变更日志。
本申请一实施例中,上述步骤S20,具体通过以下步骤A10生成记录所述目标业务数据本次更新的一个或多个第一数据变更日志:
步骤A10、基于本次更新的发生时间戳、更新的数据单元的标识、本次更新发生次序的编号、数据变更内容和数据变更方式生成一个或多个所述第一数据变更日志。
本实施例中,上述本次更新的发生次序的编号按照在初始化后,该次更新的发生的时间先后顺序确定,以便于目标服务器对接收到的第一数据变更日志进行判断是否发生丢包,以及按顺序执行目标业务数据的同步更新。
示例性地,按照本次更新的发生次序对第一更新日志进行标记顺序编号,作为该第一数据变更日志的日志ID,该日志ID为取值范围为UInt64的整形值,0代表第二数据变更日志,内存数据初始化时,其对应的数据变更日志ID为0,此后每次数据变更其ID值自增1,大于0的值表征为第一数据变更日志。
上述数据变更方式的标识,包括:Add、Del、Modify、Diff四种类型标识,其中,Add表征新增数据单元;Del表征删除数据单元;Modify表征变更后的数据单元数据;Diff表征修改后的数据单元跟修改前相比较的数据差异;对应的数据变更内容字段可以为:数据变更方式是Del时,该字段为空;数据变更方式是Add时,该字段为要新增的数据单元对应的数据内容;数据变更方式是Modify时,该字段是要修改的数据单元对应修改后的数据内容;数据变更方式是Diff时,该字段是针对数据单元按照二进制数据块的方式计算的修改前后的差异部分,其标记了在数据块上新增、修改、删除的数据区域的具体索引位置及二进制数据内容。
S50、将生成的所述第一数据变更日志发送至所述目标业务服务器,以使所述目标业务服务器接收所述第一更新日志,根据所述第一数据变更日志对本地内存中的目标业务数据进行同步更新。
本申请实施例中所提供的一种数据同步的方法中,源业务服务器发生初始化时与目标业务服务器之间进行目标业务数据的全量数据同步,之后实时监测该目标业务数据是否发生更新,若发生更新则生成记录本次更新的第一数据变更日志,将该第一数据变更日志发送至目标服务器,进而目标服务器在处理该第一数据变更日志时,根据该第一数据变更日志中记录的内容对目标业务数据进行同步更新。进而本申请实施例中所提供的数据同步方法,能够准确记录每次更新,并且目标业务服务器能够及时进行数据同步,保证了服务器间目标业务数据的一致性,并且同步效率更高。
本申请一可能的实施例中,上述方法,还包括如下步骤B10-B20:
步骤B10、若接收到目标业务服务器发送的全量数据同步请求,则将当前所述目标业务数据对应的最新数据变更日志的信息发送至所述目标业务服务器。
步骤B20、以及执行与所述目标业务服务器之间所述目标业务数据的全量数据的同步过程。
上述全量数据同步过程中,业务服务器将目标业务数据快速复制副本数据,执行与目标业务服务器之间副本数据的全量数据同步。
本申请实施例中,业务服务器在接收到目标业务服务器发送的针对上述目标业务数据发送的全量数据同步请求后,触发与该目标业务服务器之间进行全量数据同步的过程,并将当前目标业务数据的最新数据变更日志的顺序编号发送至目标业务服务器,或者是将当前目标业务数据的最新数据变更日志的顺序编号和时间戳发送至目标业务服务器。
图3是本发明一示例性实施例示出的业务服务器上更新日志时序分布示意图;本申请实施例中,为便于理解,将本业务服务器初始化触发全量数据同步至发生下一次业务服务器发生初始化之间作为一个同步周期,在一个同步周期内,第二数据变更日志的顺序编号在第一数据变更日志之前,参照图4所示的示例中,第二数据变更日志的顺序编号为0,发生时间戳为T0,按之后发生更新的顺序,所生成的第一数据变更日志有:第一数据变更日志(ID=1,T1),第一数据变更日志(ID=2,T2),第一数据变更日志(ID=3,T3)。在一个同步周期内可能会接收到该目标业务服务器或者其他目标业务服务器发送的全量数据同步请求。
图4是本发明一示例性实施例示出的另一种数据同步方法的流程示意图;参照图4所示,业务服务器的更新同步过程包括以下步骤S51-S52:
S51、所述业务服务器若监听到一源业务服务器发送了数据变更日志,则将所述数据变更日志添加至对应的待处理日志队列中。
S52、按顺序处理所述待处理日志队列中的数据变更日志,根据数据变更日志记录的更新内容对本地内存中的对应业务数据进行同步更新。
本申请实施例中,若业务服务器接收到源业务服务器发送的数据变更日志,则将该数据变更日志存储于待处理日志队列,并依次处理数据变更待处理日志队列中的数据变更日志,在执行完数据变更日志记录的数据同步更新操作后,将数据变更日志从数据变更待处理日志队列中删除,并记录最后一次处理的数据变更日志的顺序编号和时间戳。
图5是本发明一示例性实施例示出的一种数据变更待处理日志队列的示意图;参照图5所示,示例性地,在某一时刻数据变更待处理日志队列中同时有多个第一数据变更日志,从队首开始按照顺序编号由小到大排列为:第一数据变更日志(ID=3,T3)、第一数据变更日志(ID=4,T4)和第一数据变更日志(ID=5,T5),并且记录的当前已处理的最新数据变更日志的顺序编号为2(lastID=2),更新时间戳为T2(lastT=T2),业务服务器按本次更新的发生次序,依次处理执行顺序编号为3、4、5的第一数据变更日志。
图6是本发明一示例性实施例示出的数据变更日志的处理流程的示意图;参照图6所示,本申请一可能的实施例中,上述步骤S52中,按顺序处理所述待处理日志队列中的数据变更日志,根据数据变更日志记录的更新内容对本地内存中的对应业务数据进行同步更新,具体包括:
S521、周期性的从待处理日志队列中获取处于队首的数据变更日志。
S522、根据该数据变更日志的时间戳和顺序编号,判断是否为当前已处理的最新数据变更日志的下一个数据变更日志。
S523、若是,则根据该数据变更日志对本地内存中的对应目标业务数据进行同步更新,然后执行S525。
本实施例中,在处理完数据变更日志后,并将处理完成的该数据变更日志从队列中删除,
S524、若否,如果为无效的数据变更日志,则丢弃;如果该数据变更日志为未处理的日志且与当前已处理的最新数据变更日志之间存在其他未处理的数据变更日志,则向源业务服务器请求获取前序未处理的数据变更日志,若成功获取到,则将获取的前序数据变更日志按顺序添加至待处理日志队列。
S525、按照上述步骤,继续处理待处理日志队列中的下一个数据变更日志。
本申请一可选地实施例中,如果未从源服务器获取到全部的未处理的数据变更日志,则说明请求的变更日志范围已经超出了源服务器的变更日志的有效时间范围,则向源服务器发送全量数据同步请求,并清空当前日志列表以及本地的业务数据。
本实施例中,源业务服务器同时对目标业务服务器提供获取数据变更日志的接口,在发生通信丢包等场景下,目标服务器可针对缺失的日志ID通过调用该接口主动获取对应的变更日志。
本申请一可能的实施例中,上述步骤S522中,如果根据该数据变更日志的顺序编号,判断为第一数据变更日志,则根据所述数据变更日志的时间戳和当前已处理的最新数据变更日志的时间戳,判断所述数据变更日志是否为当前已处理的最新数据变更日志的下一个数据变更日志。
示例性地,可以是判断该数据变更日志的顺序编号否等于上述[lastID]+1,以及该数据变更日志的时间戳是否为当前已处理最新数据变更日志的未来时刻,如果是,则判断该数据变更日志为当前已处理的最新数据变更日志的下一个数据变更日志,业务服务器按照该数据变更日志的内容来处理对应的数据单元,处理完成后,从待处理日志队列中删除该数据变更日志,并将该数据变更日志的日志ID(顺序编号)赋值给[lastID],然后继续处理待处理日志队列中的下一条日志(当前处于队首状态)。如果判断该数据变更日志的顺序编号等于上述[lastID]+n(n为大于1的整数),以及该数据变更日志的时间戳为当前已处理最新数据变更日志的未来时刻,则该数据变更日志与当前已处理最新数据变更日志之间还存在有其他未处理的数据变更日志。
本实施例中,上述无效的数据变更日志,可以是包含以下几种情况:一、该第一数据变更日志的顺序编号小于当前已执行数据同步的第一数据变更日志的最新顺序编号,和/或该第一数据变更日志的发生时间戳所表征的时间(比如,为2021年3月16日)早于当前已执行数据同步的第一数据变更日志的最新时间戳所表征的时间(比如,为2021年3月17日)之前。
本申请一可能的实施例中,上述步骤S522中,如果根据该数据变更日志的顺序编号,判断为第二数据变更日志(日志ID为0),代表了源业务服务器在日志时间戳执行了内存数据的初始化,则此时需要比较该日志时间戳是否晚于[lastT],如果是,则清空待处理日志队列及内存中的对应业务数据,启动全量数据同步过程。
本申请实施例中,上述步骤S523中,具体包括如下步骤:S5231-S5234:
S5231、若所述数据变更日志中包含的数据变更方式为数据单元增加,则根据所述数据变更日志中包含的数据单元标识和数据内容,在内存中插入对应的数据单元。
S5232、若所述数据变更日志中包含的数据变更方式为数据单元删除,则根据所述变更日志中包含的数据单元标识,从内存中将对应的数据单元删除。
S5233、若所述数据变更日志中包含的数据变更方式为数据替换,则根据所述数据变更日志中包含的数据单元标识和修改后的数据,将内存中对应数据单元的数据替换为所述修改后的数据。
S5234、若所述数据变更日志中包含的数据变更方式为数据修改,则根据所述数据变更日志中包含的数据单元标识、数据位置和差异数据,将内存中对应数据单元的对应数据位置的数据进行修改。
本申请方案将采用全量数据同步加增量数据日志方式实现服务器间的数据实时同步,可在数据规模较大时和业务处理频繁的场景下,提高服务器间数据同步的实时性。
图7是本发明一示例性实施例示出的一种数据同步装置的结构示意图;参照图7所示,该装置700应用于业务服务器,该装置700包括:
第一监听模块701,用于在初始化后,监听本业务服务器上所产生的需要与其他业务服务器进行同步的目标业务数据是否发生更新;
日志生成模块702,用于若发生更新,则生成记录该目标业务数据本次更新的一个或多个第一数据变更日志;
发送模块703,用于将生成的所述第一数据变更日志发送至目标业务服务器,以使所述目标业务服务器接收所述第一数据变更日志,根据所述第一数据变更日志对本地内存中的目标业务数据进行同步更新。
可选地,所述业务服务器用于将所述目标业务数据分数据单元进行存储;上述日志生成模块702,具体用于:
基于本次更新的发生时间戳、更新的数据单元的标识、本次更新发生次序的编号、数据变更内容和数据变更方式生成一个或多个所述第一数据变更日志。
可选地,上述日志生成模块702,还用于:
若本业务服务器发生初始化,生成记录所述目标业务数据发生初始化的第二数据变更日志;其中,所述第二数据变更日志中包含该日志的顺序编号和初始化时间戳,所述顺序编号用于表征本次初始化发生在所述第一数据变更日志对应的更新之前;
上述发送模块703,还用于:
将所述第二数据变更日志发送至所述目标业务服务器,以使所述目标业务服务器接收所述第二数据变更日志,根据所述第二数据变更日志向所述业务服务器请求获取所述目标业务数据的全量数据。
可选地,所述业务服务器还用于对生成的所有数据变更日志进行存储,针对存储时间超出指定时间的数据变更日志,在判断不为距当前最近的一条数据变更日志后将其删除。
可选地,上述装置,还包括:
接收模块(图中未示出),用于若接收到目标业务服务器发送的全量数据同步请求,则将当前所述目标业务数据对应的最新数据变更日志的信息发送至所述目标业务服务器;
同步模块(图中未示出),以及执行与所述目标业务服务器之间所述目标业务数据的全量数据的同步过程。
可选地,还包括:
第二监听模块(图中未示出),用于本业务服务器若监听到一源业务服务器发送了数据变更日志,则将所述数据变更日志添加至对应的待处理日志队列中;
处理模块(图中未示出),用于按顺序处理所述待处理日志队列中的数据变更日志,根据数据变更日志记录的更新内容对本地内存中的对应业务数据进行同步更新。
可选地,上述处理模块,具体用于:
若所述数据变更日志中包含的数据变更方式为数据单元增加,则根据所述数据变更日志中包含的数据单元标识和数据内容,在内存中插入对应的数据单元;
若所述数据变更日志中包含的数据变更方式为数据单元删除,则根据所述变更日志中包含的数据单元标识,从内存中将对应的数据单元删除;
若所述数据变更日志中包含的数据变更方式为数据替换,则根据所述数据变更日志中包含的数据单元标识和修改后的数据,将内存中对应数据单元的数据替换为所述修改后的数据;
若所述数据变更日志中包含的数据变更方式为数据修改,则根据所述数据变更日志中包含的数据单元标识、数据位置和差异数据,将内存中对应数据单元的对应数据位置的数据进行修改。
可选地,上述处理模块,具体用于:
向所述源服务器发送对应业务数据的全量数据同步请求,以使所述源业务服务器对该业务数据进行复制得到业务数据副本;
清空本地内存中的对应业务数据,从所述原业务服务器获取所述业务数据副本进行存储。
本公开另一实施例中还提供了一种机器可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述的数据同步方法的步骤。以实现能够在业务数据更新较为频繁的情况下保持业务服务器间数据的更高的一致性,并且避免在数据同步的过程再次发生数据更新导致的数据同步失败的问题。
图8是本发明一示例性实施例示出的一种计算机设备的结构示意图;本发明实施例中提供的一种电子设备,如图8所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信;
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的程序时,实现上述任一实施例中所述的数据同步方法的步骤;业务服务器上若有生成的需要与其他业务服务器进行数据同步的目标业务数据,业务服务器在初始化后,会实时监听该目标业务数据是否发生更新;若发生更新,则生成记录本次更新的第一数据变更日志,将该第一数据变更日志发送至需要执行目标业务数据同步的目标业务服务器,目标业务服务器接收第一数据变更日志,根据该第一数据变更日志对本地内存中的目标业务数据进行同步更新。进而本申请中,业务服务器通过第一数据变更日志记录目标业务数据的每次更新,并将该第一数据变更日志发送至目标业务服务器,由目标业务服务器根据数据变更日志对本地内存中的目标业务数据进行同步更新,以此实现源业务服务器与目的业务服务器之间的目标业务数据的同步;本申请相对于现有技术,能够在业务数据更新较为频繁的情况下保持业务服务器间数据的更高的一致性,并且避免在数据同步的过程再次发生数据更新导致的数据同步失败的问题。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部磁盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (10)

1.一种数据同步的方法,其特征在于,所述方法应用于业务服务器,所述方法包括:
在初始化后,监听本业务服务器上所产生的需要与其他业务服务器进行同步的目标业务数据是否发生更新;
若发生更新,则生成记录该目标业务数据本次更新的一个或多个第一数据变更日志;
将生成的所述第一数据变更日志发送至目标业务服务器,以使所述目标业务服务器接收所述第一数据变更日志,根据所述第一数据变更日志对本地内存中的目标业务数据进行同步更新。
2.根据权利要求1所述的方法,其特征在于,所述业务服务器用于将所述目标业务数据分数据单元进行存储,所述生成记录该目标业务数据本次更新的一个或多个第一数据变更日志,包括:
基于本次更新的发生时间戳、更新的数据单元的标识、本次更新发生次序的编号、数据变更内容和数据变更方式生成一个或多个所述第一数据变更日志。
3.根据权利要求2所述的方法,其特征在于,在所述监听本业务服务器上所述目标业务数据是否发生更新之前,所述方法还包括:
若本业务服务器发生初始化,生成记录所述目标业务数据发生初始化的第二数据变更日志;其中,所述第二数据变更日志中包含该日志的顺序编号和初始化时间戳,所述顺序编号用于表征本次初始化发生在所述第一数据变更日志对应的更新之前;
将所述第二数据变更日志发送至所述目标业务服务器,以使所述目标业务服务器接收所述第二数据变更日志,根据所述第二数据变更日志向所述业务服务器请求获取所述目标业务数据的全量数据。
4.根据权利要求3所述的方法,其特征在于,所述业务服务器还用于对生成的所有数据变更日志进行存储,针对存储时间超出指定时间的数据变更日志,在判断不为距当前最近的一条数据变更日志后将其删除。
5.根据权利要求1-4任一所述的方法,其特征在于,所述方法,还包括:
若接收到目标业务服务器发送的全量数据同步请求,则将当前所述目标业务数据对应的最新数据变更日志的信息发送至所述目标业务服务器;
以及执行与所述目标业务服务器之间所述目标业务数据的全量数据的同步过程。
6.根据权利要求1-4任一所述的方法,其特征在于,所述方法,还包括:
本业务服务器若监听到一源业务服务器发送了数据变更日志,则将所述数据变更日志添加至对应的待处理日志队列中;
按顺序处理所述待处理日志队列中的数据变更日志,根据数据变更日志记录的更新内容对本地内存中的对应业务数据进行同步更新。
7.根据权利要求6所述的方法,其特征在于,若数据变更日志为第一数据变更日志,则所述根据数据变更日志记录的更新内容对本地内存中的对应业务数据进行更新,包括:
若所述数据变更日志中包含的数据变更方式为数据单元增加,则根据所述数据变更日志中包含的数据单元标识和数据内容,在内存中插入对应的数据单元;
若所述数据变更日志中包含的数据变更方式为数据单元删除,则根据所述变更日志中包含的数据单元标识,从内存中将对应的数据单元删除;
若所述数据变更日志中包含的数据变更方式为数据替换,则根据所述数据变更日志中包含的数据单元标识和修改后的数据,将内存中对应数据单元的数据替换为所述修改后的数据;
若所述数据变更日志中包含的数据变更方式为数据修改,则根据所述数据变更日志中包含的数据单元标识、数据位置和差异数据,将内存中对应数据单元的对应数据位置的数据进行修改。
8.根据权利要求6所述的方法,其特征在于,若数据变更日志为第二数据变更日志,则所述根据数据变更日志记录的更新内容对本地内存中的对应业务数据进行更新,包括:
向所述源服务器发送对应业务数据的全量数据同步请求,以使所述源业务服务器对该业务数据进行复制得到业务数据副本;
清空本地内存中的对应业务数据,从所述原业务服务器获取所述业务数据副本进行存储。
9.一种虚拟场景的直播装置,其特征在于,所述装置应用于业务服务器,所述装置包括:
第一监听模块,用于在初始化后,监听本业务服务器上所产生的需要与其他业务服务器进行同步的目标业务数据是否发生更新;
日志生成模块,用于若发生更新,则生成记录该目标业务数据本次更新的一个或多个第一数据变更日志;
发送模块,用于将生成的所述第一数据变更日志发送至目标业务服务器,以使所述目标业务服务器接收所述第一数据变更日志,根据所述第一数据变更日志对本地内存中的目标业务数据进行同步更新。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8任一所述方法的步骤。
CN202110326796.XA 2021-03-26 2021-03-26 一种数据同步的方法及装置 Active CN113268540B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110326796.XA CN113268540B (zh) 2021-03-26 2021-03-26 一种数据同步的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110326796.XA CN113268540B (zh) 2021-03-26 2021-03-26 一种数据同步的方法及装置

Publications (2)

Publication Number Publication Date
CN113268540A true CN113268540A (zh) 2021-08-17
CN113268540B CN113268540B (zh) 2024-07-12

Family

ID=77228246

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110326796.XA Active CN113268540B (zh) 2021-03-26 2021-03-26 一种数据同步的方法及装置

Country Status (1)

Country Link
CN (1) CN113268540B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113779143A (zh) * 2021-08-20 2021-12-10 中国邮政储蓄银行股份有限公司 双活数据中心和业务系统
CN114504828A (zh) * 2022-02-08 2022-05-17 北京趣玩天橙科技有限公司 一种数据回滚实现内存一致性的方法及系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809202A (zh) * 2015-04-24 2015-07-29 联动优势科技有限公司 一种数据库同步的方法和装置
CN105208060A (zh) * 2014-06-19 2015-12-30 阿里巴巴集团控股有限公司 业务数据同步方法、装置及系统
CN106713392A (zh) * 2015-11-13 2017-05-24 阿里巴巴集团控股有限公司 数据同步方法、装置和系统
CN107180116A (zh) * 2017-06-28 2017-09-19 努比亚技术有限公司 一种数据同步处理方法、移动终端以及计算机可读存储介质
CN110134737A (zh) * 2019-05-20 2019-08-16 中国铁道科学研究院集团有限公司 数据变化监听方法及装置、电子设备和计算机可读存储介质
CN110597914A (zh) * 2019-09-18 2019-12-20 北京思维造物信息科技股份有限公司 数据传输系统、方法、装置及设备
CN111708787A (zh) * 2020-05-07 2020-09-25 中国人民财产保险股份有限公司 多中心业务数据管理系统
CN112131237A (zh) * 2020-09-28 2020-12-25 京东数字科技控股股份有限公司 数据同步方法、装置、设备及计算机可读介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105208060A (zh) * 2014-06-19 2015-12-30 阿里巴巴集团控股有限公司 业务数据同步方法、装置及系统
CN104809202A (zh) * 2015-04-24 2015-07-29 联动优势科技有限公司 一种数据库同步的方法和装置
CN106713392A (zh) * 2015-11-13 2017-05-24 阿里巴巴集团控股有限公司 数据同步方法、装置和系统
CN107180116A (zh) * 2017-06-28 2017-09-19 努比亚技术有限公司 一种数据同步处理方法、移动终端以及计算机可读存储介质
CN110134737A (zh) * 2019-05-20 2019-08-16 中国铁道科学研究院集团有限公司 数据变化监听方法及装置、电子设备和计算机可读存储介质
CN110597914A (zh) * 2019-09-18 2019-12-20 北京思维造物信息科技股份有限公司 数据传输系统、方法、装置及设备
CN111708787A (zh) * 2020-05-07 2020-09-25 中国人民财产保险股份有限公司 多中心业务数据管理系统
CN112131237A (zh) * 2020-09-28 2020-12-25 京东数字科技控股股份有限公司 数据同步方法、装置、设备及计算机可读介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113779143A (zh) * 2021-08-20 2021-12-10 中国邮政储蓄银行股份有限公司 双活数据中心和业务系统
CN114504828A (zh) * 2022-02-08 2022-05-17 北京趣玩天橙科技有限公司 一种数据回滚实现内存一致性的方法及系统
CN114504828B (zh) * 2022-02-08 2023-04-28 北京趣玩天橙科技有限公司 一种数据回滚实现内存一致性的方法及系统

Also Published As

Publication number Publication date
CN113268540B (zh) 2024-07-12

Similar Documents

Publication Publication Date Title
CN108920272B (zh) 一种数据处理方法、装置、计算机设备及存储介质
US10983868B2 (en) Epoch based snapshot summary
US10552142B2 (en) System and method for distributed revision control
US8396936B2 (en) Computer system with cooperative cache
CN111159233B (zh) 分布式缓存方法、系统、计算机设备以及存储介质
US20180004766A1 (en) Regenerated container file storing
CN111262726B (zh) 一种配置信息更新方法、装置及计算机可读存储介质
US20190042323A1 (en) Global usage tracking and quota enforcement in a distributed computing system
CN105744001B (zh) 分布式缓存系统扩容方法、数据访问方法及装置和系统
CN111049928B (zh) 数据同步方法、系统、电子设备及计算机可读存储介质
CN113268540A (zh) 一种数据同步的方法及装置
US20150248350A1 (en) Apparatus and method for managing cache in cache distributed environment
KR101527634B1 (ko) 샤딩 서비스를 제공하는 방법 및 장치
CN115203255A (zh) 数据查询方法、装置、电子设备及存储介质
CN115442439A (zh) 分布式缓存集群管理方法、系统、终端及存储介质
US9767023B2 (en) Method of controlling data writing to persistent storage device
CN113849119B (zh) 存储方法、存储装置和计算机可读存储介质
US20150100545A1 (en) Distributed database system and a non-transitory computer readable medium
US11855868B2 (en) Reducing the impact of network latency during a restore operation
CN110798492B (zh) 数据存储方法及装置、数据处理系统
CN111708763A (zh) 分片集群的数据迁移方法、装置和分片集群系统
CN111756800A (zh) 一种处理突发流量的方法和系统
CN109992447B (zh) 数据复制方法、装置及存储介质
CN107493308B (zh) 一种发送消息的方法和装置及分布式设备集群系统
CN108900509B (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
GR01 Patent grant
GR01 Patent grant