主从节点之间状态同步的方法

文档序号:7611530阅读:257来源:国知局
专利名称:主从节点之间状态同步的方法
技术领域
本发明涉及通信技术领域,尤其涉及一种主从节点之间状态同步的方法。
背景技术
在通信领域,主从节点之间需要进行各种信息的通信。主从节点之间通信信息,有一类比较特殊的情况叫状态类通信。这类通信的主要特点是主节点并不十分关心通信过程中从节点偶尔的中间状态信息的丢失,主节点关心的是从节点当前最新的状态信息,即关心当前主从节点间的状态信息是否同步。在通信领域,同步是保证通信质量的关键因素,主从同步是目前广泛应用的一种同步方式。
在通信正常时,主从节点相应的所有状态信息都能达到一致的状态,例如从节点Slave_1有属性Attr1,其对应的取值可能为a1,a2,a3,从节点属性Attr1的取值变化能正确传送到主节点,主节点能够与从节点同步地进行状态更新。
然而,在通信出现异常的情况下。假设从节点Slave_1属性Attr1目前的取值为a1,该值已经正确传送到主节点,通信出现故障,期间Slave_1属性Attr1的变化情况为a1->a2->a1->a3->a2。此后通信又恢复正常。此时主节点与从节点Slave_1属性Attr1相对应的值仍为a1,既出现了主从节点状态失步。
为了达到主从节点对应状态信息一致即主从节点状态同步,目前通常采用以下几种做法1、从节点将对应的状态变化情况都缓存,并依次上报给主节点。对应上面的例子,从节点需要保存的状态变化情况就是a1->a2->a1->a3->a2,该做法的缺点是从节点需要较大的缓存来保存其状态变化情况;2、主节点主动查询,根据查询到的从节点所有属性的当前状态来更新主节点中相对应的状态,以达到主从节点状态“同步”。该做法的缺点是主节点需要查询从节点所有属性的当前状态,其中包括一些主从节点之间已经保持同步的状态,因此,该方法导致了很多主从节点之间不必要的消息流量;3、仅仅将从节点Slave_1属性Attr1的最新属性值a2上报,并更新主节点中对应的信息。该做法的缺点是没有一个主从节点之间互相响应的机制来预防从节点上报的消息有可能丢失的情况。
为解决状态类信息通信的主从节点之间的同步问题,基于上面所述的做法1,现有技术中有一种等待式应答方法,其具体处理流程如图1所示,包括如下步骤步骤11、从节点发生状态变更后,从节点发送R_1消息给主节点,以通知主节点自己的状态变化情况;步骤12、从节点进入等待主节点返回响应消息的状态,等待期间从节点不能向主节点发送消息;步骤13、主节点向从节点发送R_1消息的响应消息A_1,以通知从节点收到了R_1消息并进行了相应的状态变更;步骤14、从节点收到主节点返回的响应消息A_1后,从节点继续给主节点发送消息R_2,以通知主节点自己的状态变化情况。
从上述现有技术方案可以看出,通过上述方法实现主从节点同步具有如下两方面的缺点
1、通信效率低由于从节点上报消息之后,必须等到收到主节点返回的响应消息之后,才能上报下一个消息,这种实现方法存在一个时延,从而导致通信效率的下降;2、从节点需要较大的缓存当从节点的消息较多时,必然导致需要较大的缓存来保存这些在从节点上已经产生但没有发送,或者虽发送但还没有收到响应的消息。
为解决状态类信息通信的主从节点之间的同步问题,基于上面所述的做法2,现有技术中还有一种查询方法,其基本处理过程是通信正常时,主从节点之间按照正常情况下确定的机制来进行通信;一旦主节点判断相应从节点通信由“异常”-->“正常”,就下发查询命令到相应的从节点;该从节点收到查询命令后,将该节点所有属性的最新状态值全部上报一遍。
该方法的缺点是由于在对应从节点通信由“异常”-->“正常”时,需要将该节点所有属性的最新状态值全部上报一遍,其中有些是主从节点之间已经保持同步的状态值,因此,该方法导致了很多不必要的消息流量;而且主节点还需要判断从节点上报的状态信息中,哪些是已经处理过而不必再处理的,因此该方法还增加了主节点的处理代价。

发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种主从节点之间状态同步的方法,可以实现主从节点之间的状态同步,并可以克服现有技术存在的问题。
本发明的目的是通过以下技术方案实现的本发明提供了一种主从节点之间状态同步的方法,包括A、确定从节点中与主节点间未同步的状态信息;B、主节点获取从节点中所述的未同步的状态信息,并根据所述的状态信息更新主节点的状态信息。
所述的步骤A包括A1、当从节点发生状态变更,则向主节点上报状态变更消息;A2、根据主节点返回的所述状态变更消息的响应消息的内容确定从节点中与主节点相应状态项的同步状态。
所述的步骤A1包括A11、从节点在每一个状态信息项中增加一个应答标志,并将所有表项的应答标记设置为有效;A12、从节点发生状态变更,变更后的状态信息项中的应答标记置为无效;A13、从节点上报包含状态变更情况的消息给主节点。
所述的步骤A2包括A21、主节点回填所有相应的状态参数组成应答消息,并发送给从节点;A22、从节点根据主节点应答消息中的状态参数信息,更新主从节点间状态同步的状态信息项中的应答标记为有效;A23、从节点检查状态表中所有表项,将应答标记为无效的状态项确定为其与主节点间未同步的状态信息。
所述的步骤B包括B1、从节点将确定的其与主节点间未同步的状态信息组成上报消息并发送给主节点;B2、主节点根据收到的从节点上报的消息,更新主从节点间状态不同步的状态项,使主从节点状态保持一致。
所述的步骤A包括A3、在主从节点上分别设置同步号,所述的同步号用于标识信息发送的顺序;A4、根据主从节点的同步号确定从节点上与主节点间未同步的状态信息。
所述的步骤A3还包括主从节点将其同步号设置为相同的初始值。
所述的步骤A4包括A41、从节点发生状态变更,上报包含同步号信息字段的状态变更消息给主节点并且将从节点同步号加1;A42、主节点根据收到的消息中的从节点同步号,判断主从节点是否同步,并确定从节点上与主节点间未同步的状态信息。
所述的步骤A42包括A421、当从节点同步号等于主节点同步号时,主节点同步号加1,主从节点同步;;A422、当从节点同步号大于主节点同步号时,从节点进行查询范围为[主节点同步号,从节点同步号]的从节点当前状态的查询操作以确定其与主节点间未同步的状态信息;A423、当从节点同步号小于主节点同步号时,直接丢弃从节点上报的消息。
所述的步骤B包括B1、从节点将确定的其与主节点间未同步的状态信息组成消息上报给主节点,B2、主节点根据收到的消息更新其状态和对应的同步号。
所述的步骤B还包括从节点每隔一定的时间,重发最近一次上报的消息。
由上述本发明提供的技术方案可以看出,本发明在一定程度上解决了现有技术所存在的问题,具有以下优点本发明所述方法中从节点无需缓存中间状态,因此有效地克服了现有技术中等待式应答方法需要较大的缓存、通信效率低的缺点;本发明也克服了现有技术中查询方法的不区分对应状态是否已经同步而统统上报所带来的不良影响,大大减少了主从节点之间不必要的信息交互。本发明适用于所有的基于状态类通信场合,不但可以实现主从节点之间的状态同步,而且可以大大提高系统性能,同时本发明所述方法在实现上又比较简单。


