CN100525203C - 主从节点之间状态同步的方法 - Google Patents
主从节点之间状态同步的方法 Download PDFInfo
- Publication number
- CN100525203C CN100525203C CNB2005100049150A CN200510004915A CN100525203C CN 100525203 C CN100525203 C CN 100525203C CN B2005100049150 A CNB2005100049150 A CN B2005100049150A CN 200510004915 A CN200510004915 A CN 200510004915A CN 100525203 C CN100525203 C CN 100525203C
- Authority
- CN
- China
- Prior art keywords
- node
- state
- synchronous
- host node
- host
- 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.)
- Active
Links
Images
Abstract
本发明提供了一种主从节点之间状态同步的方法。该方法包括:确定从节点与主节点间未同步的状态信息;主节点获取从节点中所述的未同步的状态信息,并根据所述的状态信息更新主节点的状态信息。本发明适用于所有的基于状态类通信场合,不但可以实现主从节点之间的状态同步,而且可以大大提高系统性能,同时本发明所述方法在实现上又比较简单。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种主从节点之间状态同步的方法。
背景技术
在通信领域,主从节点之间需要进行各种信息的通信。主从节点之间通信信息,有一类比较特殊的情况叫状态类通信。这类通信的主要特点是:主节点并不十分关心通信过程中从节点偶尔的中间状态信息的丢失,主节点关心的是从节点当前最新的状态信息,即关心当前主从节点间的状态信息是否同步。在通信领域,同步是保证通信质量的关键因素,主从同步是目前广泛应用的一种同步方式。
在通信正常时,主从节点相应的所有状态信息都能达到一致的状态,例如:从节点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、从节点将确定的其与主节点间未同步的状态信息组成消息上报给主节点;
C、主节点获取从节点上报的所述未同步的状态信息,并根据所述未同步的状态信息更新主节点的状态信息。
所述的步骤A包括:
A1、当从节点发生状态变更,则向主节点上报状态变更消息;
A2、根据主节点返回的所述状态变更消息的响应消息的内容确定从节点中与主节点相应状态项的同步状态。
所述的步骤A1包括:
A11、从节点在每一个状态信息项中增加一个应答标志,并将所有表项的应答标记设置为有效;
A12、从节点发生状态变更,变更后的状态信息项中的应答标记置为无效;
A13、从节点上报包含状态变更情况的消息给主节点。
所述的步骤A2包括:
A21、主节点回填所有相应的状态参数组成应答消息,并发送给从节点;
A22、从节点根据主节点应答消息中的状态参数信息,更新主从节点间状态同步的状态信息项中的应答标记为有效;
A23、从节点检查状态表中所有表项,将应答标记为无效的状态项确定为其与主节点间未同步的状态信息。
所述的步骤C包括:
主节点根据收到的所述未同步的状态信息,更新主从节点间状态不同步的状态项,使主从节点状态保持一致。
所述的步骤A包括:
A3、在主从节点上分别设置同步号,所述的同步号用于标识信息发送的顺序;
A4、根据主从节点的同步号确定从节点上与主节点间未同步的状态信息。
所述的步骤A3还包括:
主从节点将其同步号设置为相同的初始值。
所述的步骤A4包括:
A41、从节点发生状态变更,上报包含同步号信息字段的状态变更消息给主节点并且将从节点同步号加1;
A42、主节点根据收到的消息中的从节点同步号,判断主从节点是否同步,并确定从节点上与主节点间未同步的状态信息。
所述的步骤A42包括:
A421、当从节点同步号等于主节点同步号时,主节点同步号加1,主从节点同步;
A422、当从节点同步号大于主节点同步号时,从节点进行查询范围为主节点同步号至从节点同步号之间的从节点当前状态的查询操作以确定其与主节点间未同步的状态信息;
A423、当从节点同步号小于主节点同步号时,直接丢弃从节点上报的消息。
所述的步骤C包括:
主节点根据收到的所述未同步的状态信息,更新其状态和对应的同步号。
所述的步骤C还包括:
从节点每隔一定的时间,重发最近一次上报的消息。
由上述本发明提供的技术方案可以看出,本发明在一定程度上解决了现有技术所存在的问题,具有以下优点:本发明所述方法中从节点无需缓存中间状态,因此有效地克服了现有技术中等待式应答方法需要较大的缓存、通信效率低的缺点;本发明也克服了现有技术中查询方法的不区分对应状态是否已经同步而统统上报所带来的不良影响,大大减少了主从节点之间不必要的信息交互。本发明适用于所有的基于状态类通信场合,不但可以实现主从节点之间的状态同步,而且可以大大提高系统性能,同时本发明所述方法在实现上又比较简单。
附图说明
图1为现有技术中等待式应答方法的流程图;
图2为本发明所述的基于应答标记的实施方案的原理简图;
图3为本发明所述的基于同步号的实施方案的原理简图;
图4为本发明所述的基于应答标记的实施方案的流程图;
图5为本发明所述的基于同步号的实施方案的流程图。
具体实施方式
本发明的主要内容是提供一种主从节点之间状态同步的方法,从而实现主从节点之间的状态同步。
本发明所述方法的核心为:
1:在从节点中,确定其与主节点间未同步的状态信息。
从节点每发生一次状态变更,上报状态变更消息给主节点,然后根据主节点返回的状态变更消息的响应消息确定其与主节点间未同步的状态信息。
2:主节点获取从节点中所述的未同步的状态信息,并根据所述的状态信息更新主节点的状态信息。
从节点将确定的其与主节点间未同步的状态信息组成消息上报给主节点,主节点根据收到的消息进行状态更新,使主从节点状态保持一致。
本发明所述方法包括两个实施方案:基于应答标记的实施方案和基于同步号的实施方案。
本发明所述的基于应答标记的实施方案的原理简图如图2所示,其具体处理流程如图4所示,该方案需要从节点在每一个状态信息项上增加一个标志:是否收到主节点的应答标志RespFlg,其具体处理流程包括如下步骤:
步骤41:从节点初始化其所有属性的状态表项,将所有表项的RespFlg标记置为“收到应答”,代表从节点目前状态表项中所有状态与主节点同步;
步骤42:从节点收到状态变更消息Rept_n或者检测到状态需要发生变化时,从节点更新状态表对应项的状态,然后将该状态项对应的RespFlg标记置为“未应答”,代表该状态项目前尚未确认与主节点中对应状态项同步,即主从节点在该状态项上不同步;
步骤43:从节点上报包含状态变更情况的消息Report_n给主节点;
步骤44:主节点收到从节点上报的消息Report_n后,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对应的状态,即达到主从节点实际的同步。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (11)
1、一种主从节点之间状态同步的方法,其特征在于,包括:
A、当从节点状态发生变化时,通过从节点与主节点之间的信息交互,确定从节点中与主节点间未同步的状态信息;
B、从节点将确定的其与主节点间未同步的状态信息组成消息上报给主节点;
C、主节点获取从节点上报的所述未同步的状态信息,并根据所述未同步的状态信息更新主节点的状态信息。
2、根据权利要求1所述的主从节点之间状态同步的方法,其特征在于,所述的步骤A包括:
A1、当从节点发生状态变更,则向主节点上报状态变更消息;
A2、根据主节点返回的所述状态变更消息的响应消息的内容获知从节点中与主节点相应状态项的同步状态,并进一步确定从节点中与主节点间未同步的状态信息。
3、根据权利要求2所述的主从节点之间状态同步的方法,其特征在于,所述的步骤A1包括:
A11、从节点在每一个状态信息项中增加一个应答标志,并将所有表项的应答标记设置为有效;
A12、从节点发生状态变更,变更后的状态信息项中的应答标记置为无效;
A13、从节点上报包含状态变更情况的消息给主节点。
4、根据权利要求2所述的主从节点之间状态同步的方法,其特征在于,所述的步骤A2包括:
A21、主节点回填所有相应的状态参数组成应答消息,并发送给从节点;
A22、从节点根据主节点应答消息中的状态参数信息,更新主从节点间状态同步的状态信息项中的应答标记为有效;
A23、从节点检查状态表中所有表项,将应答标记为无效的状态项确定为其与主节点间未同步的状态信息。
5、根据权利要求1、2、3或4所述的主从节点之间状态同步的方法,其特征在于,所述的步骤C包括:
主节点根据收到的所述未同步的状态信息,更新主从节点间状态不同步的状态项,使主从节点状态保持一致。
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所述的主从节点之间状态同步的方法,其特征在于,所述的步骤C包括:
主节点根据收到的所述未同步的状态信息,更新其状态和对应的同步号。
11、根据权利要求1或6所述的主从节点之间状态同步的方法,其特征在于,所述的步骤C还包括:
从节点每隔一定的时间,重发最近一次上报的消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100049150A CN100525203C (zh) | 2005-01-28 | 2005-01-28 | 主从节点之间状态同步的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100049150A CN100525203C (zh) | 2005-01-28 | 2005-01-28 | 主从节点之间状态同步的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1812338A CN1812338A (zh) | 2006-08-02 |
CN100525203C true CN100525203C (zh) | 2009-08-05 |
Family
ID=36845044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100049150A Active CN100525203C (zh) | 2005-01-28 | 2005-01-28 | 主从节点之间状态同步的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100525203C (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104077181B (zh) * | 2014-06-26 | 2017-08-29 | 国电南瑞科技股份有限公司 | 一种适用于分布式任务管理系统的状态一致性维护方法 |
CN106357771B (zh) * | 2016-09-20 | 2020-03-17 | 天脉聚源(北京)科技有限公司 | 一种状态同步方法及装置 |
CN106453633A (zh) * | 2016-11-10 | 2017-02-22 | 郑州云海信息技术有限公司 | 一种非稳定通信链路中多节点通信方法 |
CN108932183B (zh) * | 2017-05-24 | 2021-06-04 | 华为技术有限公司 | 处理告警的方法和装置 |
CN109640033B (zh) * | 2018-11-05 | 2021-03-23 | 视联动力信息技术股份有限公司 | 信息同步方法和装置 |
CN111082863B (zh) * | 2019-12-24 | 2022-12-27 | 西安工程大学 | 紫外光移动自组网双边节点定位方法 |
CN113242169B (zh) * | 2021-05-10 | 2023-05-30 | 广东拓斯达科技股份有限公司 | 多从机数据更新方法、系统、设备和存储介质 |
-
2005
- 2005-01-28 CN CNB2005100049150A patent/CN100525203C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN1812338A (zh) | 2006-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100525203C (zh) | 主从节点之间状态同步的方法 | |
US9229890B2 (en) | Method and a system for integrating data from a source to a destination | |
CN101102577B (zh) | 无线通信基站系统前后台数据库表数据增量同步方法 | |
US7836015B1 (en) | Fast synchronization of computer databases using coverage status | |
CN101188566B (zh) | 一种集群环境下数据缓存同步的方法及系统 | |
US20050071358A1 (en) | System and method for synchronizing data records between multiple databases | |
CN101902473B (zh) | 基于网格gis的数据同步更新实现方法 | |
CN109542865A (zh) | 分布式集群系统配置文件同步方法、装置、系统及介质 | |
US20090293069A1 (en) | Method and apparatus for synchronizing data between terminals | |
JP2009516273A (ja) | データの同期処理方法、クライアント、サーバ、及びクライアントとサーバとのデータ同期システム | |
EP3675398A1 (en) | Check code processing method, electronic device, and storage medium | |
CN111277483B (zh) | 一种多端消息的同步方法、服务器及可存储介质 | |
EP1704672A1 (en) | Automatic update system and method for using a meta mib | |
JP4918862B2 (ja) | リンクトレースフレーム転送プログラム、リンクトレースフレーム転送装置、リンクトレースフレーム転送方法 | |
KR20090052368A (ko) | 무선 통신 시스템에서의 데이터베이스 관리 | |
CN107888434B (zh) | 网络设备配置同步方法和装置 | |
CN102014012A (zh) | 一种告警同步的方法及装置 | |
US8244670B2 (en) | System and method for reliable symmetric data synchronization | |
CN104301990A (zh) | 一种数据同步的方法及装置 | |
CN102231699B (zh) | 分布式系统中路由处理方法和分布式系统 | |
CN100499637C (zh) | 一种通讯系统中获取信息的方法 | |
CN110071778B (zh) | 一种对时方法、装置、设备及介质 | |
CN101335610B (zh) | 一种高端以太网交换机中的arp同步方法 | |
CN101534480B (zh) | 基于移动软件代理的跨网络文件同步方法 | |
CN113949658A (zh) | 表项处理方法、系统、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |