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

文档序号:8365602阅读:来源:国知局
装置的逻辑框图。
【具体实施方式】
[0044]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0045]在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0046]应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0047]参见图2,是本申请的一个应用场景下分布式系统100的系统架构图。在该系统架构下包括一个主用实体101和多个备用实体104,并允许有新的备用实体加入到分布式系统100中。在本申请中,通过单播通道102(al、a2、a3)发送的同步数据称为批量同步数据,通过组播通道103(bl、b2、b3)发送的同步数据称为实时同步数据。
[0048]较常见的情况下,当有新的备用实体加入或重启时,主用实体101生成当前最新的同步数据,通过单播通道102向新加入的备用实体发送批量同步数据。当主用实体101上数据发生变化时(例如,配置信息的变化),会将需要同步的同步数据通过组播通道103向所有备用实体104发送实时同步数据。
[0049]作为一种较常见的例子,主用实体常作为批量同步数据和实时同步数据的发送端,备用实体常作为两种同步数据的接收端,并且负责处理两种同步数据。实时同步数据不会过期,而批量同步数据由于是主用实体某一个时刻所生成的数据,因此当主用实体101上有数据发送变化后就会过期(例如,当主用实体发送一条实时同步数据后,与该实时同步数据所相关的之前所生成的批量同步数据将过期)。接收端在处理批量同步数据和实时同步数据时,如果发生时序问题,批量同步数据的过期数据可能作为最终数据保存下来,导致同步出错。
[0050]图3为针对图2中的分布式系统架构提供的一个实施例中处理同步消息的方法的流程图。在本实施例中从作为接收端的备用实体一侧进行描述。通过该方法可以确保接收端在处理同步数据时的时序不会出错。
[0051]S201,接收端(备用实体104)接收发送端(主用实体101)所发送的同步消息,本申请中的同步消息包括实时同步消息和批量同步消息,接收的实时同步消息或批量同步消息的顺序取决于实际的业务场景。发送端所发送的同步消息携带有序列号,通过序列号标识所发送的同步消息的先后次序;
[0052]接收端在收到首个批量同步消息后,进入处理批量同步消息的过程。处理过程如步骤S202。
[0053]接收端通过不同的通道(单播通道al、a2、a3/组播通道bl、b2、b3)接收同步消息,通过单播/组播通道所接收的同步消息可以分别存入不同的队列(第一队列/第二队列)中。如果首先接收到的是通过组播通道传输的实时同步消息,则暂不进行同步消息的处理流程,直到接收到第一个批量同步消息,也就是说,接收端处理的第一个同步消息是批量同步消息。
[0054]S202,如果批量同步消息尚未接收完毕,且存在未处理的所述批量同步消息,则处理批量同步消息,记录已处理的最后一个批量同步消息的序列号,并执行步骤203 ;如果批量同步消息已接收完毕,且批量同步消息均已处理,则处理第二队列里所存储的剩余的以及后续接收到的实时同步消息。作为一个例子,为了保证处理的第一条同步消息是批量同步消息,可以在初始化时将已处理的最后一个批量同步消息的序列号设置为O。
[0055]值得说明的是,处理批量同步消息的方式可以有多种,例如,可以每轮处理当前第一队列中所保存的所有待处理的批量同步消息,设计者也可以根据实际业务场景的需要来制定处理批量同步消息的预定规则,可以将批量同步消息分多轮进行处理,通过第一预定规则来设定每轮处理的批量同步消息的数目小于一个预定值,这个预定值在本申请称为第一预定值,根据第一预定规则处理批量同步消息。
[0056]作为一个例子,可以通过发送端发送一个结束报文来标明批量同步消息已经全部接收完毕,也可以在接收端设定一个等待期限,在等待期限结束后认为批量同步消息已经发送完毕,当然也不排除其他方式来判断批量同步消息是否发送完毕。
[0057]在一个具体的实例中,可以设置一个标记来表示是否处理完已接收完毕的所有批量同步消息,例如该标记表示为proBatch,proBatch为真,代表当前存在待处理的批量同步消息;当proBatch为假,表示所有批量同步消息已接收完毕,且已处理完毕待处理的批量同步消息。接收端为了保证批量同步消息先于实时同步消息处理,接收端在接收批量同步消息之前将proBatch的初始值设置为真,当处理到结束标记时proBatch的值设置为假。当处理实时同步消息时,可根据proBatch的值来决定根据步骤S202或步骤S203处理实时同步消息。
[0058]S203,当切换到实时同步消息的处理过程后,对实时同步消息进行处理,所处理的实时同步消息所携带的序列号需小于步骤S202刚进行完的一轮批量同步消息处理过程中已处理的最后一个批量同步消息的序列号,且每轮处理的实时同步消息的数量也可以设置第二预定规则来确定,第二预定规则要求每轮所处理的实时同步消息的数量小于第二预定值。然后继续处理下一轮批量同步消息;
[0059]处理下一轮批量同步消息的方式可以参照步骤S202执行,直到处理完所有已接收到的批量同步消息。
[0060]通过上述步骤可以看出,在处理同步消息时,首先处理的同步消息需要是批量同步消息,如果批量同步消息是分成多轮处理的,那么每轮处理批量同步消息后所处理的实时同步消息的发送顺序需先于此轮批量同步消息中已处理的最后一条批量同步消息的发送顺序。当处理完所有的批量同步消息后,实时同步消息的处理过程无需再判断实时同步消息的序列号与已处理的批量同步消息的关系。
[0061]以下是图2所示的分布式系统100中发送端发送同步消息的方法的流程。
[0062]S301,发送端在待发送的同步消息中封装序列号发送到接收端。可以通过单播通道发送批量同步消息,组播通道发送实时同步消息。
[0063]S302,在发送批量同步消息时,当发送完最后一条批量同步消息后,通过单播通道发送结束报文。
[0064]图4a是一个典型的业务场景下分布式系统100的架构图。在本例中主用实体101为主用主控板401,备用实体104包括多个1接口板402和至少一个备用主控板403。主用实体101和备用实体104通过守护进程(Daemon)来收发同步消息。守护进程通过组播通道103收发实时同步消息,单播通道102收发批量同步信息。由于同步消息可能会由于如下原因需要对同步消息的发送顺序进行识别:1、组播通道103和单播通道102的同步消息在发送方发送时可能临时存储在主用主控板401的硬件缓存中,最后同时发送出去,从而导致到达接收方(10接口板402或备用主控板403
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1