图1为现有技术中等待式应答方法的流程图;图2为本发明所述的基于应答标记的实施方案的原理简图;图3为本发明所述的基于同步号的实施方案的原理简图;图4为本发明所述的基于应答标记的实施方案的流程图;图5为本发明所述的基于同步号的实施方案的流程图。
具体实施例方式
本发明的主要内容是提供一种主从节点之间状态同步的方法,从而实现主从节点之间的状态同步。
本发明所述方法的核心为1在从节点中,确定其与主节点间未同步的状态信息。
从节点每发生一次状态变更,上报状态变更消息给主节点,然后根据主节点返回的状态变更消息的响应消息确定其与主节点间未同步的状态信息。
2主节点获取从节点中所述的未同步的状态信息,并根据所述的状态信息更新主节点的状态信息。
从节点将确定的其与主节点间未同步的状态信息组成消息上报给主节点,主节点根据收到的消息进行状态更新,使主从节点状态保持一致。
本发明所述方法包括两个实施方案基于应答标记的实施方案和基于同步号的实施方案。
本发明所述的基于应答标记的实施方案的原理简图如图2所示,其具体处理流程如图4所示,该方案需要从节点在每一个状态信息项上增加一个标志是否收到主节点的应答标志RespFlg,其具体处理流程包括如下步骤步骤41从节点初始化其所有属性的状态表项,将所有表项的RespFlg标记置为“收到应答”,代表从节点目前状态表项中所有状态与主节点同步;步骤42从节点收到状态变更消息Rept_n或者检测到状态需要发生变化时,从节点更新状态表对应项的状态,然后将该状态项对应的RespFlg标记置为“未应答”,代表该状态项目前尚未确认与主节点中对应状态项同步,即主从节点在该状态项上不同步;步骤43从节点上报包含状态变更情况的消息Report_n给主节点;步骤44主节点收到从节点上报的消息Report_n后,回填和从节点上报状态项相对应的主节点的状态项中的所有参数组成应答消息,并发送给从节点,然后找到对应的状态项,并判断状态是否一致,只有在状态不一致时才更新状态项,使主从节点状态保持一致;步骤45从节点收到主节点返回的应答消息Resp_n后,根据主节点应答信息中的状态信息,判断其对应的状态项和主节点是否一致,状态一致时,更新其RespFlg标记为“收到应答”;否则不处理,从节点状态表中所有RespFlg标记为“未应答”的状态项既被确定为和主节点不同步的状态项;步骤46从节点定时时间到,检查状态表中所有表项,并将RespFlg标记为“未应答”的状态项组成上报消息并发送给主节点;步骤47主节点根据从节点上报的消息,找到和从节点对应的状态项,然后判断主从节点是否状态一致,状态不一致时,更新主节点对应状态项,使主从节点状态保持同步。
本方案和等待式应答方法相比,下一个消息不需要等到收到上一条消息的响应消息即可发送给主节点,不存在时延问题;和查询方法相比,本方案可以避免发送一些本已经正确同步的消息,主节点无需为此做一些额外的判断处理。
实现时,本方案还可以采取一个变通方案即在所述的步骤24,从节点在判断状态不一致时,立即将该项组成消息并上报给主节点,这样做的好处是可以减少定时检测时可能重发的消息量;弊端在于增加了一个消息重发判断处理点。
本方案的缺点为因引入了响应机制,导致主从节点之间的消息量倍增。
为克服本方案的缺点,本发明还引入了另一个基于同步号的实施方案。
基于同步号的实施方案的原理简图如图3所示,其具体处理流程如图5所示,该方案的主要特点为主从节点基于一个32bit(比特)的同步号来实现主从节点之间的状态同步;主从节点的同步号都保存在其内存控制信息结构中,并且该同步号作为从节点向主节点上报的状态消息中的一个信息字段;主从节点状态是否同步的判断放在主节点。其具体处理流程包括如下步骤步骤51主从节点初始化其同步号,同时将其同步号置为0,代表目前主从节点状态同步;步骤52从节点收到状态变更消息Rept_n或者检测到状态需要发生变化时,从节点更新状态表对应项的状态,此时主从节点间对应状态可能同步也可能不同步;步骤53从节点上报包含同步号信息字段的状态变更消息Report_n给主节点,并且将其同步号加1,从节点上报的消息和同步号是一一对应关系;步骤54主节点将收到的消息Report_n中的从节点同步号和对应的主节点同步号进行比较,判断主从节点是否同步。
1当从节点同步号=主节点同步号时,主从节点同步,执行步骤55;2当从节点同步号>主节点同步号时,主从节点不同步,并且主节点的状态滞后于从节点,执行步骤57;3当从节点同步号<主节点同步号时,收到的消息是被延迟的从节点以前状态所对应的消息,执行步骤56;步骤55、主节点同步号加1,然后进行状态判断、更新操作;步骤56、直接丢弃从节点上报的消息,该处理流程结束;步骤57主从节点不同步,主节点向从节点发起查询从节点当前状态的操作,查询范围为[主节点同步号,从节点同步号],以确定从节点中与主节点间未同步的状态项的当前状态;步骤58从节点将查询结果上报给主节点,以通知主节点其当前的状态和同步号;步骤59主节点根据收到的消息中的从节点状态信息,更新相应的状态项和同步号,使主从节点状态保持一致。
在该方案中,为了预防从节点再也没有新消息产生,而主从节点之间又存在状态不同步以及从节点上报的消息有可能丢失等情况,从节点还需要每隔一定的时间,重发最近一次上报的消息。
在该方案中,主从节点状态是否同步的判断放在主节点,而且只有在判断不同步且主节点的状态滞后于从节点时才发起“查询”动作,从节点根本无需缓存“中间状态”。
举例假设从节点有状态项StatA,其取值可能为a1,a2,现在记录从节点中状态项StatA的变化轨迹为a1(103)-->a2(105)-->a1(106)-->a2(108)括号中的数字为各状态对应的同步号;
假设此时主节点中当前状态项对应的同步号为106,而又收到同步号为108的消息,说明该同步方法在处理过程中丢掉了从节点发送的对应同步号为106,107的消息。于是主节点向从节点发起查询从节点当前状态的操作,查询范围为[106,108]。但在从节点,对应同步号为106的状态项实际保存的已经是对应同步号为108的最新状态,即同步号为106的“中间状态”已经不复存在。但这没有任何问题,该从节点只要返回当前状态表中同步号范围在查询范围内的所有表项给主节点即可,主节点在收到查询应答消息后将对应的同步号强制更新为108,并且更新同步号108对应的状态,即达到主从节点实际的同步。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
权利要求
1.一种主从节点之间状态同步的方法,其特征在于,包括A、确定从节点中与主节点间未同步的状态信息;B、主节点获取从节点中所述的未同步的状态信息,并根据所述的状态信息更新主节点的状态信息。
2.根据权利要求1所述的主从节点之间状态同步的方法,其特征在于,所述的步骤A包括A1、当从节点发生状态变更,则向主节点上报状态变更消息;A2、根据主节点返回的所述状态变更消息的响应消息的内容获知从节点中与主节点相应状态项的同步状态,并进一步确定从节点中与主节点间未同步的状态信息。
3.根据权利要求2所述的主从节点之间状态同步的方法,其特征在于,所述的步骤A1包括A11、从节点在每一个状态信息项中增加一个应答标志,并将所有表项的应答标记设置为有效;A12、从节点发生状态变更,变更后的状态信息项中的应答标记置为无效;A13、从节点上报包含状态变更情况的消息给主节点。
4.根据权利要求2所述的主从节点之间状态同步的方法,其特征在于,所述的步骤A2包括A21、主节点回填所有相应的状态参数组成应答消息,并发送给从节点;A22、从节点根据主节点应答消息中的状态参数信息,更新主从节点间状态同步的状态信息项中的应答标记为有效;A23、从节点检查状态表中所有表项,将应答标记为无效的状态项确定为其与主节点间未同步的状态信息。
5.根据权利要求1、2、3或4所述的主从节点之间状态同步的方法,其特征在于,所述的步骤B包括B1、从节点将确定的其与主节点间未同步的状态信息组成上报消息并发送给主节点;B2、主节点根据收到的从节点上报的消息,更新主从节点间状态不同步的状态项,使主从节点状态保持一致。
6.根据权利要求1所述的主从节点之间状态同步的方法,其特征在于,所述的步骤A包括A3、在主从节点上分别设置同步号,所述的同步号用于标识信息发送的顺序;A4、根据主从节点的同步号确定从节点上与主节点间未同步的状态信息。
7.根据权利要求6所述的主从节点之间状态同步的方法,其特征在于,所述的步骤A3还包括主从节点将其同步号设置为相同的初始值。
8.根据权利要求6所述的主从节点之间状态同步的方法,其特征在于,所述的步骤A4包括A41、从节点发生状态变更,上报包含同步号信息字段的状态变更消息给主节点并且将从节点同步号加1;A42、主节点根据收到的消息中的从节点同步号,判断主从节点是否同步,并确定从节点上与主节点间未同步的状态信息。
9.根据权利要求8所述的主从节点之间状态同步的方法,其特征在于,所述的步骤A42包括A421、当从节点同步号等于主节点同步号时,主节点同步号加1,主从节点同步;;A422、当从节点同步号大于主节点同步号时,从节点进行查询范围为[主节点同步号,从节点同步号]的从节点当前状态的查询操作以确定其与主节点间未同步的状态信息;A423、当从节点同步号小于主节点同步号时,直接丢弃从节点上报的消息。
10.根据权利要求6、7、8或9所述的主从节点之间状态同步的方法,其特征在于,所述的步骤B包括B1、从节点将确定的其与主节点间未同步的状态信息组成消息上报给主节点,B2、主节点根据收到的消息更新其状态和对应的同步号。
11.根据权利要求1或6所述的主从节点之间状态同步的方法,其特征在于,所述的步骤B还包括从节点每隔一定的时间,重发最近一次上报的消息。
全文摘要
本发明提供了一种主从节点之间状态同步的方法。该方法包括确定从节点与主节点间未同步的状态信息;主节点获取从节点中所述的未同步的状态信息,并根据所述的状态信息更新主节点的状态信息。本发明适用于所有的基于状态类通信场合,不但可以实现主从节点之间的状态同步,而且可以大大提高系统性能,同时本发明所述方法在实现上又比较简单。
文档编号H04L29/00GK1812338SQ20051000491
公开日2006年8月2日 申请日期2005年1月28日 优先权日2005年1月28日
发明者汪召兵, 竹锦, 叶洪波 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1