CN110851526B - 数据同步方法、装置及系统 - Google Patents
数据同步方法、装置及系统 Download PDFInfo
- Publication number
- CN110851526B CN110851526B CN201810871451.0A CN201810871451A CN110851526B CN 110851526 B CN110851526 B CN 110851526B CN 201810871451 A CN201810871451 A CN 201810871451A CN 110851526 B CN110851526 B CN 110851526B
- Authority
- CN
- China
- Prior art keywords
- data
- session
- judgment result
- synchronized
- fragment
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 239000012634 fragment Substances 0.000 claims abstract description 198
- 230000001360 synchronised effect Effects 0.000 claims abstract description 194
- 230000015654 memory Effects 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000013467 fragmentation Methods 0.000 description 6
- 238000006062 fragmentation reaction Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据同步方法、装置及系统。其中,该方法包括:目的端设备接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;上述目的端设备根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;上述目的端设备依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。本申请解决了现有技术中无法保证有序的实现数据库之间的数据同步的技术问题。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种数据同步方法、装置及系统。
背景技术
现有技术中,一般是通过重放操作日志实现的数据库的数据同步机制,由于操作日志按照对数据库的操作顺序记录了所有操作的内容,一般而言,如果能够保证顺序的重放操作日志,则可以保证有序的实现数据同步。
但是,可能导致数据同步乱序的情况仍旧存在,例如:1、源端设备启动的两个程序重放了同一个操作日志文件,同步到同一个目的端设备之后,两个程序的重放进度不一样,导致数据同步乱序。2、只有一个程序在重放操作日志文件,且为顺序发送,但是由于网络原因导致源端设备先发送的请求反而后被目的端设备接收到,导致数据同步乱序。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据同步方法、装置及系统,以至少解决现有技术中无法保证有序的实现数据库之间的数据同步的技术问题。
根据本申请实施例的一个方面,提供了一种数据同步方法,包括:目的端设备接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;上述目的端设备根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;上述目的端设备依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
根据本申请实施例的另一方面,还提供了一种数据同步装置,包括:接收模块,用于接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;判断模块,用于根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;确定模块,用于依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
根据本申请实施例的另一方面,还提供了一种存储介质,上述存储介质包括存储的程序,其中,在上述程序运行时控制上述存储介质所在设备执行以下步骤:接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
根据本申请实施例的另一方面,还提供了一种计算设备,包括:处理器,上述处理器用于运行程序,其中,在上述程序运行时执行以下步骤:接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
根据本申请实施例的另一方面,还提供了一种数据同步系统,包括:处理器;以及存储器,与上述处理器连接,用于为上述处理器提供处理以下处理步骤的指令:接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
在本申请实施例中,通过目的端设备接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;上述目的端设备根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;上述目的端设备依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
容易注意到的是,源端设备发送数据同步请求至目的端设备,由于上述数据同步请求中携带待同步数据以及对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;目的端设备可以根据上述第一会话标识和同步序列号确定是否同步。其中,目的端设备通过根据上述第一会话标识判断上述第一会话是否存在,进而可以有效避免在分布式环境中多个程序同步同一个数据范围的数据时,所导致的数据同步乱序;通过判断上述同步序列号和当前的同步序列号是否一致,可以有效避免由于网络链路超时等问题导致的数据同步乱序。相比较现有技术,本申请达到了保证有序的实现数据库之间的数据同步的目的,从而实现了提高跨域数据同步的准确性和效率的技术效果。
由此,本申请提供的上述实施例的方案解决了现有技术中无法保证有序的实现数据库之间的数据同步的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种用于实现数据同步方法的计算机终端(或移动设备)的硬件结构框图;
图2是根据本申请实施例的一种数据同步方法的流程图;
图3是根据本申请实施例的一种可选的建立会话的步骤流程图;
图4是根据本申请实施例的一种可选的数据同步方法的流程图;
图5是根据本申请实施例的一种可选的数据同步方法的流程图;
图6a是根据本申请实施例的一种可选的数据同步方法的流程图;
图6b是根据本申请实施例的一种可选的数据同步方法的流程图;
图7是根据本申请实施例的一种可选的数据同步的数据流向示意图;
图8是根据本申请实施例的一种可选的数据同步方法的流程图;
图9是根据本申请实施例的一种数据同步装置的结构示意图;以及
图10是根据本申请实施例的一种计算机终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
表格存储(TableStore):可以是一种可提供海量结构化数据的存储和实时访问功能的分布式NoSQL数据库,可以但不限于通过数据分片和负载均衡技术,达到规模的无缝扩展。
数据分片(partition):表格存储中一个表的数据可以按照数据范围切分为许多个数据分片,数据分片可以分布在不同的机器上以实现负载均衡和规模的横向扩展。其中,每个数据分片包含连续一段主键范围的数据,当一个数据分片的数据量或访问量超过一定阈值时,会触发该数据分片(父数据分片)分裂,分裂为两个子数据分片,各包含父数据分片数据范围内的一部分数据,并且,分裂后数据会按照新分片的数据范围写入新的分片,不再写入旧的分片。
提交日志(commit log):在数据库系统中,一次操作或事务在数据库系统中被提交,则称为一次提交(commit),提交日志是对这些提交操作的日志记录,包含操作类型、数据以及一些其他信息,提交日志可以追踪哪些操作在数据库系统中被应用,以及这些操作发生的顺序,因此,可用于故障恢复、数据同步等。其中,在表格存储中,每个分片拥有自己独立的提交日志。
会话(Session):是通信双方从开始通信到通信结束期间的一个上下文(Context)。这个上下文是一段位于服务器端的内存:记录了本次连接的客户端机器、通过哪个应用程序、哪个用户登录等信息。
实施例1
根据本申请实施例,提供了一种数据同步方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例1所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现数据同步方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的数据同步方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据同步方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
在相关技术领域中,目前数据库系统的一个重要功能是跨域数据同步,数据同步是将对一个数据库的更改,有序的发送给部署在另一个区域的数据库系统,最终使得两个数据库中拥有相同的数据。通过跨域数据同步可以实现主备容灾、一主多备、单元化架构等,有效提高了业务的容灾能力和全球化访问的能力。
实现数据同步的一个重要前提是如果两个数据库有序的应用相同的一系列更改,则两个数据库最终存储的数据一定是一致的。但是,如果不能保证操作的顺序,则数据同步完后两个数据库最终存储的数据很可能是不一致的。例如,如果对于同一行分别执行“写入”与“删除”操作,则该行数据最终是不存在的;但如果执行顺序变成先“删除”后“写入”,该行数据最终是存在的。因此,如何在实现数据同步中,保证操作保序非常重要。
在上述运行环境下,本申请提供了如图2所示的一种数据同步方法,该同步方法可以但不限于应用于一种可选的分布式NoSQL服务中,例如,可以应用于表格存储服务、开源的HBase、AWS的DynamoDB等中。图2是根据本申请实施例的一种数据同步方法的流程图,如图2所示,该方法可以包括如下步骤:
步骤S202,目的端设备接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号。
在上述步骤S202中,上述目的端设备可以为目的端数据库系统,与源端设备(例如,源端数据库系统)之间可以通过通讯连接实现数据交互,例如,上述目的端设备可以接收源端设备发送的数据同步请求,以及该数据同步请求中携带第一数据分片中的待同步数据,实现与源端设备的数据同步。
在一种可选的实施例中,在全量数据同步时,上述待同步数据指第一数据分片中的数据,在增量数据同步时,上述待同步数据指提交日志中记录的对数据库的操作。
需要说明的是,在表格存储中,数据会被切分为很多的数据分片(Partition),每个数据分片均会记录自己的提交日志,进而数据分片可以依据该提交日志实现动态的分裂与合并,以进行负载均衡。
步骤S204,目的端设备根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果。
需要说明的是,由于在同一个数据范围内,源端设备和目的端设备之间只能建立一个会话,否则会由于存在多个程序在同步同一个数据范围的数据,可能导致数据同步乱序。因此,为了避免出现多个程序同步同一个数据范围的数据导致的数据同步乱序的问题,作为一种可选的实施例,上述目的端设备通过判断是否已经存在与第一会话标识对应的第一会话,可以判断在同一个数据范围内是否已经建立了一个会话,例如,若已经存在与第一会话标识对应的第一会话,则表明在同一个数据范围内已经建立第一会话,则目的端设备继续判断上述同步序列号和当前的同步序列号是否一致;若未存在与第一会话标识对应的第一会话,则表明在同一个数据范围内未建立与第一会话一致的第二会话,则目的端设备拒绝接收上述待同步数据。
作为一种可选的实施例,在建立第一会话的第一会话标识之后,在同步待同步的数据时,源端设备发送的待同步数据中需携带当前最新会话的会话标识,即第一会话的第一会话标识,目的端设备只接收携带有最新会话标识的待同步数据,且每次同步成功后目的端设备将第一会话的同步序列号加1,且源端设备在发送下一个待同步数据时,对上述待同步数据进行同步的同步序列号加1。进而,可以避免由于网络链路超时等问题,导致的“源端设备先发送的待同步数据,目的端设备反而后接收到”的乱序问题,在源端设备遇到网络超时等错误时,可以立即重试并继续同步。
步骤S206,上述目的端设备依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
在上述步骤S206中,在上述第一判断结果和上述第二判断结果中的至少之一指示为否时,上述目的端设备确定拒绝接收上述待同步数据;在上述第一判断结果和第二判断结果均指示为是时,上述目的端设备确定允许接收上述待同步数据。
作为一种可选的实施例,在每次同步数据之前,上述源端设备均发送用于对上述待同步数据进行同步的第一会话的第一会话标识(SessionId),以及同步序列号(SequenceNumber)至目的端设备。
上述目的端设备在接收到上述待同步数据、第一会话标识、同步序列号之后,判断与上述第一会话标识对应的第一会话是否存在,得到第一判断结果;如果第一判断结果指示为否,则目的端设备不接受源端设备发送的待同步数据,如果第一判断结果指示为是,则目的端设备判断接收到的同步序列号和当前的同步序列号是否一致,得到第二判断结果;如果第二判断结果指示为否,则目的端设备也不接受源端设备的待同步数据,若上述第一判断结果和第二判断结果均为是时,则目的端设备接受源端设备发送的待同步数据,且上述同步序列号加1。
在上述可选的实施例中,若源端设备与目的端设备之间的数据同步成功,源端设备再次发送待同步数据时,源端设备所发送的待同步数据的同步序列号也要加1。
需要说明的是,本申请实施例可以但不限于通过提供给用户一个带有保序协议的数据同步接口,以便于用户实现上述实施例中所提供的数据同步方法。
在本申请实施例中,通过目的端设备接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;上述目的端设备根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;上述目的端设备依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
容易注意到的是,源端设备发送数据同步请求至目的端设备,由于上述数据同步请求中携带待同步数据以及对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;目的端设备可以根据上述第一会话标识和同步序列号确定是否同步。其中,目的端设备通过根据上述第一会话标识判断上述第一会话是否存在,进而可以有效避免在分布式环境中多个程序同步同一个数据范围的数据时,所导致的数据同步乱序;通过判断上述同步序列号和当前的同步序列号是否一致,可以有效避免由于网络链路超时等问题导致的数据同步乱序。
相比较现有技术,本申请达到了保证有序的实现数据库之间的数据同步的目的,从而实现了提高跨域数据同步的准确性和效率的技术效果。
由此,本申请提供的上述实施例的方案解决了现有技术中无法保证有序的实现数据库之间的数据同步的技术问题。
在一种可选的实施例中,上述目的端设备依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据,包括:
步骤S302,在上述第一判断结果和上述第二判断结果中的至少之一指示为否时,确定拒绝接收上述待同步数据;
步骤S304,在上述第一判断结果和第二判断结果均为是时,确定允许接收上述待同步数据。
基于上述步骤S302至步骤S304提供的可选的实施例,目的端设备在接收到上述数据同步请求,以及待同步数据、第一会话标识、同步序列号之后,根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;如果第一判断结果指示为否,则目的端设备不接受源端设备的数据同步,如果第一判断结果指示为是,则判断同步序列号是否是当前的同步序列号,得到第二判断结果;如果第二判断结果指示为否,目的端设备也不接受源端设备的数据同步,如果第二判断结果指示为是,则目的端设备接受源端设备的数据同步。
作为一种可选的实施例,本申请实施例在数据同步方法的实现流程中加入会话控制机制,还需要限制必须先建立会话才能进行数据同步,例如,如图3所示,通过建立会话进行数据同步的方法,可以包括如下实现步骤:
步骤S31,建立第一会话;
在上述步骤S31中,源端设备在发送第一数据分片中的待同步数据之前,先发送请求建立第一会话的会话请求至目的端设备。
步骤S33,判断是否成功建立第一会话。
在上述步骤S33中,若未成功建立第一会话,则执行步骤S35;若成功建立第一会话,则执行步骤S37。
步骤S35,退出;
步骤S37,使用第一会话进行数据同步。
需要说明的是,在建立第一会话时,需要保证在同一个数据范围内源端设备和目的端设备只能建立一个会话,否则如果多个程序在同步同一范围的数据,可能导致乱序。
在一种可选的实施例中,图4是根据本申请实施例的一种可选的数据同步方法的流程图,如图4所示,目的端设备接收来自源端设备的数据同步请求之前,上述方法还包括如下方法步骤:
步骤S402,目的端设备接收来自源端设备的会话请求,其中,该会话请求用于请求建立上述第一会话,且上述会话请求中携带有上述第一数据分片的第一分片标识以及第一数据分片中待同步数据的数据范围。
在上述步骤S402中,源端设备在发送数据同步请求以及待同步数据至目的端设备前,需要先发送会话请求给目的端设备,请求建立第一会话。
步骤S404,目的端设备判断是否存在第二会话,该第二会话对应的数据范围与上述会话请求中携带的数据范围具有重叠部分,得到第三判断结果。
需要说明的是,上述第二会话对应的数据范围与源端设备发送的会话请求中携带的数据范围之间具有重叠部分,则应当做进一步判断,例如,若数据范围(1,100)已经对应存在第二会话,则源端设备请求建立数据范围(90,150)对应的第一会话时,也应当认为存在第二会话。
步骤S406,目的端设备依据上述第三判断结果确定是否建立上述第一会话。
在一种可选的实施例中,上述目的端设备依据上述第三判断结果确定是否建立上述第一会话,包括:
步骤S4062,在上述第三判断结果指示不存在上述第二会话时,上述目的端设备建立上述第一会话;
步骤S4064,在上述第三判断结果指示存在上述第二会话时,上述目的端设备依据预设规则确定是否建立上述第一会话。
在一种可选的实施例中,在目的端设备接收到源端设备发送的会话请求之后,可以根据第一数据分片中待同步数据的数据范围,判断是否存在第二会话,得到第三判断结果,以确定与上述待同步数据的数据范围相重叠的部分是否已经了第二会话。如果第三判断结果指示为不存在上述第二会话时,则表明当前不存在与上述待同步数据的数据范围相重叠的第二会话,可以直接建立第一会话,不会与已有的数据同步冲突。
此外,还存在一种可选的实施例中,如果已经存在第二会话,表明已经有程序在向这个分片同步数据分片了,因此,可以依据预设规则判断是否结束之前的第二会话,建立新的第一会话,其中,上述预设规则可以为比较上述第二会话的优先级与上述第一会话的优先级,根据上述第二会话的优先级和第一会话的优先级的高低,进行判断是否建立第一会话。
需要说明的是,本申请实施例中,在具备父子关系的数据分片建立会话时,可以优先为子数据分片建立会话,在不具备父子关系的数据分片建立会话时,优先为版本号大的数据分片建立会话,即优先为高版本的数据分片建立会话。
通过本申请上述实施例,可以保障一个数据范围内只能建立一个会话,从机制上避免了由于一个数据分片同时被两个或多个程序同步,而导致的数据同步乱序的技术问题。
在一种可选的实施例中,图5是根据本申请实施例的一种可选的数据同步方法的流程图,如图5所示,上述目的端设备依据预设规则确定是否建立上述第一会话,包括:
步骤S502,目的端设备比较上述第一会话和第二会话的优先级;
步骤S504,在上述第一会话的优先级高于上述第二会话的优先级时,结束上述第二会话,并建立上述第一会话;
步骤S506,在上述第一会话的优先级低于上述第二会话的优先级时,拒绝建立上述第一会话。
在一种可选的实施例中,上述目的端设备比较上述第一会话和第二会话的优先级;并在上述第一会话的优先级高于上述第二会话的优先级时,结束上述第二会话,并建立上述第一会话;在上述第一会话的优先级低于上述第二会话的优先级时,拒绝建立上述第一会话。
通过本申请上述实施例,可以保障一个数据范围内只能建立一个会话,从机制上避免了由于一个数据分片同时被两个或多个程序同步,而导致的数据同步乱序的技术问题。
在一种可选的实施例中,图6a是根据本申请实施例的一种可选的数据同步方法的流程图,如图6a所示,上述目的端设备比较上述第一会话和第二会话的优先级包括:
步骤S602a,目的端设备确定上述第一数据分片和与上述第二会话对应的第二数据分片的父子关系。
作为一种可选的实施例,若一个分片从另一个分片分裂或合并得到,则这两个分片存在父子关系,其中,分裂或合并前的分片为父数据分片,由父数据分片分裂或合并出的分片为子数据分片,例如,当父数据分片分裂后,子数据分片的数据范围是父数据分片的一个子集。
步骤S604a,在上述第一数据分片为上述第二数据分片的子数据分片时,确定上述第一会话的优先级高于上述第二会话的优先级;
步骤S606a,在上述第一数据分片为上述第二数据分片的父数据分片时,确定上述第一会话的优先级低于上述第二会话的优先级。
作为一种可选的实施例,在同一个数据范围内,父数据分片先建立会话进行数据同步。当父数据分片分裂后,子数据分片的数据范围是父数据分片的一个子集,再次建立第一会话时会发现已经有一个第二会话在同步,此时需要终止之前父数据分片的第二会话,重新建立第一会话;即若上述第二数据分片先建立第二会话,第一数据分片为上述第二数据分片的子数据分片时,可以终止第二数据分片建立的第二会话,并重新建立第一会话。
需要说明的是,当子数据分片建立会话后,父数据分片就不可以再替代子数据分片了,因为父数据分片的数据要比子数据分片更旧。本申请实施例可以通过数据分片的分片信息中加入第几代的信息,以判断哪个数据分片是父数据分片,哪个数据分片是子数据分片,其中,子数据分片的代数要比父数据分片的代数大,例如,若父数据分片为第1代,则子数据分片为第2代。
通过本申请实施例提供的会话建立条件限制,可以实现在开始同步子数据分片数据后,不会再同步父数据分片数据,进而达到了在数据分片或同步程序发生故障迁移后,由迁移后的同步程序进行数据同步,不再接收之前的同步程序的数据同步。
在一种可选的实施例中,上述目的端设备确定上述第一数据分片和与上述第二会话对应的第二数据分片的父子关系之前,上述方法还包括:
上述目的端设备判断上述第一数据分片和第二数据分片是否具有上述父子关系;其中,在上述第一数据分片和第二数据分片不具有上述父子关系时,确定上述第一数据分片和第二数据分片的优先级相同。
由于在本申请实施例中,源端设备将每个数据分片的操作日志数据有序地同步到目的端设备中,对于具备父子关系的数据分片,需要保证先同步完父数据分片(分裂或合并前的分片),再开始同步子数据分片(由父数据分片分裂或合并出的分片)。对于不具备父子关系的数据分片,由于这些数据分片的数据范围不同,互不影响,因而可以为相同的优先级,同时进行数据同步。
在一种可选的实施例中,图6b是根据本申请实施例的一种可选的数据同步方法的流程图,如图6b所示,上述目的端设备比较上述第一会话和第二会话的优先级还包括:
步骤S602b,目的端设备确定上述第一数据分片的第一版本号和与上述第二会话对应的第二数据分片的第二版本号;
步骤S604b,在上述第一版本号大于上述第二版本号时,确定上述第一会话的优先级高于上述第二会话的优先级;
步骤S606b,在上述第一版本号小于上述第二版本号时,确定上述第一会话的优先级低于上述第二会话的优先级。
需要说明的是,当一个数据分片或者同步程序发生故障时,会发生故障迁移(failover),在发生故障迁移之后,需要重新建立新的会话,以替代发生故障迁移之前的会话。
为了判断需要对哪个会话进行更新,可以但不限于在故障迁移时增加数据分片的版本号,并在建立会话时带上当时分片的版本号,可以实现版本号大的数据分片代替版本号小的数据分片建立会话,反之则不允许。
作为一种可选的实施例,在实现数据同步的过程中,源端设备对待同步数据进行分片,得到多个分片,每个分片会记录自己的操作日志,每个数据分片会动态的分裂与合并,以进行负载均衡。当一个数据分片分裂时,必须先同步完分裂前的父数据分片的数据,才能开始同步分裂后得到子数据分片的数据,合并时也类似。
作为另一种可选的实施例,目的端设备也会存在多个数据分片,其中,源端设备和目的端设备所存在的数据分片并不是一一对应的。由于,每个数据分片包含的数据范围可能不同,那么在数据同步时数据流向将是一个M对N的关系,如图7所示,源端设备中的源表有4个数据分片,目的端设备中的目的表只有3个数据分片,数据同步程序会读取源表4个数据分片的操作日志,然后将对应操作的数据分片同步给目的表,其中,源表中的数据分片会根据主键的范围落在目的表的某个分片上。
如图7所示,由于源表和目的表中的数据分片包含的数据范围不同,因而,源表的一个数据分片中的数据可能会同步给目的表的多个数据分片,例如,源表中数据分片2中的数据同步给目的表中的数据分片a和数据分片b,源表中数据分片3中的数据同步给目的表中的数据分片b和数据分片c。
为便于理解本申请所提出的数据同步方法实施例,以下通过一种可选的实施方式进行解释说明,图8是根据本申请实施例的一种可选的数据同步方法的流程图,如图8所示,上述数据同步方法可以但不限于通过如下方法步骤实现:
步骤S802,目的端设备接收来自源端设备的会话请求。
在上述步骤S802中,上述目的端设备可以为目的端数据库系统,与源端数据库系统之间可以通过通讯连接实现数据交互。
其中,该会话请求用于请求建立上述第一会话,且上述会话请求中携带有上述第一数据分片的第一分片标识以及第一数据分片中待同步数据的数据范围。
步骤S804,目的端设备判断是否存在第二会话。
需要说明的是,上述第二会话对应的数据范围与上述会话请求中携带的数据范围具有重叠部分。
其中,在上述步骤S804中,若判断结果为是,则执行步骤S808,若判断结果为否,则执行步骤S806。
步骤S806,目的端设备建立上述第一会话。
步骤S808,目的端设备比较上述第一会话和第二会话的优先级。
步骤S810,在上述第一会话的优先级高于上述第二会话的优先级时,结束上述第二会话,并建立上述第一会话。
此外,还存在一种可选的实施例中,如果已经存在第二会话,表明已经有程序在向这个分片同步数据分片了,因此,可以依据预设规则判断是否结束之前的第二会话,建立新的第一会话,其中,上述预设规则可以为比较上述第二会话的优先级与上述第一会话的优先级,根据上述第二会话的优先级和第一会话的优先级的高低,进行判断是否建立第一会话。
步骤S812,目的端设备接收来自源端设备的数据同步请求。
在上述步骤S812中,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号。
步骤S814,目的端设备根据上述第一会话标识判断上述第一会话是否存在;以及判断上述同步序列号和当前的同步序列号是否一致。
作为一种可选的实施例,每次同步数据时源端设备均发送已预先建立的用于对上述待同步数据进行同步的第一会话的第一会话标识(SessionId),以及同步序列号(SequenceNumber)至目的端设备。
上述目的端设备在接收到上述待同步数据、第一会话标识、同步序列号之后,判断与上述第一会话标识对应的第一会话是否存在,得到第一判断结果;如果第一判断结果指示为否,则目的端设备不接受源端设备发送的待同步数据,如果第一判断结果指示为是,则目的端设备判断接收到的同步序列号和当前的同步序列号是否一致,得到第二判断结果;如果第二判断结果指示为否,则目的端设备也不接受源端设备的待同步数据,若上述第一判断结果和第二判断结果均为是时,则目的端设备接受源端设备发送的待同步数据,且上述同步序列号加1。
在上述可选的实施例中,在上述第一判断结果和上述第二判断结果中的至少之一指示为否时,执行步骤S818;在上述第一判断结果和第二判断结果均指示为是时,执行步骤S816。
步骤S816,目的端设备确定允许接收上述待同步数据。
步骤S818,目的端设备确定拒绝接收上述待同步数据。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例上述的方法。
实施例2
根据本申请实施例,还提供了一种用于实施上述数据同步方法的数据同步装置的实施例,图9是根据本申请实施例的一种数据同步装置的结构示意图,如图9所示,该装置900包括:接收模块90、判断模块92、确定模块94,其中:
接收模块90,用于接收第一数据分片中的待同步数据,其中,待同步数据中携带有用于对上述待同步数据进行同步的第一会话的第一会话标识;判断模块92,用于判断上述第一会话标识和当前正在使用的第二会话的第二会话标识是否一致,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;确定模块94,用于依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
需要说明的是,上述接收模块90、判断模块92、确定模块94对应于实施例1中的步骤S202至步骤S206,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
此外,仍需要说明的是,本实施例的可选或优选实施方式可以参见实施例1中的相关描述,此处不再赘述。
实施例3
根据本申请实施例,还提供了一种计算设备的实施例,该计算设备包括:处理器,上述处理器用于运行程序,其中,在上述程序运行时执行以下步骤:接收第一数据分片中的待同步数据,其中,待同步数据中携带有用于对上述待同步数据进行同步的第一会话的第一会话标识;判断上述第一会话标识和当前正在使用的第二会话的第二会话标识是否一致,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
在本申请实施例中,通过目的端设备接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;上述目的端设备根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;上述目的端设备依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
容易注意到的是,源端设备发送数据同步请求至目的端设备,由于上述数据同步请求中携带待同步数据以及对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;目的端设备可以根据上述第一会话标识和同步序列号确定是否同步。其中,目的端设备通过根据上述第一会话标识判断上述第一会话是否存在,进而可以有效避免在分布式环境中多个程序同步同一个数据范围的数据时,所导致的数据同步乱序;通过判断上述同步序列号和当前的同步序列号是否一致,可以有效避免由于网络链路超时等问题导致的数据同步乱序。相比较现有技术,本申请达到了保证有序的实现数据库之间的数据同步的目的,从而实现了提高跨域数据同步的准确性和效率的技术效果。
由此,本申请提供的上述实施例的方案解决了现有技术中无法保证有序的实现数据库之间的数据同步的技术问题。
实施例4
根据本申请实施例,还提供了一种数据同步系统的实施例,该系统可执行实施例1、2和3中的任意一种可选或优选的数据同步方法,其中,该系统包括:处理器以及存储器,其中:
处理器;以及存储器,与上述处理器连接,用于为上述处理器提供处理以下处理步骤的指令:接收第一数据分片中的待同步数据,其中,待同步数据中携带有用于对上述待同步数据进行同步的第一会话的第一会话标识;判断上述第一会话标识和当前正在使用的第二会话的第二会话标识是否一致,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
在本申请实施例中,通过目的端设备接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;上述目的端设备根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;上述目的端设备依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
容易注意到的是,源端设备发送数据同步请求至目的端设备,由于上述数据同步请求中携带待同步数据以及对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;目的端设备可以根据上述第一会话标识和同步序列号确定是否同步。其中,目的端设备通过根据上述第一会话标识判断上述第一会话是否存在,进而可以有效避免在分布式环境中多个程序同步同一个数据范围的数据时,所导致的数据同步乱序;通过判断上述同步序列号和当前的同步序列号是否一致,可以有效避免由于网络链路超时等问题导致的数据同步乱序。相比较现有技术,本申请达到了保证有序的实现数据库之间的数据同步的目的,从而实现了提高跨域数据同步的准确性和效率的技术效果。
由此,本申请提供的上述实施例的方案解决了现有技术中无法保证有序的实现数据库之间的数据同步的技术问题。
实施例5
根据本申请的实施例,还提供一种计算机终端的实施例,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机终端可以执行数据同步方法中以下步骤的程序代码:接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
可选地,图10是根据本申请实施例的一种计算机终端的结构框图。如图10所示,该计算机终端1000可以包括:一个或多个(图中仅示出一个)处理器1002、存储器1004、以及外设接口1006等。
其中,存储器可用于存储软件程序以及模块,如本申请实施例中的数据同步方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据同步方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端1000。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:若上述第一判断结果和上述第二判断结果中的至少之一为否时,确定拒绝接收上述待同步数据;若上述第一判断结果和上述第二判断结果均为是时,确定允许接收上述待同步数据。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:接收来自源端设备的会话请求,其中,该会话请求用于请求建立上述第一会话,且上述会话请求中携带有上述第一数据分片的第一分片标识以及第一数据分片中待同步数据的数据范围;判断是否存在第二会话,该第二会话对应的数据范围与上述会话请求中携带的数据范围具有重叠部分,得到第三判断结果;依据上述第三判断结果确定是否建立上述第一会话。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:若上述第三判断结果指示不存在上述第二会话时,上述目的端设备建立上述第一会话;若上述第三判断结果指示存在上述第二会话时,上述目的端设备依据预设规则确定是否建立上述第一会话。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:比较上述第一会话和第二会话的优先级;在上述第一会话的优先级高于上述第二会话的优先级时,结束上述第二会话,并建立上述第一会话;在上述第一会话的优先级低于上述第二会话的优先级时,拒绝建立上述第一会话。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:确定上述第一数据分片和与上述第二会话对应的第二数据分片的父子关系;在上述第一数据分片为上述第二数据分片的子数据分片时,确定上述第一会话的优先级高于上述第二会话的优先级;在上述第一数据分片为上述第二数据分片的父数据分片时,确定上述第一会话的优先级低于上述第二会话的优先级。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:判断上述第一数据分片和第二数据分片是否具有上述父子关系;其中,在上述第一数据分片和第二数据分片不具有上述父子关系时,确定上述第一数据分片和第二数据分片的优先级相同。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:确定上述第一数据分片的第一版本号和与上述第二会话对应的第二数据分片的第二版本号;在上述第一版本号大于上述第二版本号时,确定上述第一会话的优先级高于上述第二会话的优先级;在上述第一版本号小于上述第二版本号时,确定上述第一会话的优先级低于上述第二会话的优先级。
采用本申请实施例,提供了一种数据同步的方案。通过目的端设备接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;上述目的端设备根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;上述目的端设备依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。从而达到了保证有序的实现数据库之间的数据同步的目的,进而解决了现有技术中无法保证有序的实现数据库之间的数据同步的技术问题。
本领域普通技术人员可以理解,图10所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图10其并不对上述电子装置的结构造成限定。例如,计算机终端1000还可包括比图10中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图10所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例6
根据本申请的实施例,还提供了一种存储介质的实施例。可选地,在本实施例中,上述存储介质可以用于保存上述实施例1-3所提供的数据同步方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:接收来自源端设备的数据同步请求,上述数据同步请求中携带第一数据分片中的待同步数据,以及用于对上述待同步数据进行同步的第一会话的第一会话标识和同步序列号;根据上述第一会话标识判断上述第一会话是否存在,得到第一判断结果;以及判断上述同步序列号和当前的同步序列号是否一致,得到第二判断结果;依据上述第一判断结果和第二判断结果确定是否接收上述待同步数据。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:若上述第一判断结果和上述第二判断结果中的至少之一为否时,确定拒绝接收上述待同步数据;若上述第一判断结果和上述第二判断结果均为是时,确定允许接收上述待同步数据。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:接收来自源端设备的会话请求,其中,该会话请求用于请求建立上述第一会话,且上述会话请求中携带有上述第一数据分片的第一分片标识以及第一数据分片中待同步数据的数据范围;判断是否存在第二会话,该第二会话对应的数据范围与上述会话请求中携带的数据范围具有重叠部分,得到第三判断结果;依据上述第三判断结果确定是否建立上述第一会话。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:若上述第三判断结果指示不存在上述第二会话时,上述目的端设备建立上述第一会话;若上述第三判断结果指示存在上述第二会话时,上述目的端设备依据预设规则确定是否建立上述第一会话。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:比较上述第一会话和第二会话的优先级;在上述第一会话的优先级高于上述第二会话的优先级时,结束上述第二会话,并建立上述第一会话;在上述第一会话的优先级低于上述第二会话的优先级时,拒绝建立上述第一会话。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:确定上述第一数据分片和与上述第二会话对应的第二数据分片的父子关系;在上述第一数据分片为上述第二数据分片的子数据分片时,确定上述第一会话的优先级高于上述第二会话的优先级;在上述第一数据分片为上述第二数据分片的父数据分片时,确定上述第一会话的优先级低于上述第二会话的优先级。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:判断上述第一数据分片和第二数据分片是否具有上述父子关系;其中,在上述第一数据分片和第二数据分片不具有上述父子关系时,确定上述第一数据分片和第二数据分片的优先级相同。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:确定上述第一数据分片的第一版本号和与上述第二会话对应的第二数据分片的第二版本号;在上述第一版本号大于上述第二版本号时,确定上述第一会话的优先级高于上述第二会话的优先级;在上述第一版本号小于上述第二版本号时,确定上述第一会话的优先级低于上述第二会话的优先级。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (12)
1.一种数据同步方法,包括:
目的端设备接收来自源端设备的数据同步请求,所述数据同步请求中携带第一数据分片中的待同步数据,以及用于对所述待同步数据进行同步的第一会话的第一会话标识和同步序列号;
所述目的端设备根据所述第一会话标识判断所述第一会话是否存在,得到第一判断结果;以及判断所述同步序列号和当前的同步序列号是否一致,得到第二判断结果;
所述目的端设备依据所述第一判断结果和第二判断结果确定是否接收所述待同步数据。
2.根据权利要求1所述的方法,其中,所述目的端设备依据所述第一判断结果和第二判断结果确定是否接收所述待同步数据,包括:
若所述第一判断结果和所述第二判断结果中的至少之一为否时,确定拒绝接收所述待同步数据;
若所述第一判断结果和所述第二判断结果均为是时,确定允许接收所述待同步数据。
3.根据权利要求1所述的方法,其中,目的端设备接收来自源端设备的数据同步请求之前,所述方法还包括:
所述目的端设备接收来自源端设备的会话请求,其中,该会话请求用于请求建立所述第一会话,且所述会话请求中携带有所述第一数据分片的第一分片标识以及第一数据分片中待同步数据的数据范围;
所述目的端设备判断是否存在第二会话,该第二会话对应的数据范围与所述会话请求中携带的数据范围具有重叠部分,得到第三判断结果;
所述目的端设备依据所述第三判断结果确定是否建立所述第一会话。
4.根据权利要求3所述的方法,其中,所述目的端设备依据所述第三判断结果确定是否建立所述第一会话,包括:
若所述第三判断结果指示不存在所述第二会话时,所述目的端设备建立所述第一会话;
若所述第三判断结果指示存在所述第二会话时,所述目的端设备依据预设规则确定是否建立所述第一会话。
5.根据权利要求4所述的方法,其中,所述目的端设备依据预设规则确定是否建立所述第一会话,包括:
所述目的端设备比较所述第一会话和第二会话的优先级;
在所述第一会话的优先级高于所述第二会话的优先级时,结束所述第二会话,并建立所述第一会话;在所述第一会话的优先级低于所述第二会话的优先级时,拒绝建立所述第一会话。
6.根据权利要求5所述的方法,其中,所述目的端设备比较所述第一会话和第二会话的优先级包括:
所述目的端设备确定所述第一数据分片和与所述第二会话对应的第二数据分片的父子关系;
在所述第一数据分片为所述第二数据分片的子数据分片时,确定所述第一会话的优先级高于所述第二会话的优先级;在所述第一数据分片为所述第二数据分片的父数据分片时,确定所述第一会话的优先级低于所述第二会话的优先级。
7.根据权利要求6所述的方法,其中,所述目的端设备确定所述第一数据分片和与所述第二会话对应的第二数据分片的父子关系之前,所述方法还包括:
所述目的端设备判断所述第一数据分片和第二数据分片是否具有所述父子关系;其中,在所述第一数据分片和第二数据分片不具有所述父子关系时,确定所述第一数据分片和第二数据分片的优先级相同。
8.根据权利要求5所述的方法,其中,所述目的端设备比较所述第一会话和第二会话的优先级包括:
所述目的端设备确定所述第一数据分片的第一版本号和与所述第二会话对应的第二数据分片的第二版本号;
在所述第一版本号大于所述第二版本号时,确定所述第一会话的优先级高于所述第二会话的优先级;
在所述第一版本号小于所述第二版本号时,确定所述第一会话的优先级低于所述第二会话的优先级。
9.一种数据同步装置,包括:
接收模块,用于接收来自源端设备的数据同步请求,所述数据同步请求中携带第一数据分片中的待同步数据,以及用于对所述待同步数据进行同步的第一会话的第一会话标识和同步序列号;
判断模块,用于根据所述第一会话标识判断所述第一会话是否存在,得到第一判断结果;以及判断所述同步序列号和当前的同步序列号是否一致,得到第二判断结果;
确定模块,用于依据所述第一判断结果和第二判断结果确定是否接收所述待同步数据。
10.一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行以下步骤:接收来自源端设备的数据同步请求,所述数据同步请求中携带第一数据分片中的待同步数据,以及用于对所述待同步数据进行同步的第一会话的第一会话标识和同步序列号;根据所述第一会话标识判断所述第一会话是否存在,得到第一判断结果;以及判断所述同步序列号和当前的同步序列号是否一致,得到第二判断结果;依据所述第一判断结果和第二判断结果确定是否接收所述待同步数据。
11.一种计算设备,包括:
处理器,所述处理器用于运行程序,其中,在所述程序运行时执行以下步骤:接收来自源端设备的数据同步请求,所述数据同步请求中携带第一数据分片中的待同步数据,以及用于对所述待同步数据进行同步的第一会话的第一会话标识和同步序列号;根据所述第一会话标识判断所述第一会话是否存在,得到第一判断结果;以及判断所述同步序列号和当前的同步序列号是否一致,得到第二判断结果;依据所述第一判断结果和第二判断结果确定是否接收所述待同步数据。
12.一种数据同步系统,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:接收来自源端设备的数据同步请求,所述数据同步请求中携带第一数据分片中的待同步数据,以及用于对所述待同步数据进行同步的第一会话的第一会话标识和同步序列号;根据所述第一会话标识判断所述第一会话是否存在,得到第一判断结果;
以及判断所述同步序列号和当前的同步序列号是否一致,得到第二判断结果;依据所述第一判断结果和第二判断结果确定是否接收所述待同步数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810871451.0A CN110851526B (zh) | 2018-08-02 | 2018-08-02 | 数据同步方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810871451.0A CN110851526B (zh) | 2018-08-02 | 2018-08-02 | 数据同步方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851526A CN110851526A (zh) | 2020-02-28 |
CN110851526B true CN110851526B (zh) | 2023-04-11 |
Family
ID=69595177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810871451.0A Active CN110851526B (zh) | 2018-08-02 | 2018-08-02 | 数据同步方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110851526B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111460028A (zh) * | 2020-03-09 | 2020-07-28 | 拉扎斯网络科技(上海)有限公司 | 数据传输方法、数据传输装置、存储介质和电子设备 |
CN114661681A (zh) * | 2020-12-23 | 2022-06-24 | 华为技术有限公司 | 数据同步方法及相关设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103338144A (zh) * | 2013-05-30 | 2013-10-02 | 华为软件技术有限公司 | 一种会话数据同步方法和装置 |
CN106254094A (zh) * | 2016-07-19 | 2016-12-21 | 中国银联股份有限公司 | 一种数据同步方法及系统 |
CN106612180A (zh) * | 2015-10-26 | 2017-05-03 | 阿里巴巴集团控股有限公司 | 实现会话标识同步的方法及装置 |
CN108023968A (zh) * | 2017-12-21 | 2018-05-11 | 东软集团股份有限公司 | 一种会话信息同步方法、装置及设备 |
CN108345617A (zh) * | 2017-01-24 | 2018-07-31 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置以及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9170886B2 (en) * | 2012-10-09 | 2015-10-27 | International Business Machines Corporation | Relaxed anchor validation in a distributed synchronization environment |
US10320693B2 (en) * | 2016-07-06 | 2019-06-11 | Qualcomm Incorporated | Method for packet data convergence protocol count synchronization |
-
2018
- 2018-08-02 CN CN201810871451.0A patent/CN110851526B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103338144A (zh) * | 2013-05-30 | 2013-10-02 | 华为软件技术有限公司 | 一种会话数据同步方法和装置 |
CN106612180A (zh) * | 2015-10-26 | 2017-05-03 | 阿里巴巴集团控股有限公司 | 实现会话标识同步的方法及装置 |
CN106254094A (zh) * | 2016-07-19 | 2016-12-21 | 中国银联股份有限公司 | 一种数据同步方法及系统 |
CN108345617A (zh) * | 2017-01-24 | 2018-07-31 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置以及电子设备 |
CN108023968A (zh) * | 2017-12-21 | 2018-05-11 | 东软集团股份有限公司 | 一种会话信息同步方法、装置及设备 |
Non-Patent Citations (2)
Title |
---|
Abhishek Verma 等."Data synchronization in heterogeneous database environment".《IEEE》.2017,全文. * |
曹海涛 ; 胡牧 ; 蒋厚明 ; .基于集群节点间即时拷贝的会话同步技术研究.计算机系统应用.2017,(03),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN110851526A (zh) | 2020-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103744809B (zh) | 基于vrrp的车辆信息管理系统双机热备方法 | |
CN110750393B (zh) | 避免网络服务双机热备脑裂的方法、装置、介质和设备 | |
WO2017128992A1 (zh) | 物理机数据迁移至云端的方法、装置和系统 | |
CN104184756A (zh) | 一种数据同步方法、装置及系统 | |
CN110795496A (zh) | 数据同步方法、装置及系统 | |
US11593216B2 (en) | Method, device, and computer program product for managing file system | |
CN110769019B (zh) | 会话处理方法、装置、系统、存储介质和计算设备 | |
CN110851526B (zh) | 数据同步方法、装置及系统 | |
CN112929438B (zh) | 一种双站点分布式数据库的业务处理方法及装置 | |
CN110971702A (zh) | 服务调用方法、装置、计算机设备及存储介质 | |
CN110895469A (zh) | 双机热备系统的升级方法、装置及电子设备和存储介质 | |
CN105451254A (zh) | 一种多通信通道的维护方法及装置 | |
CN112306755A (zh) | 一种基于微前端架构的高可用性实现方法和系统 | |
CN110958287B (zh) | 操作对象数据同步方法、装置及系统 | |
CN111078463A (zh) | 数据备份的方法、装置和系统 | |
CN111241200B (zh) | 基于SQLite数据库的主备同步处理方法及装置 | |
CN113377702A (zh) | 两节点集群启动的方法及装置、电子设备和存储介质 | |
CN112650623A (zh) | 业务系统切换过程中的数据处理方法及装置 | |
CN114500547B (zh) | 会话信息的同步系统、方法、装置、电子设备及存储介质 | |
CN110351122A (zh) | 容灾方法、装置、系统与电子设备 | |
CN111935029B (zh) | 网关负载均衡方法和装置、存储介质及电子设备 | |
CN113032021B (zh) | 系统切换及其数据处理方法、装置、设备及存储介质 | |
CN109271454A (zh) | 一种数据同步的方法及网络设备 | |
CN113890817A (zh) | 一种通信优化方法和装置 | |
CN113448755A (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 |