分布式系统中处理同步消息的方法、装置、分布式系统的制作方法

文档序号:8365602阅读:419来源:国知局
分布式系统中处理同步消息的方法、装置、分布式系统的制作方法
【技术领域】
[0001]本申请涉及分布式系统同步技术,尤其涉及分布式系统中数据同步的方法、装置、分布式系统。
【背景技术】
[0002]分布式系统中,主用设备和备用设备之间经常会需要进行数据同步,这种同步通常包括批量同步和实时同步,而批量同步消息具有时效性,需要保证批量同步消息在过期前被处理。
[0003]现有技术通过图1所示的方式来保证处理两种同步消息的时序问题。主用实体通过组播通道发送实时同步消息,通过单播通道发送批量同步消息,当主用实体切换通道时,向原通道发送一个通道切换消息,备用实体根据通道切换消息来切换处理通道,从而保证备用实体对同步消息的处理顺序与主用主控板发送的同步消息的顺序一致。
[0004]由于此做法实现较为复杂,需要增加额外的通道切换消息,通道切换频繁会产生一定的开销。

【发明内容】

[0005]本申请提供一种分布式系统中处理同步消息的方法、装置、分布式系统,能够保证实时同步消息和批量同步消息的处理时序,并且实现简单,不产生额外开销。
[0006]根据本申请实施例的第一方面,提供一种分布式系统中处理同步消息的方法,该方法包括步骤:
[0007]步骤1,接收同步消息,所述同步消息包括实时同步消息和批量同步消息,且所述同步消息携带有序列号,所述序列号用以标识所发送的所述同步消息的先后次序;
[0008]步骤2,如果存在未处理的所述批量同步消息,则处理所述批量同步消息,记录已处理的最后一个批量同步消息的序列号,并执行步骤3;如果所述批量同步消息已接收完毕,且所述批量同步消息均已处理,则处理所述实时同步消息;
[0009]步骤3,如果所述实时同步消息所携带的序列号小于所述已处理的最后一个批量同步消息的序列号,则处理所述实时同步消息,否则返回步骤2。
[0010]在一个实施例中,所述批量同步消息存储于第一队列中,步骤2中处理所述批量同步消息的过程包括:
[0011]将所述第一队列中当前所存储的所有批量同步消息依次进行处理;或
[0012]按照第一预定规则处理所述第一队列中的一个或多个批量同步消息;所述第一预定规则为每轮所处理的批量同步消息的数量小于第一预定值。
[0013]在一个实施例中,所述实时同步消息存储于第二队列中,步骤3中处理所述实时同步消息的过程包括:
[0014]将所述第二队列中当前所存储的所有序列号小于所述已处理的最后一个批量同步消息的实时同步消息依次进行处理;或
[0015]按照第二预定规则处理所述第二队列中的一个或多个序列号小于所述已处理的最后一个批量同步消息的实时同步消息;所述第二预定规则为每轮所处理的实时同步消息的数量小于第二预定值。
[0016]作为一个实施例,步骤2中判断所述批量同步消息已接收完毕的过程包括:
[0017]接收到结束报文,所述结束报文用于标记所述批量同步消息已接收完。
[0018]根据本申请实施例的第二方面,本申请还提供一种分布式系统中处理同步消息的装置,包括:
[0019]接收模块,用于接收同步消息,所述同步消息包括实时同步消息和批量同步消息,且所述同步消息携带有序列号,所述序列号用以标识所发送的所述同步消息的先后次序;
[0020]第一存储模块,用于存储实时同步消息;
[0021]第二存储模块,用于存储批量同步消息;
[0022]处理模块,用于如果存在未处理的所述批量同步消息,则从所述第一存储模块读取所述批量同步消息并处理,记录已处理的最后一个批量同步消息的序列号,然后从所述第二存储模块读取所述实时同步消息,如果所述实时同步消息所携带的序列号小于所述已处理的最后一个批量同步消息的序列号,则处理所述实时同步消息,否则继续从所述第一存储模块读取所述批量同步消息并处理;如果所述批量同步消息已接收完毕,且所述批量同步消息均已处理,则从所述第二存储模块读取所述实时同步消息并处理。
[0023]在一个实施例中,所述处理模块处理所述批量同步消息的过程包括:
[0024]从所述第一存储模块中读取当前所存储的所有批量同步消息依次进行处理;或
[0025]按照第一预定规则处理所述第一存储模块中的一个或多个批量同步消息;所述第一预定规则为每轮所处理的批量同步消息的数量小于第一预定值。
[0026]在一个实施例中,如果所述实时同步消息所携带的序列号小于所述已处理的最后一个批量同步消息的序列号,所述处理模块处理所述实时同步消息的过程包括:
[0027]将第二存储模块中所存储的所有序列号小于所述已处理的最后一个批量同步消息的实时同步消息依次进行处理;或
[0028]按照第二预定规则处理所述第二存储模块中的一个或多个序列号小于所述已处理的最后一个批量同步消息的实时同步消息;所述第二预定规则为每轮所处理的实时同步消息的数量小于第二预定值。
[0029]进一步的,所述接收模块还用于接收结束报文,所述结束报文用于标记所述批量同步消息已接收完。
[0030]根据本申请实施例的第三方面,本申请还提供一种分布式系统,包括主用实体和备用实体,
[0031]所述主用实体,用于发送同步消息,所述同步消息包括实时同步消息和批量同步消息,且所述同步消息携带有序列号,所述序列号用以标识所发送的所述同步消息的先后次序;
[0032]所述备用实体,用于接收所述同步消息,如果所述批量同步消息尚未接收完毕,且存在未处理的所述批量同步消息,则读取所述批量同步消息并处理,记录已处理的最后一个批量同步消息的序列号,然后读取所述实时同步消息,如果所述实时同步消息所携带的序列号小于所述已处理的最后一个批量同步消息的序列号,则处理所述实时同步消息,否则继续读取所述批量同步消息并处理;如果所述批量同步消息已接收完毕,且所述批量同步消息均已处理,则读取所述实时同步消息并处理。
[0033]进一步的,所述主用实体还用于发送结束报文,所述结束报文用于标记所述批量同步消息已接收完;
[0034]所述备用实体还用于接收结束报文。
[0035]本申请通过在同步消息中携带序列号,并通过序列号控制批量同步消息与实时同步消息的处理先后关系,在处理先后顺序时,基于批量同步消息和实时同步消息的特点,提供了相应的接收控制机制,即首先处理的同步消息需要是批量同步消息,处理批量同步消息后所处理的实时同步消息的发送顺序需先于此轮批量同步消息中已处理的最后一条批量同步消息的发送顺序。当处理完所有的批量同步消息后,实时同步消息的处理过程无需再判断实时同步消息的序列号与已处理的批量同步消息的关系,从而保证了接收端批量同步消息与实时同步消息最终正确处理。由于此套接收控制机制实现简单,因此不产生额外的开销。
【附图说明】
[0036]图1为现有技术中数据同步的方法示意图;
[0037]图2为本申请实施例中分布式系统的架构图;
[0038]图3为本申请实施例中处理同步消息的方法的流程图;
[0039]图4a为本申请应用实例中分布式系统的实例图;
[0040]图4b为本申请应用实例中发送端和接收端交互信息的流程图;
[0041]图4c为本申请应用实例中接收端处理同步消息的流程图;
[0042]图5为本申请应用实例中处理同步消息的装置的硬件架构图;
[0043]图6为本申请应用实例中处理同步消息的
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1