CN104683486A - 分布式系统中处理同步消息的方法、装置、分布式系统 - Google Patents
分布式系统中处理同步消息的方法、装置、分布式系统 Download PDFInfo
- Publication number
- CN104683486A CN104683486A CN201510141016.9A CN201510141016A CN104683486A CN 104683486 A CN104683486 A CN 104683486A CN 201510141016 A CN201510141016 A CN 201510141016A CN 104683486 A CN104683486 A CN 104683486A
- Authority
- CN
- China
- Prior art keywords
- synchronization message
- message
- batch synchronization
- real
- time synchronous
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
Abstract
本申请公开了分布式系统中处理同步消息的方法、装置、分布式系统,在分布式系统中处理同步消息的方法中,接收同步消息,所述同步消息包括实时同步消息和批量同步消息,且所述同步消息携带有序列号,优先处理所述批量同步消息,记录已处理的最后一个批量同步消息的序列号,然后处理所携带的序列号小于所述已处理的最后一个批量同步消息的序列号的实时同步消息,如果所述批量同步消息已接收完毕,且所述批量同步消息均已处理,则处理所述实时同步消息。本申请能够保证实时同步消息和批量同步消息的处理时序,并且实现简单,不产生额外开销。
Description
技术领域
本申请涉及分布式系统同步技术,尤其涉及分布式系统中数据同步的方法、装置、分布式系统。
背景技术
分布式系统中,主用设备和备用设备之间经常会需要进行数据同步,这种同步通常包括批量同步和实时同步,而批量同步消息具有时效性,需要保证批量同步消息在过期前被处理。
现有技术通过图1所示的方式来保证处理两种同步消息的时序问题。主用实体通过组播通道发送实时同步消息,通过单播通道发送批量同步消息,当主用实体切换通道时,向原通道发送一个通道切换消息,备用实体根据通道切换消息来切换处理通道,从而保证备用实体对同步消息的处理顺序与主用主控板发送的同步消息的顺序一致。
由于此做法实现较为复杂,需要增加额外的通道切换消息,通道切换频繁会产生一定的开销。
发明内容
本申请提供一种分布式系统中处理同步消息的方法、装置、分布式系统,能够保证实时同步消息和批量同步消息的处理时序,并且实现简单,不产生额外开销。
根据本申请实施例的第一方面,提供一种分布式系统中处理同步消息的方法,该方法包括步骤:
步骤1,接收同步消息,所述同步消息包括实时同步消息和批量同步消息,且所述同步消息携带有序列号,所述序列号用以标识所发送的所述同步消息的先后次序;
步骤2,如果存在未处理的所述批量同步消息,则处理所述批量同步消息,记录已处理的最后一个批量同步消息的序列号,并执行步骤3;如果所述批量同步消息已接收完毕,且所述批量同步消息均已处理,则处理所述实时同步消息;
步骤3,如果所述实时同步消息所携带的序列号小于所述已处理的最后一个批量同步消息的序列号,则处理所述实时同步消息,否则返回步骤2。
在一个实施例中,所述批量同步消息存储于第一队列中,步骤2中处理所述批量同步消息的过程包括:
将所述第一队列中当前所存储的所有批量同步消息依次进行处理;或
按照第一预定规则处理所述第一队列中的一个或多个批量同步消息;所述第一预定规则为每轮所处理的批量同步消息的数量小于第一预定值。
在一个实施例中,所述实时同步消息存储于第二队列中,步骤3中处理所述实时同步消息的过程包括:
将所述第二队列中当前所存储的所有序列号小于所述已处理的最后一个批量同步消息的实时同步消息依次进行处理;或
按照第二预定规则处理所述第二队列中的一个或多个序列号小于所述已处理的最后一个批量同步消息的实时同步消息;所述第二预定规则为每轮所处理的实时同步消息的数量小于第二预定值。
作为一个实施例,步骤2中判断所述批量同步消息已接收完毕的过程包括:
接收到结束报文,所述结束报文用于标记所述批量同步消息已接收完。
根据本申请实施例的第二方面,本申请还提供一种分布式系统中处理同步消息的装置,包括:
接收模块,用于接收同步消息,所述同步消息包括实时同步消息和批量同步消息,且所述同步消息携带有序列号,所述序列号用以标识所发送的所述同步消息的先后次序;
第一存储模块,用于存储实时同步消息;
第二存储模块,用于存储批量同步消息;
处理模块,用于如果存在未处理的所述批量同步消息,则从所述第一存储模块读取所述批量同步消息并处理,记录已处理的最后一个批量同步消息的序列号,然后从所述第二存储模块读取所述实时同步消息,如果所述实时同步消息所携带的序列号小于所述已处理的最后一个批量同步消息的序列号,则处理所述实时同步消息,否则继续从所述第一存储模块读取所述批量同步消息并处理;如果所述批量同步消息已接收完毕,且所述批量同步消息均已处理,则从所述第二存储模块读取所述实时同步消息并处理。
在一个实施例中,所述处理模块处理所述批量同步消息的过程包括:
从所述第一存储模块中读取当前所存储的所有批量同步消息依次进行处理;或
按照第一预定规则处理所述第一存储模块中的一个或多个批量同步消息;所述第一预定规则为每轮所处理的批量同步消息的数量小于第一预定值。
在一个实施例中,如果所述实时同步消息所携带的序列号小于所述已处理的最后一个批量同步消息的序列号,所述处理模块处理所述实时同步消息的过程包括:
将第二存储模块中所存储的所有序列号小于所述已处理的最后一个批量同步消息的实时同步消息依次进行处理;或
按照第二预定规则处理所述第二存储模块中的一个或多个序列号小于所述已处理的最后一个批量同步消息的实时同步消息;所述第二预定规则为每轮所处理的实时同步消息的数量小于第二预定值。
进一步的,所述接收模块还用于接收结束报文,所述结束报文用于标记所述批量同步消息已接收完。
根据本申请实施例的第三方面,本申请还提供一种分布式系统,包括主用实体和备用实体,
所述主用实体,用于发送同步消息,所述同步消息包括实时同步消息和批量同步消息,且所述同步消息携带有序列号,所述序列号用以标识所发送的所述同步消息的先后次序;
所述备用实体,用于接收所述同步消息,如果所述批量同步消息尚未接收完毕,且存在未处理的所述批量同步消息,则读取所述批量同步消息并处理,记录已处理的最后一个批量同步消息的序列号,然后读取所述实时同步消息,如果所述实时同步消息所携带的序列号小于所述已处理的最后一个批量同步消息的序列号,则处理所述实时同步消息,否则继续读取所述批量同步消息并处理;如果所述批量同步消息已接收完毕,且所述批量同步消息均已处理,则读取所述实时同步消息并处理。
进一步的,所述主用实体还用于发送结束报文,所述结束报文用于标记所述批量同步消息已接收完;
所述备用实体还用于接收结束报文。
本申请通过在同步消息中携带序列号,并通过序列号控制批量同步消息与实时同步消息的处理先后关系,在处理先后顺序时,基于批量同步消息和实时同步消息的特点,提供了相应的接收控制机制,即首先处理的同步消息需要是批量同步消息,处理批量同步消息后所处理的实时同步消息的发送顺序需先于此轮批量同步消息中已处理的最后一条批量同步消息的发送顺序。当处理完所有的批量同步消息后,实时同步消息的处理过程无需再判断实时同步消息的序列号与已处理的批量同步消息的关系,从而保证了接收端批量同步消息与实时同步消息最终正确处理。由于此套接收控制机制实现简单,因此不产生额外的开销。
附图说明
图1为现有技术中数据同步的方法示意图;
图2为本申请实施例中分布式系统的架构图;
图3为本申请实施例中处理同步消息的方法的流程图;
图4a为本申请应用实例中分布式系统的实例图;
图4b为本申请应用实例中发送端和接收端交互信息的流程图;
图4c为本申请应用实例中接收端处理同步消息的流程图;
图5为本申请应用实例中处理同步消息的装置的硬件架构图;
图6为本申请应用实例中处理同步消息的装置的逻辑框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
参见图2,是本申请的一个应用场景下分布式系统100的系统架构图。在该系统架构下包括一个主用实体101和多个备用实体104,并允许有新的备用实体加入到分布式系统100中。在本申请中,通过单播通道102(a1、a2、a3)发送的同步数据称为批量同步数据,通过组播通道103(b1、b2、b3)发送的同步数据称为实时同步数据。
较常见的情况下,当有新的备用实体加入或重启时,主用实体101生成当前最新的同步数据,通过单播通道102向新加入的备用实体发送批量同步数据。当主用实体101上数据发生变化时(例如,配置信息的变化),会将需要同步的同步数据通过组播通道103向所有备用实体104发送实时同步数据。
作为一种较常见的例子,主用实体常作为批量同步数据和实时同步数据的发送端,备用实体常作为两种同步数据的接收端,并且负责处理两种同步数据。实时同步数据不会过期,而批量同步数据由于是主用实体某一个时刻所生成的数据,因此当主用实体101上有数据发送变化后就会过期(例如,当主用实体发送一条实时同步数据后,与该实时同步数据所相关的之前所生成的批量同步数据将过期)。接收端在处理批量同步数据和实时同步数据时,如果发生时序问题,批量同步数据的过期数据可能作为最终数据保存下来,导致同步出错。
图3为针对图2中的分布式系统架构提供的一个实施例中处理同步消息的方法的流程图。在本实施例中从作为接收端的备用实体一侧进行描述。通过该方法可以确保接收端在处理同步数据时的时序不会出错。
S201,接收端(备用实体104)接收发送端(主用实体101)所发送的同步消息,本申请中的同步消息包括实时同步消息和批量同步消息,接收的实时同步消息或批量同步消息的顺序取决于实际的业务场景。发送端所发送的同步消息携带有序列号,通过序列号标识所发送的同步消息的先后次序;
接收端在收到首个批量同步消息后,进入处理批量同步消息的过程。处理过程如步骤S202。
接收端通过不同的通道(单播通道a1、a2、a3/组播通道b1、b2、b3)接收同步消息,通过单播/组播通道所接收的同步消息可以分别存入不同的队列(第一队列/第二队列)中。如果首先接收到的是通过组播通道传输的实时同步消息,则暂不进行同步消息的处理流程,直到接收到第一个批量同步消息,也就是说,接收端处理的第一个同步消息是批量同步消息。
S202,如果批量同步消息尚未接收完毕,且存在未处理的所述批量同步消息,则处理批量同步消息,记录已处理的最后一个批量同步消息的序列号,并执行步骤203;如果批量同步消息已接收完毕,且批量同步消息均已处理,则处理第二队列里所存储的剩余的以及后续接收到的实时同步消息。作为一个例子,为了保证处理的第一条同步消息是批量同步消息,可以在初始化时将已处理的最后一个批量同步消息的序列号设置为0。
值得说明的是,处理批量同步消息的方式可以有多种,例如,可以每轮处理当前第一队列中所保存的所有待处理的批量同步消息,设计者也可以根据实际业务场景的需要来制定处理批量同步消息的预定规则,可以将批量同步消息分多轮进行处理,通过第一预定规则来设定每轮处理的批量同步消息的数目小于一个预定值,这个预定值在本申请称为第一预定值,根据第一预定规则处理批量同步消息。
作为一个例子,可以通过发送端发送一个结束报文来标明批量同步消息已经全部接收完毕,也可以在接收端设定一个等待期限,在等待期限结束后认为批量同步消息已经发送完毕,当然也不排除其他方式来判断批量同步消息是否发送完毕。
在一个具体的实例中,可以设置一个标记来表示是否处理完已接收完毕的所有批量同步消息,例如该标记表示为proBatch,proBatch为真,代表当前存在待处理的批量同步消息;当proBatch为假,表示所有批量同步消息已接收完毕,且已处理完毕待处理的批量同步消息。接收端为了保证批量同步消息先于实时同步消息处理,接收端在接收批量同步消息之前将proBatch的初始值设置为真,当处理到结束标记时proBatch的值设置为假。当处理实时同步消息时,可根据proBatch的值来决定根据步骤S202或步骤S203处理实时同步消息。
S203,当切换到实时同步消息的处理过程后,对实时同步消息进行处理,所处理的实时同步消息所携带的序列号需小于步骤S202刚进行完的一轮批量同步消息处理过程中已处理的最后一个批量同步消息的序列号,且每轮处理的实时同步消息的数量也可以设置第二预定规则来确定,第二预定规则要求每轮所处理的实时同步消息的数量小于第二预定值。然后继续处理下一轮批量同步消息;
处理下一轮批量同步消息的方式可以参照步骤S202执行,直到处理完所有已接收到的批量同步消息。
通过上述步骤可以看出,在处理同步消息时,首先处理的同步消息需要是批量同步消息,如果批量同步消息是分成多轮处理的,那么每轮处理批量同步消息后所处理的实时同步消息的发送顺序需先于此轮批量同步消息中已处理的最后一条批量同步消息的发送顺序。当处理完所有的批量同步消息后,实时同步消息的处理过程无需再判断实时同步消息的序列号与已处理的批量同步消息的关系。
以下是图2所示的分布式系统100中发送端发送同步消息的方法的流程。
S301,发送端在待发送的同步消息中封装序列号发送到接收端。可以通过单播通道发送批量同步消息,组播通道发送实时同步消息。
S302,在发送批量同步消息时,当发送完最后一条批量同步消息后,通过单播通道发送结束报文。
图4a是一个典型的业务场景下分布式系统100的架构图。在本例中主用实体101为主用主控板401,备用实体104包括多个IO接口板402和至少一个备用主控板403。主用实体101和备用实体104通过守护进程(Daemon)来收发同步消息。守护进程通过组播通道103收发实时同步消息,单播通道102收发批量同步信息。由于同步消息可能会由于如下原因需要对同步消息的发送顺序进行识别:1、组播通道103和单播通道102的同步消息在发送方发送时可能临时存储在主用主控板401的硬件缓存中,最后同时发送出去,从而导致到达接收方(IO接口板402或备用主控板403)的顺序无法得到保证;2、通过组播通道103到达接收方的同步消息,在接收方没有得到及时调度,在此期间,单播通道102的批量同步消息到达,由于需要同时处理两种同步同步消息,因此需要识别同步消息发送的先后顺序。
为了使备用实体板104(IO接口板402或备用主控板403)识别同步消息的发送顺序,本例全局设计一个编号机制,编号从1开始,每发送一个同步消息(不论批量同步消息或实时同步消息)携带一个编号并对编号进行加1处理,该编号在本例称为序列号。
图4b和图4c为图4a的系统架构下IO接口板处理同步消息的方法的流程图。以下结合图4b和图4c在本实施例中从发送端(主用主控板401)和接收端(IO接口板402)两侧进行描述。
S401a,主用主控板与各个IO接口板连接,系统启动时,主用主控板和IO接口板在启动完成后,主用主控板守护进程(Main Daemon)收集需要同步的实时同步信息,通过组播通道发给IO接口板。
S402a,IO接口板守护进程(IO Daemon)接收实时同步信息,并主动向主用主控板的守护进程(Main Daemon)请求批量同步消息。收到的实时同步信息存入一个队列(第二队列)中,等待处理。在守护进程中设置有全局变量procBatch,并将procBatch初始值标记为真,同时,将最后一个处理的批量同步消息的序列号设置为0,以等待处理批量同步信息。
S403a,Main Daemon收集该IO接口板所需要同步的批量同步信息,通过单播通道发给该IO接口板;
S404a,各个IO接口板的IO Daemon接收来自单播通道的批量同步消息,并将批量同步消息存入另一个队列(第一队列)中。
S405a,IO Daemon在处理同步消息时首先判断procBatch的值,如果是真,则从存储批量同步消息的第一队列中读取批量同步消息,并开始处理批量同步消息(S406a)。
S407a,IO Daemon从批量同步消息的第一队列中取出批量同步消息开始处理,在本例中,每次处理的条数需要判断是否满足第一预定规则确定。如果满足第一预定规则,则处理批量同步消息。
S408a,当不满足第一预定规则时,进一步判断从存储批量同步消息的第一队列中所读取的当前消息是否是结束报文,如果是,则说明第一队列中的批量同步消息已经接收完并处理完,则将procBatch的值设置为假(S409a);如果否,则处理完一轮批量同步消息后记录本轮最后一个被处理的批量同步消息的序列号(S410a),并将处理程序切换到实时同步消息的处理过程。
S411a,读取实时同步消息;
S412a从实时同步消息的第二队列中取出的实时同步消息所携带的序列号是否小于刚完成的批量同步消息处理过程中所记录的最后一个被处理的批量同步消息的序列号;如果是则处理该条实时同步消息(S413a)。直到第二队列中实时同步消息的序列号小于最后一个被处理的批量同步消息的序列号的被处理数量已不满足第二预定条件(S414a),此时重新切换到批量同步消息的处理过程,处理第二队列中所剩余的下一轮批量同步消息。
切换到下一轮批量同步消息的处理过程后,重新开始执行步骤S405a,如果没有待处理的批量同步消息,procBatch为真,则可能当前第二队列尚未接收到收条批量同步信息,或刚处理完第二队列中所有的批量同步数据,则等待新的批量同步消息进来。如果procBatch状态值为假,则说明已接收到结束报文,且接收到的批量同步消息已被处理,则重新切换回到S413a的实时同步消息的处理过程。由于批量同步消息通常是在IO接口板新加入时或者重启的条件下所涉及的处理过程,因此处理完这些批量同步消息后通常不会再接收到新的批量同步消息,因此IO Daemon开始专注处理实时同步消息,无需再考虑待处理的实时同步消息与批量同步消息的序列号关系问题。每次处理的实时同步消息的数量也可以按照第二预定规则确定。
以下为图4a的系统架构下备用主控板403处理同步消息的方法的流程。在本实施例中从发送端(主用主控板401)和接收端(备用主控板403)两侧进行描述。
主用主控板作为控制平面的核心,和外部进行业务通信,完成系统内各模块的正常功能;而备用主控板则只作为主用主控板的备份,和外部没有业务通信。当主用主控板发生故障时,系统自动进行主备切换,由备用主控板接替主用主控板的工作,保证业务的正常运行。在主用控制板发生故障时,需要倒换到备用控制板,这就需要在运行的过程中,主备控制板必须进行可靠的同步,这种同步分为批量同步、实时同步和数据平滑同步三个阶段。在以上三个阶段的同步过程中,主要同步的信息为主备用控制板的状态机维护、主备用控制板网络管理信息的同步、主备用控制板上各种转发表的同步。
备用主控板启动后,由于此时主用主控板和备用主控板的差异比较大,主用主控板main Daemon会将当前所有模块的备份数据同步到备用主控板的backup Daemon,这个过程通过批量同步消息完成。在此过程中,当主用主控板数据发生变化时,将发送实时同步信息到备用主控板。在同步过程中,主用主控板401担当发送端的角色,接收端为备用主控板403,同步的过程可参照图4b和图4c所涉及的相关步骤,在此不再赘述。
当主用主控板发生故障时,主备倒换后,备用主控板升为新的主用主控板,会通知backup Daemon向IO接口板进行数据收集和同步,这个过程称之为数据平滑同步。平滑过程中,backup Daemon与IO接口板进行通信,在硬件状态、链路层状态、配置数据三个方面进行确认和同步,以保证整个系统维护的数据和状态是一致的,从而确保主备切换之后,系统能够正常运行。平滑同步阶段结束,备用主用板才成为新的的主用主控板。
平滑阶段同步处理的过程中升级为主用主控板的备用主控板403担当发送端的角色,接收端为IO接口板402,同步的过程可参照图4a所涉及的相关步骤,再次不再赘述。
与前述分布式系统中处理同步消息的方法的实施例相对应,本申请还提供了分布式系统中处理同步消息的装置的实施例。
本申请分布式系统中处理同步消息的装置的实施例可以应用在分布式系统上的备用实体。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在备用实体的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本申请处理同步消息的装置所在备用实体的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的备用实体通常根据该备用实体的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图6,为本申请分布式系统中位于备用实体的处理同步消息的装置600的软件实现的逻辑框图。该装置包括接收模块601、第一存储模块602、第二存储模块603和处理模块604。
接收模块601,用于接收同步消息,所述同步消息包括实时同步消息和批量同步消息,且所述同步消息携带有序列号,所述序列号用以标识所发送的所述同步消息的先后次序;
第一存储模块602,用于存储实时同步消息;
第二存储模块603,用于存储批量同步消息;
处理模块604,用于如果所述批量同步消息尚未接收完毕,且存在未处理的所述批量同步消息,则从所述第一存储模块601读取所述批量同步消息并处理,记录已处理的最后一个批量同步消息的序列号,然后从所述第二存储模块602读取所述实时同步消息,如果所述实时同步消息所携带的序列号小于所述已处理的最后一个批量同步消息的序列号,则处理所述实时同步消息,否则继续从所述第一存储模块读取所述批量同步消息并处理;如果所述批量同步消息已接收完毕,且所述批量同步消息均已处理,则从所述第二存储模块602读取所述实时同步消息并处理。
处理模块604处理所述批量同步消息的过程可以有多种方式,例如:
从所述第一存储模块602中读取当前所存储的所有批量同步消息依次进行处理。
再例如:按照第一预定规则处理所述第一存储模块602中的一个或多个批量同步消息;所述第一预定规则为每轮所处理的批量同步消息的数量小于第一预定值。
在一个例子中,接收模块601还用于接收结束报文,所述结束报文用于标记所述批量同步消息已接收完。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种分布式系统中处理同步消息的方法,其特征在于,该方法包括步骤:
步骤1,接收同步消息,所述同步消息包括实时同步消息和批量同步消息,且所述同步消息携带有序列号,所述序列号用以标识所发送的所述同步消息的先后次序;
步骤2,如果存在未处理的所述批量同步消息,则处理所述批量同步消息,记录已处理的最后一个批量同步消息的序列号,并执行步骤3;如果所述批量同步消息已接收完毕,且所述批量同步消息均已处理,则处理所述实时同步消息;
步骤3,如果所述实时同步消息所携带的序列号小于所述已处理的最后一个批量同步消息的序列号,则处理所述实时同步消息,否则返回步骤2。
2.根据权利要求1所述的方法,其特征在于,所述批量同步消息存储于第一队列中,步骤2中处理所述批量同步消息的过程包括:
将所述第一队列中当前所存储的所有批量同步消息依次进行处理;或
按照第一预定规则处理所述第一队列中的一个或多个批量同步消息;所述第一预定规则为每轮所处理的批量同步消息的数量小于第一预定值。
3.根据权利要求1所述的方法,其特征在于,所述实时同步消息存储于第二队列中,步骤3中处理所述实时同步消息的过程包括:
将所述第二队列中当前所存储的所有序列号小于所述已处理的最后一个批量同步消息的实时同步消息依次进行处理;或
按照第二预定规则处理所述第二队列中的一个或多个序列号小于所述已处理的最后一个批量同步消息的实时同步消息;所述第二预定规则为每轮所处理的实时同步消息的数量小于第二预定值。
4.根据权利要求1所述的方法,其特征在于,步骤2中判断所述批量同步消息已接收完毕的过程包括:
接收到结束报文,所述结束报文用于标记所述批量同步消息已接收完。
5.一种分布式系统中处理同步消息的装置,其特征在于,包括:
接收模块,用于接收同步消息,所述同步消息包括实时同步消息和批量同步消息,且所述同步消息携带有序列号,所述序列号用以标识所发送的所述同步消息的先后次序;
第一存储模块,用于存储实时同步消息;
第二存储模块,用于存储批量同步消息;
处理模块,用于如果存在未处理的所述批量同步消息,则从所述第一存储模块读取所述批量同步消息并处理,记录已处理的最后一个批量同步消息的序列号,然后从所述第二存储模块读取所述实时同步消息,如果所述实时同步消息所携带的序列号小于所述已处理的最后一个批量同步消息的序列号,则处理所述实时同步消息,否则继续从所述第一存储模块读取所述批量同步消息并处理;如果所述批量同步消息已接收完毕,且所述批量同步消息均已处理,则从所述第二存储模块读取所述实时同步消息并处理。
6.根据权利要求5所述的装置,其特征在于,所述处理模块处理所述批量同步消息的过程包括:
从所述第一存储模块中读取当前所存储的所有批量同步消息依次进行处理;或
按照第一预定规则处理所述第一存储模块中的一个或多个批量同步消息;所述第一预定规则为每轮所处理的批量同步消息的数量小于第一预定值。
7.根据权利要求5所述的装置,其特征在于,如果所述实时同步消息所携带的序列号小于所述已处理的最后一个批量同步消息的序列号,所述处理模块处理所述实时同步消息的过程包括:
将第二存储模块中所存储的所有序列号小于所述已处理的最后一个批量同步消息的实时同步消息依次进行处理;或
按照第二预定规则处理所述第二存储模块中的一个或多个序列号小于所述已处理的最后一个批量同步消息的实时同步消息;所述第二预定规则为每轮所处理的实时同步消息的数量小于第二预定值。
8.根据权利要求5所述的装置,其特征在于,所述接收模块还用于接收结束报文,所述结束报文用于标记所述批量同步消息已接收完。
9.一种分布式系统,包括主用实体和备用实体,其特征在于,
所述主用实体,用于发送同步消息,所述同步消息包括实时同步消息和批量同步消息,且所述同步消息携带有序列号,所述序列号用以标识所发送的所述同步消息的先后次序;
所述备用实体,用于接收所述同步消息,如果所述批量同步消息尚未接收完毕,且存在未处理的所述批量同步消息,则读取所述批量同步消息并处理,记录已处理的最后一个批量同步消息的序列号,然后读取所述实时同步消息,如果所述实时同步消息所携带的序列号小于所述已处理的最后一个批量同步消息的序列号,则处理所述实时同步消息,否则继续读取所述批量同步消息并处理;如果所述批量同步消息已接收完毕,且所述批量同步消息均已处理,则读取所述实时同步消息并处理。
10.根据权利要求9所述的分布式系统,其特征在于,所述主用实体还用于发送结束报文,所述结束报文用于标记所述批量同步消息已接收完;
所述备用实体还用于接收结束报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510141016.9A CN104683486B (zh) | 2015-03-27 | 2015-03-27 | 分布式系统中处理同步消息的方法、装置、分布式系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510141016.9A CN104683486B (zh) | 2015-03-27 | 2015-03-27 | 分布式系统中处理同步消息的方法、装置、分布式系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104683486A true CN104683486A (zh) | 2015-06-03 |
CN104683486B CN104683486B (zh) | 2018-07-24 |
Family
ID=53318052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510141016.9A Active CN104683486B (zh) | 2015-03-27 | 2015-03-27 | 分布式系统中处理同步消息的方法、装置、分布式系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104683486B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106656869A (zh) * | 2016-12-30 | 2017-05-10 | 杭州迪普科技股份有限公司 | 一种框式设备中信息同步的方法及系统 |
CN106712997A (zh) * | 2015-11-16 | 2017-05-24 | 华为技术有限公司 | 表项恢复的方法、设备及系统 |
CN107623703A (zh) * | 2016-07-13 | 2018-01-23 | 中兴通讯股份有限公司 | 全局事务标识gtid的同步方法、装置及系统 |
CN109039931A (zh) * | 2018-07-17 | 2018-12-18 | 杭州迪普科技股份有限公司 | 一种虚拟化设备性能优化的方法与装置 |
CN113626221A (zh) * | 2021-08-10 | 2021-11-09 | 迈普通信技术股份有限公司 | 一种消息入队方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101056195A (zh) * | 2006-04-14 | 2007-10-17 | 中兴通讯股份有限公司 | 通信系统中主板与备板的数据同步方法 |
CN101075861A (zh) * | 2007-06-28 | 2007-11-21 | 中兴通讯股份有限公司 | 一种实现主备板热备份和主备倒换的方法 |
CN101567905A (zh) * | 2009-06-03 | 2009-10-28 | 杭州华三通信技术有限公司 | 一种数据同步的方法、发送端和接收端 |
US20120066180A1 (en) * | 2010-09-10 | 2012-03-15 | Microsoft Corporation | File-backed in-memory structured storage for service synchronization |
-
2015
- 2015-03-27 CN CN201510141016.9A patent/CN104683486B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101056195A (zh) * | 2006-04-14 | 2007-10-17 | 中兴通讯股份有限公司 | 通信系统中主板与备板的数据同步方法 |
CN101075861A (zh) * | 2007-06-28 | 2007-11-21 | 中兴通讯股份有限公司 | 一种实现主备板热备份和主备倒换的方法 |
CN101567905A (zh) * | 2009-06-03 | 2009-10-28 | 杭州华三通信技术有限公司 | 一种数据同步的方法、发送端和接收端 |
US20120066180A1 (en) * | 2010-09-10 | 2012-03-15 | Microsoft Corporation | File-backed in-memory structured storage for service synchronization |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106712997A (zh) * | 2015-11-16 | 2017-05-24 | 华为技术有限公司 | 表项恢复的方法、设备及系统 |
CN106712997B (zh) * | 2015-11-16 | 2020-04-14 | 华为技术有限公司 | 表项恢复的方法、设备及系统 |
CN107623703A (zh) * | 2016-07-13 | 2018-01-23 | 中兴通讯股份有限公司 | 全局事务标识gtid的同步方法、装置及系统 |
CN106656869A (zh) * | 2016-12-30 | 2017-05-10 | 杭州迪普科技股份有限公司 | 一种框式设备中信息同步的方法及系统 |
CN109039931A (zh) * | 2018-07-17 | 2018-12-18 | 杭州迪普科技股份有限公司 | 一种虚拟化设备性能优化的方法与装置 |
CN109039931B (zh) * | 2018-07-17 | 2021-12-24 | 杭州迪普科技股份有限公司 | 一种虚拟化设备性能优化的方法与装置 |
CN113626221A (zh) * | 2021-08-10 | 2021-11-09 | 迈普通信技术股份有限公司 | 一种消息入队方法及装置 |
CN113626221B (zh) * | 2021-08-10 | 2024-03-15 | 迈普通信技术股份有限公司 | 一种消息入队方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104683486B (zh) | 2018-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8533334B2 (en) | Message binding processing technique | |
CN110377570B (zh) | 节点切换方法、装置、计算机设备及存储介质 | |
CN104683486A (zh) | 分布式系统中处理同步消息的方法、装置、分布式系统 | |
US8626936B2 (en) | Protocol independent server replacement and replication in a storage area network | |
JP6273927B2 (ja) | 情報処理システム,監視装置,監視プログラム,監視方法 | |
US7870296B2 (en) | High availability system and execution state control method | |
CN111162941B (zh) | 一种Kubernetes环境自动化管理虚拟IP的方法 | |
US20090240974A1 (en) | Data replication method | |
CN109240840A (zh) | 集群系统的容灾方法、装置和机器可读介质 | |
CN111615692A (zh) | 数据搬运方法、计算处理装置、设备及存储介质 | |
EP2428893A2 (en) | A reduction operation device, a processor, and a computer system | |
CN105373563B (zh) | 数据库切换方法及装置 | |
CN103064711A (zh) | 一种基于Spread分布式应用系统的热加载方法 | |
CN105579963B (zh) | 任务处理装置、电子设备及方法 | |
CN112596371A (zh) | 控制卡切换方法、装置、电子设备及存储介质 | |
EP2615548B1 (en) | Computing device | |
CN101202671A (zh) | 端口配置方法及装置 | |
US7861021B2 (en) | Device receiving unit that performs a determination based on data exchange which interfacing device takes precedence when a plurality of interfacing devices are simultaneously connected | |
US9015717B2 (en) | Method for processing tasks in parallel and selecting a network for communication | |
JP4994128B2 (ja) | ストレージシステムとストレージシステムにおける管理方法 | |
CN114679349A (zh) | 一种数据通信方法及装置 | |
CN113032021A (zh) | 系统切换及其数据处理方法、装置、设备及存储介质 | |
US20090019259A1 (en) | Multiprocessing method and multiprocessor system | |
KR101615577B1 (ko) | 클러스터 시스템에서 클러스터를 처리하기 위한 방법과 장치 및 시스템 | |
CN117891761A (zh) | 一种直接内存访问系统及数据搬运方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Applicant after: Xinhua three Technology Co., Ltd. Address before: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Applicant before: Huasan Communication Technology Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |