CN110688254A - 一种数据同步方法、装置、电子设备及存储介质 - Google Patents

一种数据同步方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN110688254A
CN110688254A CN201910844563.1A CN201910844563A CN110688254A CN 110688254 A CN110688254 A CN 110688254A CN 201910844563 A CN201910844563 A CN 201910844563A CN 110688254 A CN110688254 A CN 110688254A
Authority
CN
China
Prior art keywords
synchronization
node
data
queue
master node
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
CN201910844563.1A
Other languages
English (en)
Other versions
CN110688254B (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 Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet 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 Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN201910844563.1A priority Critical patent/CN110688254B/zh
Publication of CN110688254A publication Critical patent/CN110688254A/zh
Application granted granted Critical
Publication of CN110688254B publication Critical patent/CN110688254B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

本申请提供了一种数据同步方法、装置、电子设备及存储介质。该方法应用于分布式发布订阅消息系统中的主节点,所述方法包括:接收从节点发送的数据同步参数值,包括:从节点的同步结束时间和同步结束偏移量;获取主节点的同步结束时间与从节点的同步结束时间的差值;当差值大于第一预设阈值时,向从节点发送主节点的水位值和第一同步指示,以指示从节点自所述主节点中偏移量为该水位值的数据开始,进行数据同步。通过该方法,主节点可以根据数据同步参数值灵活地调整从节点读取的消息的位置,无需从本地读取存储时间较长的消息,减少了数据读取量,避免了频繁的读磁盘操作,缓解了磁盘的压力,提升了数据的整体迁移流程的平滑性。

Description

一种数据同步方法、装置、电子设备及存储介质
技术领域
本申请涉及数据处理技术领域,特别是涉及一种数据同步方法、装置、电子设备及存储介质。
背景技术
分布式发布订阅消息系统主要用于提供分布式的、可划分的、冗余备份的以及持久性的日志服务,能有效的处理大量活跃的流式数据。分布式发布订阅消息系统由多个缓存代理服务器组成,每个缓存代理服务器实时获取消息产生者产生的消息,缓存及维护消息,同时将消息提供给消息消费者。
一个缓存代理服务器中通常设置有多个分队列(在分布式发布订阅消息系统中,消息可以分为多个类型,每个类型的消息可以存储在多个分队列中,且多个分队列可以分散地设置在各个缓存代理服务器中)。为有效地应对各种系统故障,分布式发布订阅消息系统通常会对存储的消息做多路备份处理:一方面将消息存储到实时分队列中,另一方面设置副本维护队列,在该副本维护队列中维护至少两个针对该实时分队列的副本队列,用以备份该实时分队列中的消息。
分布式发布订阅消息系统在运行过程中,当缓存代理服务器出现宕机、坏盘等故障时,往往需要快速地将消息备份到掉出副本维护队列的副本队列以克服故障。此外,当分布式发布订阅消息系统为实现系统扩容而新增缓存代理服务器时,也往往需要将消息快速备份到新增的缓存代理服务器中。
以将旧的缓存代理服务器中的消息备份到新增的缓存代理服务器为例,在相关技术中,副本队列在同步实时分队列中的消息时,会读取实时分队列中的所有历史消息,由于这部分历史消息通常包含存储时间较长的消息,使实时分队列频繁地执行读磁盘操作,消耗了大量的I/O资源,导致磁盘长期处于繁忙状态,增长了写入消息生产者的消息的操作时延,产生抖动,降低了整体迁移流程的平滑性。此外,宕机或坏盘等故障也可能导致某个副本队列从副本维护队列出列,然后从其所属的实时分队列中同步存储时间较长的消息,产生与上述新增缓存代理服务器以实现分布式发布订阅消息系统的扩容类似的问题。
发明内容
本公开提供了一种数据同步方法、装置、电子设备及存储介质,旨在解决上述背景技术中涉及的问题。
根据本公开实施例的第一方面,提供了一种数据同步方法,应用于分布式发布订阅消息系统包括的多个缓存代理服务器中的主节点,所述方法包括:
接收从节点发送的数据同步参数值,所述数据同步参数值包括:所述从节点的同步结束时间和同步结束偏移量;
获取所述主节点的同步结束时间与所述从节点的同步结束时间的差值,所述主节点的同步结束时间是根据所述同步结束偏移量确定的;
在所述差值大于第一预设阈值的情况下,向所述从节点发送所述主节点的水位值和第一同步指示,所述第一同步指示用于指示所述从节点自所述主节点中偏移量为该水位值的数据开始,进行数据同步。
可选地,所述方法还包括:
在所述差值不大于所述第一预设阈值的情况下,向所述从节点发送第二同步指示,所述第二同步指示用于指示所述从节点自所述主节点中偏移量为该从节点的同步结束偏移量的数据开始,进行数据同步。
可选地,所述数据同步参数值中还包括:所述从节点的同步起始时间,所述方法还包括:
判断所述从节点是否满足预设条件,所述预设条件包括:所述从节点在AR中且所述从节点不在所述主节点的副本维护队列中,所述从节点的同步结束偏移量大于所述主节点的水位值,且所述主节点的同步起始时间与所述从节点的同步起始时间的差值小于第三预设阈值;
在所述从节点满足所述预设条件时,将所述从节点添加到所述主节点的副本维护队列中。
可选地,在所述时间差大于所述第一预设阈值的情况下,向所述从节点发送所述主节点的水位值之后,所述方法还包括:
接收所述从节点发送的数据读取请求,所述数据读取请求携带的偏移量为所述主节点的水位值;
检测所述主节点的高速缓存模块中是否缓存有偏移量为所述主节点的水位值的目标数据;
在所述高速缓存模块中缓存有所述目标数据的情况下,从所述高速缓存模块读取所述目标数据;
在所述高速缓存模块中未缓存所述目标数据的情况下,从所述主节点的磁盘中读取所述目标数据;
将读取到的目标数据返回给所述从节点。
根据本公开实施例的第一方面,提供了一种数据同步方法,应用于分布式发布订阅消息系统包括的多个缓存代理服务器中的从节点,所述方法包括:
向主节点发送所述从节点的数据同步参数值,所述数据同步参数值包括:所述从节点的同步结束时间和同步结束偏移量;
接收所述主节点发送的所述主节点的水位值和第一同步指示,其中,所述主节点的水位值是在所述主节点的同步结束时间与所述从节点的同步结束时间的差值大于第一预设阈值时,所述主节点向所述从节点发送的,所述主节点的同步结束时间是根据所述同步结束偏移量确定的;
执行所述第一同步指示,自所述主节点中偏移量为所述主节点的水位值的数据开始,对所述主节点中的数据进行同步。
可选地,所述方法还包括:
接收所述主节点发送的第二同步指示,所述第二同步指示是在所述主节点的同步结束时间与所述从节点的同步结束时间的差值不大于第一预设阈值时,所述主节点向所述从节点发送的;
执行所述第二同步指示,自所述主节点中偏移量为所述从节点的同步结束偏移量的数据开始,对所述主节点中的数据进行同步。
可选地,自所述主节点中偏移量为所述主节点的水位值的数据开始,对所述主节点中的数据进行同步,包括:
向所述主节点发送数据读取请求,所述数据读取请求携带的偏移量为所述主节点的水位值;
接收并存储所述主节点返回的偏移量为所述主节点的水位值的目标数据;
其中,在所述主节点的高速缓存模块中缓存有所述目标数据的情况下,所述目标数据来自于所述高速缓存模块;在所述高速缓存模块中未缓存所述目标数据的情况下,所述目标数据来自于所述主节点的磁盘。
可选地,向主节点发送所述从节点的数据同步参数值,包括:
运行心跳线程,通过所述心跳线程周期性向所述主节点发送所述从节点的数据同步参数值。
根据本公开实施例的第三方面,提供一种数据同步装置,应用于分布式发布订阅消息系统包括的多个缓存代理服务器中的主节点,所述装置包括:
参数接收模块,用于接收从节点发送的数据同步参数值,所述数据同步参数值包括:所述从节点的同步结束时间和同步结束偏移量;
差值获取模块,用于获取所述主节点的同步结束时间与所述从节点的同步结束时间的差值,所述主节点的同步结束时间是根据所述同步结束偏移量确定的;
指示发送模块,用于在所述差值大于所述第一预设阈值的情况下,向所述从节点发送所述主节点的水位值和第一同步指示,所述第一同步指示用于指示所述从节点自所述主节点中偏移量为该水位值的数据开始,进行数据同步。
可选地,装所述置还包括:
指示发送子模块,用于在所述差值不大于所述第一预设阈值的情况下,向所述从节点发送第二同步指示,所述第二同步指示用于指示所述从节点自所述主节点中偏移量为该从节点的同步结束偏移量的数据开始,进行数据同步。
可选地,所述数据同步参数值中还包括:所述从节点的同步起始时间,所述装置还包括:
条件判断模块,用于判断所述从节点是否满足预设条件,所述预设条件包括:所述从节点在AR中且所述从节点不在所述主节点的副本维护队列中,所述从节点的同步结束偏移量大于所述主节点的水位值,且所述主节点的同步起始时间与所述从节点的同步起始时间的差值小于第三预设阈值;
添加模块,用于在所述从节点满足所述预设条件时,将所述从节点添加到所述主节点的副本维护队列中。
可选地,所述装置还包括:
请求接收模块,用于接收所述从节点发送的数据读取请求,所述数据读取请求携带的偏移量为所述主节点的水位值;
检测模块,用于检测所述主节点的高速缓存模块中是否缓存有偏移量为所述主节点的水位值的目标数据;
第一读取模块,用于在所述高速缓存模块中缓存有所述目标数据的情况下,从所述高速缓存模块读取所述目标数据;
第二读取模块,用于在所述高速缓存模块中未缓存所述目标数据的情况下,从所述主节点的磁盘中读取所述目标数据;
数据发送模块,用于将读取到的目标数据返回给所述从节点。
根据本公开实施例的第四方面,提供一种数据同步装置,应用于分布式发布订阅消息系统包括的多个缓存代理服务器中的从节点,所述装置包括:
参数发送模块,用于向主节点发送所述从节点的数据同步参数值,所述数据同步参数值包括:所述从节点的同步结束时间和同步结束偏移量;
指示接收模块,用于接收所述主节点发送的所述主节点的水位值和第一同步指示,其中,所述主节点的水位值是在所述主节点的同步结束时间与所述从节点的同步结束时间的差值大于第一预设阈值时,所述主节点向所述从节点发送的,所述主节点的同步结束时间是根据所述同步结束偏移量确定的;
执行模块,用于执行所述第一同步指示,自所述主节点中偏移量为所述主节点的水位值的数据开始,对所述主节点中的数据进行同步。
可选地,所述装置还包括:
指示接收子模块,用于接收所述主节点发送的第二同步指示,所述第二同步指示是在所述主节点的同步结束时间与所述从节点的同步结束时间的差值不大于第一预设阈值时,所述主节点向所述从节点发送的;
执行子模块,用于执行所述第二同步指示,自所述主节点中偏移量为所述从节点的同步结束偏移量的数据开始,对所述主节点中的数据进行同步。
可选地,所述执行模块包括:
请求发送模块,用于向所述主节点发送数据读取请求,所述数据读取请求携带的偏移量为所述主节点的水位值;
数据接收模块,用于接收并存储所述主节点返回的偏移量为所述主节点的水位值的目标数据;
其中,在所述主节点的高速缓存模块中缓存有所述目标数据的情况下,所述目标数据来自于所述高速缓存模块;在所述高速缓存模块中未缓存所述目标数据的情况下,所述目标数据来自于所述主节点的磁盘。
可选地,所述参数发送模块包括:
心跳模块,用于运行心跳线程,通过所述心跳线程周期性向所述主节点发送所述从节点的数据同步参数值。
根据本公开实施例的第五方面,提供一种电子设备,该电子设备包括:
处理器;
用于存储该处理器可执行指令的存储器;
其中,该处理器被配置为执行以实现如本公开提供的数据同步方法所执行的操作。
根据本公开实施例的第六方面,提供一种非临时性计算机可读存储介质,当该存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行一种以实现如本公开提供的数据同步方法所执行的操作。
本公开的实施例提供的技术方案可以包括以下有益效果:
本申请提供了一种数据同步方法,待备份队列接收副本队列发送的同步结束时间和同步结束偏移量,然后判断自身的同步结束时间与副本队列的同步结束时间的差值与第一预设阈值的大小关系,若差值大于第一预设阈值,向副本队列发送水位值和第一同步指示,指示副本队列从待备份队列中名称与水位值相同的消息处开始读取消息,若差值不大于第一预设阈值,向副本队列发送第二同步指示,指示副本队列从待备份队列中名称与自身的同步结束偏移量相同的消息处开始读取消息。
通过本申请提供的数据同步方法,待备份队列可以根据副本队列发送的数据同步参数值灵活地调整副本队列读取的消息的位置,避免副本队列读取到存储时间较长的消息,与相关技术中副本队列每次都从名称与自身的同步结束偏移量相同的消息处开始读取消息相比,本申请在备份消息时,待备份队列无需从本地读取存储时间较长的消息,从而减少了消息读取量,避免了频繁的读磁盘操作,降低了对I/O资源的占有率,缓解了磁盘的压力,进而缩短了写入消息生产者的消息的操作时延,提升了消息的整体迁移流程的平滑性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本申请一实施例示出的一种实施环境示意图;
图2是相关技术中的一种同步数据的流程图;
图3是本申请一实施例示出的一种数据同步方法的流程图;
图4是本申请一实施例示出的一种数据同步的原理图;
图5是本申请一实施例示出的一种将从节点添加到副本维护队列的方法的流程图;
图6是本申请一实施例示出的一种同步数据的流程图;
图7是本申请一实施例示出的一种处理数据读取请求的流程图;
图8是本申请一实施例示出的一种消息的迁移流程图;
图9是本申请一实施例示出的另一种数据同步方法的流程图;
图10是本申请一实施例示出的一种数据同步装置的结构图;
图11是本申请一实施例示出的另一种数据同步装置的结构图;
图12是本申请一实施例示出的一种电子设备的结构示意图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是本申请一实施例示出的一种实施环境示意图。参照图1,在该实施环境中,分布式发布订阅消息系统(以下简称消息系统)由多个缓存代理服务器组成,每个缓存代理服务器从一个或多个消息生产者中获取消息,并提供给一个或多个消息消费者。其中,消息生产者(例如:图1中的消息产生客户端)通过压入操作向缓存代理服务器推送消息。消息消费者(例如:图2中的消息消费客户端)通过拉取操作向缓存代理服务器获取消息。
在消息系统中,消息可以有多个类型,每一个类型的消息可以存储在多个分队列中。一个缓存代理服务器上可以设置有多个分队列,用于存储一个或多个类型的消息。
消息系统在运行过程中,当缓存代理服务器出现宕机、坏盘等故障时,往往需要快速地将消息备份到掉出副本维护队列的副本队列以克服故障。此外,当消息系统为实现系统扩容而新增缓存代理服务器时,也往往需要将消息快速备份到新增的缓存代理服务器中。
下面将以新增缓存代理服务器以实现消息系统的扩容为例,对相关技术中的数据同步方法进行简要说明。
在相关技术中,当消息系统中新增一个缓存代理服务器时,可以在该缓存代理服务器中创建副本队列,用于备份其它的缓存代理服务器中的待备份分队列中存储的消息。
图2是相关技术中的一种同步数据的流程图。参照图2,待备份队列将消息同步到副本队列的流程主要包括:HandleLeaderAndlsr、MakeFollowers、FetchThread、HandleFetch、ReadFromLocalLog以及UpdateReplicalLogReadResult。
其中,FetchThread表示:副本队列启动数据读取线程从待备份队列中读取消息。在这个过程中,副本队列每次都是从待备份队列中与自身的同步结束偏移量(Log EndOffset,日志的最后一条消息的偏移量)相同的消息处开始读取,由于副本队列没有考虑自身的同步结束偏移量在待备份队列中的存储时长,因此,副本队列在从待备份队列中读取消息时,可能读取到存储时间较长的消息,极大地增加了待备份队列的数据读取量,使待备份队列频繁地执行读磁盘操作,消耗了大量的I/O(Input/Output,输入/输出)资源,导致磁盘长期处于繁忙状态,从而增长了写入消息生产者的消息的操作时延,产生抖动,降低了数据的整体迁移流程的平滑性。
为解决上述问题,本申请提供了以下改进思路:副本队列在启动数据读取线程后,从待备份队列的最新位置处开始读取消息,而不是每次都从与自身的同步结束偏移量相同的消息处开始读取消息,通过这种方式,待备份队列无需从本地读取存储时间较长的消息,从而减少了待备份队列的数据读取量,避免了待备份队列的频繁的读磁盘操作,降低了待备份队列对I/O资源的占有率,缓解了磁盘的压力,进而缩短了写入消息生产者的消息的操作时延,提升了数据的整体迁移流程的平滑性。
基于上述改进思路,本申请提供了一种数据同步方法。下面将对本申请提供的数据同步方法进行详细说明。
首先,本申请提供了一种数据同步方法,应用于消息系统包括的多个缓存代理服务器中的主节点。图3是本申请一实施例示出的一种数据同步方法的流程图。参照图3,本申请的数据同步方法包括以下步骤:
步骤S11:接收从节点发送的数据同步参数值,所述数据同步参数值包括:所述从节点的同步结束时间和同步结束偏移量。
在本申请中,缓存代理服务器中设置多个分队列,包括实时分队列和副本队列,每个实时分队列实时存储消息生产者推送的消息,且每个实时分队列对应有多个副本队列。每个实时分队列设置有一个副本维护队列,用于维护其对应的多个副本队列,该副本队列的个数可以根据实际需求确定,副本队列用于备份其所属的实时分队列中的消息。
当副本队列从其所属的实时分队列中读取消息并进行备份时,该实时分队列被称为待备份队列。副本队列在从待备份队列中同步消息时,一旦其存储的消息追赶上待备份队列中的消息,消息系统会自动将该副本队列添加到其待备份队列对应的副本维护队列(例如副本维护队列可以采用In-Sync Replica,一种与待备份队列基本保持同步的replica列表)中。
在本申请的各个实施例中,主节点是指待备份队列,从节点是指副本队列。
在本申请中,待备份队列实时地从消息生产者获取消息,存储消息,以及周期性地清除掉存储时长超过预设时长的消息;同时,副本队列会周期性地对其所属的待备份队列中的消息进行备份,保持自身存储的消息与待备份队列中的消息的同步。当某个待备份队列因系统崩溃而无法对外提供服务时,可以将其对应的一个副本队列上升为待备份队列,以接替其待备份队列身份而对外提供服务。
在消息系统中,为便于快速地定位存储文件,各个存储文件采用其所在的存储位置的偏移量来命名。为便于陈述本申请提供的数据同步方法,在本申请中,数据同步方法应用的消息系统是kafka消息系统,当然,本申请中的数据同步方法也可以应用到其它类型的消息系统,本申请对此不作具体限制。
当消息系统是kafka消息系统时,各个存储文件具体采用的命名格式为:offset.kafka。例如:在一个分队列中,首个存储位置的偏移量为00000000000,则存储于该位置的消息可以命名为00000000000.kafka;第2049个存储位置的偏移量为2048,则存储于该位置的消息可以命名为2048.kafka,以此类推。
图4是本申请一实施例示出的一种数据同步的原理图。下面将结合图4对从节点发送的数据同步参数值进行说明。
在图4中,待备份队列当前存储了多条消息。副本队列正在从待备份队列中读取消息,且已经读取到名称为2004.kafka的消息,即副本队列当前的同步结束偏移量为2004。副本队列的同步结束时间(Log End Time,读取最后一条消息的时刻)、待备份队列的同步结束时间分别对应t2和t3。副本队列在向待备份队列发送数据同步参数值时,获取当前正在读取的名称为2004.kafka的消息的时刻t2,然后将t2和2004发送给待备份队列。待备份队列接收到t2和2004后,确定出自身存储的名称为2004.kafka的消息的读取时刻t3(即:待备份队列从消息生产者读取名称为2004.kafka的消息的时刻),将t3作为待备份队列的同步结束时间。
步骤S12:获取所述主节点的同步结束时间与所述从节点的同步结束时间的差值,所述主节点的同步结束时间是根据所述同步结束偏移量确定的。
副本队列的同步结束时间与待备份队列的同步结束时间的差值的大小可以反应副本队列当前读取的同步结束偏移量对应的消息在待备份队列中的存储时长。换言之,将副本队列的同步结束时间与待备份队列的同步结束时间进行比较的目的是:判断副本队列当前读取的同步结束偏移量对应的消息是否属于待备份队列中较老的消息。一般地,副本队列的同步结束时间与待备份队列的同步结束时间的差值越大,副本队列当前读取的同步结束偏移量对应的消息在待备份队列中的存储时长越长,属于较老的消息,副本队列的同步结束时间与待备份队列的同步结束时间的差值越小,副本队列当前读取的同步结束偏移量对应的消息在待备份队列中的存储时长越短,属于较新的消息。
步骤S13:在所述差值大于第一预设阈值的情况下,向所述从节点发送所述主节点的水位值和第一同步指示,所述第一同步指示用于指示所述从节点自所述主节点中偏移量为该水位值的数据开始,进行数据同步。
用户可以预先根据实际需求设置第一预设阈值。当待备份队列判断得到自身的同步结束时间与副本队列的同步结束时间的差值大于第一预设阈值时,表示副本队列当前读取的同步结束偏移量对应的消息属于待备份队列中较老的消息,因此,待备份队列向副本队列发送自身的水位值(HighWaterMark)和第一同步指示,以指示副本队列根据该水位值读取待备份队列中较新的消息。
水位值指待备份队列的副本维护队列中的多个副本队列的同步结束偏移量中最小的同步结束偏移量,其获取步骤为:获取待备份队列的所有的副本队列的同步结束偏移量;将所有同步结束偏移量中最小的同步结束偏移量确定为水位值。每个待备份队列的水位值会随着其副本队列的同步结束偏移量的变化而变化,但却是唯一的。对于一个待备份队列,其水位值不会大于其同步结束偏移量。在待备份队列中,偏移量小于或等于水位值的所有消息都被认为是已备份的。
副本队列在接收到水位值和第一同步指示后,从待备份队列中偏移量与水位值相同的消息处开始读取消息,而不用从偏移量与自身的同步结束偏移量相同的存储时间较长的消息处开始读取消息,因而可以降低待备份队列的数据读取量。
在步骤S13之后,还可以包括以下步骤:
所述差值不大于所述第一预设阈值的情况下,向所述从节点发送第二同步指示,所述第二同步指示用于指示所述从节点自所述主节点中偏移量为该从节点的同步结束偏移量的数据开始,进行数据同步。
当待备份队列判断得到自身的同步结束时间与副本队列的同步结束时间的差值不大于第一预设阈值时,表示副本队列当前读取的同步结束偏移量对应的消息属于较新的消息。因此,副本队列在接收到第二同步指示后,从待备份队列中偏移量与自身的同步结束偏移量相同的消息处开始读取消息。
下面将参照图4,以一个具体的实施例对本申请的数据同步方法进行详细说明。
副本队列在启动数据读取线程后,向待备份队列发送的数据同步参数值包括:t2和2004,待备份队列在消息队列中定位到偏移量为2004的存储位置,获取名称为2004.kafka的消息的读取时刻t3;求取t2与t3的差值,判断该差值与第一预设阈值的大小关系;若第一预设阈值为48小时,t2与t3的差值为49小时,则t2与t3的差值大于第一预设阈值,表示名称为2004.kafka的消息在待备份队列中的存储时间较长,属于比较老的消息,在这种情况下,待备份队列首先确定自身当前的水位值,假设为2050,然后将2050以及第一同步指示发送给副本队列;副本队列根据第一同步指示,从待备份队列中偏移量与2050相同的消息处开始读取消息,而不是从偏移量与2004相同的消息处开始读取消息,从而避免了读取到待备份队列中存储时间较长的消息的情况。若第一预设阈值为48小时,t2与t3的差值为20小时,则t2与t3的差值不大于第一预设阈值,表示2004.kafka在待备份队列中的存储时间较短,属于比较新的消息,待备份队列直接将第二同步指示发送给副本队列,副本队列根据第二同步指示,从待备份队列中偏移量与2004.相同的消息处开始读取消息。因此,通过上述方法,待备份队列可以根据副本队列发送的数据同步参数值灵活地调整副本队列读取的消息的位置,避免读取到存储时间较长的消息。
本申请提供了一种数据同步方法,待备份队列接收副本队列发送的数据同步参数值(包括:副本队列的同步结束时间和同步结束偏移量),然后判断自身的同步结束时间与副本队列的同步结束时间的差值与第一预设阈值的大小关系,若差值大于第一预设阈值,向副本队列发送水位值和第一同步指示,指示副本队列从待备份队列中偏移量与水位值相同的消息处开始读取消息,当差值不大于第一预设阈值时,向副本队列发送第二同步指示,指示副本队列从待备份队列中偏移量与自身的同步结束偏移量相同的消息处开始读取消息。
通过本申请提供的数据同步方法,待备份队列可以根据副本队列发送的数据同步参数值灵活地调整副本队列读取的消息的位置,避免副本队列读取到存储时间较长的消息,与相关技术中副本队列每次都从偏移量与自身的同步结束偏移量相同的消息处开始读取消息相比,本申请在备份消息时,待备份队列无需从本地读取存储时间较长的消息,从而减少了数据读取量,避免了频繁的读磁盘操作,降低了对I/O资源的占有率,缓解了磁盘的压力,进而缩短了写入消息生产者的消息的操作时延,提升了数据的整体迁移流程的平滑性。
在本申请中,数据同步参数值中还可以包括:所述从节点的同步起始时间。图5是本申请一实施例示出的一种将从节点添加到副本维护队列的方法的流程图。参照图5,本申请还提供了一种将副本队列添加到副本维护队列中的方法,具体包括以下步骤:
步骤S21:判断所述从节点是否满足预设条件,所述预设条件包括:所述从节点在AR中且所述从节点不在所述主节点的副本维护队列中,所述从节点的同步结束偏移量大于所述主节点的水位值,且所述主节点的同步起始时间与所述从节点的同步起始时间的差值小于第三预设阈值。
待备份队列的同步起始时间(Log Start Time,读取第一条消息的时刻),指待备份队列的消息队列中的第一条消息的读取时刻,副本队列的同步起始时间指副本队列从待备份队列中读取第一条消息的时刻。以图4中的待备份队列和副本队列为例,待备份队列的同步起始时间为t4,副本队列的同步起始时间为t1。
由于待备份队列会周期性地清除一部分存储时间超过预设时长的消息,因此,待备份队列的同步起始时间也会随着清除消息后的队列中的第一条消息而周期性地发生变化。而副本队列从待备份队列中读取消息的速率一般明显高于待备份队列从消息生产者读取消息的速率,因此,在一段时间内,待备份队列的同步起始时间可能会发生较大的变化,而副本队列的同步起始时间可能不会发生变化。假设待备份队列只存储距离当前时刻24小时内的消息(即预设时长为24小时),且每隔一小时清除存储时长超出24小时的消息。在副本队列连续从待备份队列中读取了6个小时的消息的情况下,若6个小时前t1=10/02/10:00,t4=10/01/10:00,那么6个小时后,t4=10/01/16:00,可见待备份队列的同步起始时间发生了变化,而t1的值依然为10/02/10:00(副本队列中存储的消息并没有超出预设时长24小时)。因此,随着同步时间的增长,待备份队列的同步起始时间与副本队列的同步起始时间之间的差值会逐渐缩小,当副本队列中的消息快要追赶上待备份队列中的消息时,待备份队列的同步起始时间与副本队列的同步起始时间之间的差值接近一个固定值,将该固定值作为第三预设阈值,因此,只要判断到待备份队列和副本队列的同步起始时间的差值小于该第三预设阈值时,基本可以认为副本队列中的消息快要追赶上待备份队列中的消息。
步骤S22:在所述从节点满足所述预设条件时,将所述从节点添加到所述主节点的副本维护队列中。
在本申请各个实施例中,副本队列会周期性地向待备份队列发送数据同步参数值,待备份队列在接收到数据同步参数值后,会判断副本队列是否满足预设条件,如果满足预设条件,将该副本队列应当添加到副本维护队列中;如果不满足预设条件,则按照上述步骤S11-步骤S14继续处理副本队列发送的数据同步参数值。
图6是本申请一实施例示出的一种数据同步的流程图。参照图6,本申请中待备份队列将消息同步到副本队列的流程主要包括:HandleLeaderAndlsr、MakeFollowers、HandleGetOffsetRPC、HandleGetOffset、Map<[broker,tp],[startime,endtime,offset]>、FetchThread、HandleFetch、ReadFromLocalLog、UpdateReplicalLogReadResult(列举顺序不代表实际执行顺序)。
与图2相比,本申请对相关技术中的数据同步流程进行了改进。具体地,在副本队列执行的步骤中增加了HandleGetOffsetRPC,在待备份队列执行的步骤中增加了HandleGetOffset和Map<[broker,tp],[startime,endtime,offset]>,且待备份队列在执行HandleFetch和ReadFromLocalLog时,会根据HandleGetOffset的执行情况,确定出向副本队列发送的指示的类型(第一同步指示或第二同步指示)。
其中,HandleGetOffsetRPC请求中可以包括:副本队列的同步起始偏移量、同步结束偏移量、同步起始时间以及同步结束时间。Map中的startime指副本队列的同步起始时间、endtime指副本队列的同步结束时间,offset指副本队列的同步结束偏移量。
特别地,参照图6,在本申请中,判断是否将副本队列添加到副本维护队列的条件有4个,分别为:
(1)副本队列在AR中;
(2)副本队列不在待备份队列的副本维护队列中;
(3)副本队列的同步结束偏移量大于待备份队列的水位值;
(4)待备份队列的同步起始时间与副本队列的同步起始时间的差值小于预设阈值。
可见,与相关技术中用于判断是否将副本队列添加到副本维护队列的3个条件(副本队列在AR中、副本队列不在待备份队列的副本维护队列中以及副本队列的同步结束偏移量大于待备份队列的水位值)相比,待备份队列在执行UpdateReplicalLogReadResult时,新增了第(4)个条件(待备份队列的同步起始时间与副本队列的同步起始时间的差值小于预设阈值),具体原因如前所述。
参照图6,副本队列执行完HandleLeaderAndlsr和MakeFollowers后,执行FetchThread以从待备份队列中读取消息。在读取消息的过程中,副本队列每隔N秒(N可以根据实际需求任意设置)向待备份队列发送HandleGetOffsetRPC,待备份队列接收到HandleGetOffsetRPC后,执行HandleGetOffset,提取出HandleGetOffsetRPC中的副本队列的同步起始时间、同步结束时间以及同步结束偏移量,更新到Map中的startime、endtime以及offset。副本队列在发送HandleGetOffsetRPC以后,继续执行FetchThread,待备份队列根据同步结束偏移量和同步起始时间确定出向副本队列发送的指示的类型,然后根据第一同步指示或第二同步指示,从高速缓存模块或者磁盘中读取消息并发送给副本队列。Map中的startime、endtime以及offset被更新后,待备份队列判断副本队列是否满足加入副本维护队列的预设条件,当副本队列满足预设条件时,将其添加到副本维护队列中。
图7是本申请一实施例示出的一种处理数据读取请求的流程图。参照图7,待备份队列在执行上述步骤S13之后,还可以执行以下步骤:
步骤S13A:接收所述从节点发送的数据读取请求,所述数据读取请求携带的偏移量为所述主节点的水位值;
步骤S13B:检测所述主节点的高速缓存模块中是否缓存有偏移量为所述主节点的水位值的目标数据;
步骤S13C:在所述高速缓存模块中缓存有所述目标数据的情况下,从所述高速缓存模块读取所述目标数据;
步骤S13D:在所述高速缓存模块中未缓存所述目标数据的情况下,从所述主节点的磁盘中读取所述目标数据;
步骤S13E:将读取到的目标数据返回给所述从节点。
在本实施例中,待备份队列通常会将消息存储在高速缓存模块(例如:pagecache)中,以减少待备份队列从磁盘中读取消息的次数,降低磁盘的压力。
副本队列在执行FetchThread时,会向待备份队列发送数据读取请求,待备份队列在接收到副本队列发送的数据读取请求以后,首先判断该请求中携带的偏移量是否为水位值,若为水位值,检测高速缓存模块中是否缓存有偏移量与水位值相同的消息,若缓存有偏移量与水位值相同的消息,将该消息作为目标数据,直接从高速缓存模块读取该目标数据并发送给副本队列,然后再读取目标数据之后的消息依次发送给副本队列;若未缓存有偏移量与水位值相同的消息,则从磁盘中读取该目标数据并发送给副本队列,然后再读取目标数据之后的消息依次发送给副本队列。
图8是本申请一实施例示出的一种消息的迁移流程图。下面将结合图8对本申请的数据同步方法进行详细说明。
图8中,消息系统为kafka消息系统,缓存代理服务器为broker服务器,TP为分队列。原有的3个broker服务器中共存储了4个TP,分别为:TP1、TP2、TP3以及TP4。每个TP包括1个待备份队列和两个副本队列,例如:对于TP1,TP1(1)为待备份队列,TP1(2)和TP1(3)为副本队列。若在原有的kafka消息系统中新增加用于实现消息系统扩容的broker 4,将原有的3个broker服务器中的一部分副本队列转移到broker 4中,以减轻原有的3个broker服务器的负担,例如:将TP2的TP2(3)、TP3的TP3(3)以及TP4的TP4(2)这三个副本队列转移到broker 4中。其转移过程如图8所示,其中,阴影部分代表待备份队列,虚线箭头表示消息的转移。例如:在转移TP2的TP2(3)时,将TP2(1)作为待备份队列,将broker 4中的TP2(3)作为副本队列,采用步骤S11-步骤S13执行消息的备份。
本申请还提供了第二种数据同步方法,应用于分布式发布订阅消息系统包括的多个缓存代理服务器中的从节点。图9是本申请一实施例示出的另一种数据同步方法的流程图。参照图9,本申请提供的第二种数据同步方法包括:
步骤S31:向主节点发送所述从节点的数据同步参数值,所述数据同步参数值包括:所述从节点的同步结束时间和同步结束偏移量;
步骤S32:接收所述主节点发送的所述主节点的水位值和第一同步指示,其中,所述主节点的水位值是在所述主节点的同步结束时间与所述从节点的同步结束时间的差值大于第一预设阈值时,所述主节点向所述从节点发送的,所述主节点的同步结束时间是根据所述同步结束偏移量确定的;
步骤S33:执行所述第一同步指示,自所述主节点中偏移量为所述主节点的水位值的数据开始,对所述主节点中的数据进行同步。
在上述步骤S33之后,还可以执行以下步骤:
接收所述主节点发送的第二同步指示,所述第二同步指示是在所述主节点的同步结束时间与所述从节点的同步结束时间的差值不大于第一预设阈值时,所述主节点向所述从节点发送的;
执行所述第二同步指示,自所述主节点中偏移量为所述从节点的同步结束偏移量的数据开始,对所述主节点中的数据进行同步。
上述步骤S31-步骤S33请参照前文对步骤S11-步骤S13的具体说明,在此不作赘述。
在上述步骤S33之后,还可以执行以下步骤:
向所述主节点发送数据读取请求,所述数据读取请求携带的偏移量为所述主节点的水位值;
接收并存储所述主节点返回的偏移量为所述主节点的水位值的目标数据;
其中,在所述主节点的高速缓存模块中缓存有所述目标数据的情况下,所述目标数据来自于所述高速缓存模块;在所述高速缓存模块中未缓存所述目标数据的情况下,所述目标数据来自于所述主节点的磁盘。
在本实施例中,副本队列接收待备份队列发送的偏移量为水位值的目标数据的过程可以参考前文所述的待备份队列获取偏移量为水位值的目标数据并发送给副本队列的过程,故在此不作赘述。
可选地,在本申请各个实施例中,步骤S31可以包括:
运行心跳线程,通过所述心跳线程周期性向所述主节点发送所述从节点的数据同步参数值。
在本申请中,副本队列可以通过心跳线程周期性向待备份队列发送包含数据同步参数值心跳包,提升数据同步的效率。
本申请提供了一种数据同步装置1000,应用于分布式发布订阅消息系统包括的多个缓存代理服务器中的主节点。图10是本申请一实施例示出的另一种数据同步装置的结构图。参照图10,装置1000包括:
参数接收模块1001,用于接收从节点发送的数据同步参数值,所述数据同步参数值包括:所述从节点的同步结束时间和同步结束偏移量;
差值获取模块1002,用于判断所述主节点的同步结束时间与所述从节点的同步结束时间的差值是否大于第一预设阈值,所述主节点的同步结束时间是根据所述同步结束偏移量确定的;
指示发送模块1003,用于在所述差值大于所述第一预设阈值的情况下,向所述从节点发送所述主节点的水位值和第一同步指示,所述第一同步指示用于指示所述从节点自所述主节点中偏移量为该水位值的数据开始,进行数据同步。
可选地,装置1000还包括:
指示发送子模块,用于在所述差值不大于所述第一预设阈值的情况下,向所述从节点发送第二同步指示,所述第二同步指示用于指示所述从节点自所述主节点中偏移量为该从节点的同步结束偏移量的数据开始,进行数据同步。
可选地,所述数据同步参数值中还包括:所述从节点的同步起始时间,装置1000还包括:
条件判断模块,用于判断所述从节点是否满足预设条件,所述预设条件包括:所述从节点在AR中且所述从节点不在所述主节点的副本维护队列中,所述从节点的同步结束偏移量大于所述主节点的水位值,且所述主节点的同步起始时间与所述从节点的同步起始时间的差值小于第三预设阈值;
添加模块,用于在所述从节点满足所述预设条件时,将所述从节点添加到所述主节点的副本维护队列中。
可选地,装置1000还包括:
请求接收模块,用于接收所述从节点发送的数据读取请求,所述数据读取请求携带的偏移量为所述主节点的水位值;
检测模块,用于检测所述主节点的高速缓存模块中是否缓存有偏移量为所述主节点的水位值的目标数据;
第一读取模块,用于在所述高速缓存模块中缓存有所述目标数据的情况下,从所述高速缓存模块读取所述目标数据;
第二读取模块,用于在所述高速缓存模块中未缓存所述目标数据的情况下,从所述主节点的磁盘中读取所述目标数据;
数据发送模块,用于将读取到的目标数据返回给所述从节点。
本申请提供了一种数据同步装置1100,应用于分布式发布订阅消息系统包括的多个缓存代理服务器中的从节点。图11是本申请一实施例示出的一种数据同步装置的结构图。参照图11,装置1100包括:
参数发送模块1101,用于向主节点发送所述从节点的数据同步参数值,所述数据同步参数值包括:所述从节点的同步结束时间和同步结束偏移量;
指示接收模块1102,用于接收所述主节点发送的所述主节点的水位值和第一同步指示,其中,所述主节点的水位值是在所述主节点的同步结束时间与所述从节点的同步结束时间的差值大于第一预设阈值时,所述主节点向所述从节点发送的,所述主节点的同步结束时间是根据所述同步结束偏移量确定的;
执行模块1103,用于执行所述第一同步指示,自所述主节点中偏移量为所述主节点的水位值的数据开始,对所述主节点中的数据进行同步。
可选地,装置1100还包括:
指示接收子模块,用于接收所述主节点发送的第二同步指示,所述第二同步指示是在所述主节点的同步结束时间与所述从节点的同步结束时间的差值不大于第一预设阈值时,所述主节点向所述从节点发送的;
执行子模块,用于执行所述第二同步指示,自所述主节点中偏移量为所述从节点的同步结束偏移量的数据开始,对所述主节点中的数据进行同步。
可选地,所述执行模块1103包括:
请求发送模块,用于向所述主节点发送数据读取请求,所述数据读取请求携带的偏移量为所述主节点的水位值;
数据接收模块,用于接收并存储所述主节点返回的偏移量为所述主节点的水位值的目标数据;
其中,在所述主节点的高速缓存模块中缓存有所述目标数据的情况下,所述目标数据来自于所述高速缓存模块;在所述高速缓存模块中未缓存所述目标数据的情况下,所述目标数据来自于所述主节点的磁盘。
可选地,所述参数发送模块1101包括:
心跳模块,用于运行心跳线程,通过所述心跳线程周期性向所述主节点发送所述从节点的数据同步参数值。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
参照图12所示,图12是本申请一实施例示出的一种电子设备的结构示意图,例如,电子设备1200可以包括以下一个或多个组件:处理组件1202,存储器1204,电力组件1206,多媒体组件1208,音频组件1210,输入/输出(I/O)的接口1212,传感器组件1214,以及通信组件1216。存储器1204中存储有非临时性计算机可读存储介质1240,可选地,可读存储介质1240可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质1240可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
处理组件1202通常控制电子设备1200的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1202可以包括一个或多个处理器1220来执行可读存储介质1240的指令,以使电子设备1200能完成上述数据同步方法的全部或部分步骤。此外,处理组件1202可以包括一个或多个模块,便于处理组件1202和其他组件之间的交互。例如,处理组件1202可以包括多媒体模块,以方便多媒体组件1208和处理组件1202之间的交互。
多媒体组件1208被配置为存储各种类型的数据以支持在电子设备1200的操作。这些数据的示例包括用于在电子设备1200上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。多媒体组件1208可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件1206为电子设备1200的各种组件提供电力。电力组件1206可以包括电源管理系统,一个或多个电源,及其他与为电子设备1200生成、管理和分配电力相关联的组件。
多媒体组件1208包括在所述电子设备1200和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1208包括一个前置摄像头和/或后置摄像头。当电子设备1200处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件1210被配置为输出和/或输入音频信号。例如,音频组件1210包括一个麦克风(MIC),当电子设备1200处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在多媒体组件1208或经由通信组件1216发送。在一些实施例中,音频组件1210还包括一个扬声器,用于输出音频信号。
I/O接口1212为处理组件1202和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1214包括一个或多个传感器,用于为电子设备1200提供各个方面的状态评估。例如,传感器组件1214可以检测到电子设备1200的打开/关闭状态,组件的相对定位,例如所述组件为电子设备1200的显示器和小键盘,传感器组件1214还可以检测电子设备1200或电子设备1200一个组件的位置改变,用户与电子设备1200接触的存在或不存在,电子设备1200方位或加速/减速和电子设备1200的温度变化。传感器组件1214可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1214还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1214还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件1216被配置为便于电子设备1200和其他设备之间有线或无线方式的通信。电子设备1200可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件1216经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1216还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备1200可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述数据同步方法。
基于同一发明构思,本公开另一实施例提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行一种以实现本公开上述任一实施例所述的数据同步方法所执行的操作。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (10)

1.一种数据同步方法,其特征在于,应用于分布式发布订阅消息系统包括的多个缓存代理服务器中的主节点,所述方法包括:
接收从节点发送的数据同步参数值,所述数据同步参数值包括:所述从节点的同步结束时间和同步结束偏移量;
获取所述主节点的同步结束时间与所述从节点的同步结束时间的差值,
所述主节点的同步结束时间是根据所述同步结束偏移量确定的;
在所述差值大于第一预设阈值的情况下,向所述从节点发送所述主节点的水位值和第一同步指示,所述第一同步指示用于指示所述从节点自所述主节点中偏移量为该水位值的数据开始,进行数据同步。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述差值不大于所述第一预设阈值的情况下,向所述从节点发送第二同步指示,所述第二同步指示用于指示所述从节点自所述主节点中偏移量为该从节点的同步结束偏移量的数据开始,进行数据同步。
3.根据权利要求1所述的方法,其特征在于,所述数据同步参数值中还包括:所述从节点的同步起始时间,所述方法还包括:
判断所述从节点是否满足预设条件,所述预设条件包括:所述从节点在AR中且所述从节点不在所述主节点的副本维护队列中,所述从节点的同步结束偏移量大于所述主节点的水位值,且所述主节点的同步起始时间与所述从节点的同步起始时间的差值小于第三预设阈值;
在所述从节点满足所述预设条件时,将所述从节点添加到所述主节点的副本维护队列中。
4.一种数据同步方法,其特征在于,应用于分布式发布订阅消息系统包括的多个缓存代理服务器中的从节点,所述方法包括:
向主节点发送所述从节点的数据同步参数值,所述数据同步参数值包括:所述从节点的同步结束时间和同步结束偏移量;
接收所述主节点发送的所述主节点的水位值和第一同步指示,其中,所述主节点的水位值是在所述主节点的同步结束时间与所述从节点的同步结束时间的差值大于第一预设阈值时,所述主节点向所述从节点发送的,所述主节点的同步结束时间是根据所述同步结束偏移量确定的;
执行所述第一同步指示,自所述主节点中偏移量为所述主节点的水位值的数据开始,对所述主节点中的数据进行同步。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
接收所述主节点发送的第二同步指示,所述第二同步指示是在所述主节点的同步结束时间与所述从节点的同步结束时间的差值不大于第一预设阈值时,所述主节点向所述从节点发送的;
执行所述第二同步指示,自所述主节点中偏移量为所述从节点的同步结束偏移量的数据开始,对所述主节点中的数据进行同步。
6.根据权利要求4所述的方法,其特征在于,向主节点发送所述从节点的数据同步参数值,包括:
运行心跳线程,通过所述心跳线程周期性向所述主节点发送所述从节点的数据同步参数值。
7.一种数据同步装置,其特征在于,应用于分布式发布订阅消息系统包括的多个缓存代理服务器中的主节点,所述装置包括:
参数接收模块,用于接收从节点发送的数据同步参数值,所述数据同步参数值包括:所述从节点的同步结束时间和同步结束偏移量;
差值获取模块,用于获取所述主节点的同步结束时间与所述从节点的同步结束时间的差值,所述主节点的同步结束时间是根据所述同步结束偏移量确定的;
指示发送模块,用于在所述差值大于第一预设阈值的情况下,向所述从节点发送所述主节点的水位值和第一同步指示,所述第一同步指示用于指示所述从节点自所述主节点中偏移量为该水位值的数据开始,进行数据同步。
8.一种数据同步装置,其特征在于,应用于分布式发布订阅消息系统包括的多个缓存代理服务器中的从节点,所述装置包括:
参数发送模块,用于向主节点发送所述从节点的数据同步参数值,所述数据同步参数值包括:所述从节点的同步结束时间和同步结束偏移量;
指示接收模块,用于接收所述主节点发送的所述主节点的水位值和第一同步指示,其中,所述主节点的水位值是在所述主节点的同步结束时间与所述从节点的同步结束时间的差值大于第一预设阈值时,所述主节点向所述从节点发送的,所述主节点的同步结束时间是根据所述同步结束偏移量确定的;
执行模块,用于执行所述第一同步指示,自所述主节点中偏移量为所述主节点的水位值的数据开始,对所述主节点中的数据进行同步。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行以实现如权利要求1至6中任一项所述的数据同步方法所执行的操作。
10.一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行一种以实现如权利要求1至6中任一项所述的数据同步方法所执行的操作。
CN201910844563.1A 2019-09-06 2019-09-06 一种数据同步方法、装置、电子设备及存储介质 Active CN110688254B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910844563.1A CN110688254B (zh) 2019-09-06 2019-09-06 一种数据同步方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910844563.1A CN110688254B (zh) 2019-09-06 2019-09-06 一种数据同步方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN110688254A true CN110688254A (zh) 2020-01-14
CN110688254B CN110688254B (zh) 2022-06-03

Family

ID=69108017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910844563.1A Active CN110688254B (zh) 2019-09-06 2019-09-06 一种数据同步方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN110688254B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111371900A (zh) * 2020-03-13 2020-07-03 北京奇艺世纪科技有限公司 一种监测同步链路健康状态的方法及系统
CN112015351A (zh) * 2020-10-19 2020-12-01 北京易真学思教育科技有限公司 数据迁移方法、装置、存储介质及电子设备
CN112367384A (zh) * 2020-10-30 2021-02-12 上海哔哩哔哩科技有限公司 基于Kafka集群的动态限速方法、装置以及计算机设备
CN113419879A (zh) * 2021-07-09 2021-09-21 中国电信股份有限公司 消息处理方法、装置、设备及存储介质
CN113709250A (zh) * 2021-08-31 2021-11-26 中国电子科技集团公司第二十八研究所 一种基于订阅发送模式的跨域用户数据同步方法
CN114237497A (zh) * 2021-11-30 2022-03-25 北京达佳互联信息技术有限公司 一种分布式存储方法及装置
CN114793236A (zh) * 2021-12-14 2022-07-26 合肥哈工轩辕智能科技有限公司 一种高可用性的实时消息分发方法及装置
CN115499394A (zh) * 2022-09-22 2022-12-20 深圳依时货拉拉科技有限公司 消息主题的处理方法、装置、设备及存储介质
CN115543225A (zh) * 2022-11-30 2022-12-30 苏州浪潮智能科技有限公司 数据处理方法、系统、装置、计算机存储介质及电子设备
WO2024051718A1 (zh) * 2022-09-09 2024-03-14 华为技术有限公司 一种数据同步方法及相关装置、系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100036952A1 (en) * 2008-08-11 2010-02-11 International Business Machines Corporation Load balancing using replication delay
CN106598762A (zh) * 2016-12-29 2017-04-26 上海理想信息产业(集团)有限公司 一种消息同步方法及系统
US20170339238A1 (en) * 2016-05-23 2017-11-23 Linkedin Corporation Large message support for a publish-subscribe messaging system
CN108205588A (zh) * 2017-12-29 2018-06-26 北京奇虎科技有限公司 基于主从结构的数据同步方法及装置
CN108228789A (zh) * 2017-12-29 2018-06-29 北京奇虎科技有限公司 从节点触发的同步异常恢复方法及装置
CN109388677A (zh) * 2018-08-23 2019-02-26 顺丰科技有限公司 集群之间数据同步方法、装置、设备及其存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100036952A1 (en) * 2008-08-11 2010-02-11 International Business Machines Corporation Load balancing using replication delay
US20170339238A1 (en) * 2016-05-23 2017-11-23 Linkedin Corporation Large message support for a publish-subscribe messaging system
CN106598762A (zh) * 2016-12-29 2017-04-26 上海理想信息产业(集团)有限公司 一种消息同步方法及系统
CN108205588A (zh) * 2017-12-29 2018-06-26 北京奇虎科技有限公司 基于主从结构的数据同步方法及装置
CN108228789A (zh) * 2017-12-29 2018-06-29 北京奇虎科技有限公司 从节点触发的同步异常恢复方法及装置
CN109388677A (zh) * 2018-08-23 2019-02-26 顺丰科技有限公司 集群之间数据同步方法、装置、设备及其存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
郑奇煌: "《Kafka技术内幕:图文详解Kafka源码设计与实现》", 30 November 2017, 人民邮电出版社 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111371900A (zh) * 2020-03-13 2020-07-03 北京奇艺世纪科技有限公司 一种监测同步链路健康状态的方法及系统
CN112015351A (zh) * 2020-10-19 2020-12-01 北京易真学思教育科技有限公司 数据迁移方法、装置、存储介质及电子设备
CN112367384B (zh) * 2020-10-30 2022-06-03 上海哔哩哔哩科技有限公司 基于Kafka集群的动态限速方法、装置以及计算机设备
CN112367384A (zh) * 2020-10-30 2021-02-12 上海哔哩哔哩科技有限公司 基于Kafka集群的动态限速方法、装置以及计算机设备
CN113419879A (zh) * 2021-07-09 2021-09-21 中国电信股份有限公司 消息处理方法、装置、设备及存储介质
CN113419879B (zh) * 2021-07-09 2023-08-04 天翼云科技有限公司 消息处理方法、装置、设备及存储介质
CN113709250B (zh) * 2021-08-31 2023-09-15 中国电子科技集团公司第二十八研究所 一种基于订阅发送模式的跨域用户数据同步方法
CN113709250A (zh) * 2021-08-31 2021-11-26 中国电子科技集团公司第二十八研究所 一种基于订阅发送模式的跨域用户数据同步方法
CN114237497A (zh) * 2021-11-30 2022-03-25 北京达佳互联信息技术有限公司 一种分布式存储方法及装置
CN114237497B (zh) * 2021-11-30 2024-03-12 北京达佳互联信息技术有限公司 一种分布式存储方法及装置
CN114793236A (zh) * 2021-12-14 2022-07-26 合肥哈工轩辕智能科技有限公司 一种高可用性的实时消息分发方法及装置
WO2024051718A1 (zh) * 2022-09-09 2024-03-14 华为技术有限公司 一种数据同步方法及相关装置、系统
CN115499394A (zh) * 2022-09-22 2022-12-20 深圳依时货拉拉科技有限公司 消息主题的处理方法、装置、设备及存储介质
CN115499394B (zh) * 2022-09-22 2024-02-20 深圳依时货拉拉科技有限公司 消息主题的处理方法、装置、设备及存储介质
CN115543225A (zh) * 2022-11-30 2022-12-30 苏州浪潮智能科技有限公司 数据处理方法、系统、装置、计算机存储介质及电子设备
CN115543225B (zh) * 2022-11-30 2023-03-24 苏州浪潮智能科技有限公司 数据处理方法、系统、装置、计算机存储介质及电子设备

Also Published As

Publication number Publication date
CN110688254B (zh) 2022-06-03

Similar Documents

Publication Publication Date Title
CN110688254B (zh) 一种数据同步方法、装置、电子设备及存储介质
KR102266689B1 (ko) 시간적으로 정확한 미디어 컨텐츠 수정을 용이하게 하기 위한 핑거프린팅 레이트의 동적 제어
CN109542865B (zh) 分布式集群系统配置文件同步方法、装置、系统及介质
CN110266420B (zh) 时钟同步方法、时钟同步装置和计算机可读存储介质
CN106713127B (zh) 即时聊天记录的获取及处理方法和装置
KR101828295B1 (ko) 단말 및 그 단말에서 애플리케이션 관리 방법
CN111343045B (zh) 调整心跳频率的方法及装置
CN103384263A (zh) 用于数据同步的时间戳管理方法及其终端
CN111414230A (zh) 服务管理系统、服务管理方法、服务器、存储介质
CN108989062B (zh) 更新群成员数据的方法、装置、终端、系统及存储介质
CN113987073A (zh) 状态信息的延时更新方法、装置及电子设备
CN113177093A (zh) 数据同步方法及装置、电子设备和存储介质
CN109863813B (zh) 随机接入方法及装置
CN112260787B (zh) 设备时延调整方法及装置、电子设备及存储介质
CN110071959B (zh) 定时同步第三方国标资源的方法及装置
CN112616053A (zh) 直播视频的转码方法、装置及电子设备
CN112068876A (zh) 一种进程管理方法、装置和系统
CN111857763B (zh) 数据处理方法、装置、电子设备及存储介质
CN111526607A (zh) 通信数据的处理方法及装置、终端设备和存储介质
CN114666175B (zh) 消息处理方法、装置、电子设备及存储介质
CN113067757B (zh) 信息发送和存储方法、装置和介质
CN112015746B (zh) 数据实时处理方法、装置、介质和电子设备
CN108768828B (zh) 一种调整本地通讯录并映射微信企业号通讯录的同步方法
CN107995022B (zh) 会话同步方法及装置、存储介质、电子设备
CN110019065B (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