G06F9/46
1.一种不同设备间的数据队列的同步方法,其特征在于,包括如下步骤:
(a)将第一设备中的所有同类资源标记成单向队列,队列中的每个队列元素代表一个资源;
(b)将第二设备中的所有同类资源亦标记成单向队列,并在第二设备中将队列内所有队列元素的状态设置为空闲;
(c)当用户向第一设备申请或释放队列元素时,若申请队列元素,则执行步骤(d1)~(d3),若释放队列元素,则执行步骤(e1)~(e3);
(d1)第一设备从队列头分配队列元素给用户;
(d2)第一设备将此队列元素被分配的信息传输到第二设备;
(d3)第二设备将被分配的队列元素的状态设置为占用;
(e1)第一设备将释放的队列元素排入队列尾部;
(e2)第一设备将此队列元素被释放的信息传输到第二设备;
(e3)第二设备将被释放的队列元素的状态设置为占用;
(f)当第二设备替代第一设备工作时,将所有的状态设置为空闲的队列元素重新标记成一单向队列。
2.根据权利要求1所述的方法,其特征在于,所述第一设备为主用设备,第二设备为备用设备,在主用设备启动工作时,执行步骤(a)和(b);当主用设备在工作过程中,只要遇到有队列元素申请或者释放操作,即执行步骤(c),并继续选择实行步骤(d1)~(d3)或者(e1)~(e3);当主用设备发生故障而启动备用设备时,执行步骤(f)。
3.根据权利要求1所述的方法,其特征在于,所述第一设备为备用设备,第二设备为主用设备,当主用设备被修复而回复工作时,执行步骤(f)。
4.一种使不同设备间的数据队列的同步装置,其特征在于,包括如下单元:
第一队列形成单元,用于将第一设备中的所有同类资源标记成单向队列;
第二队列形成单元,用于将第二设备中的所有同类资源亦标记成单向队列,并在第二设备中将队列内所有队列元素的状态设置为空闲;
队列元素调配单元,用于当用户向第一设备申请或释放队列元素时,调用后续单元,若用户申请队列元素,则调用队列元素申请执行单元,若用户释放队列元素,则调用队列元素申请释放单元;
队列元素申请执行单元,用于使第一设备从队列头分配队列元素给用户,再使第一设备将此队列元素被分配的信息传输到第二设备,然后使第二设备将被分配的队列元素的状态设置为占用;
队列元素释放执行单元,用于使第一设备将释放的队列元素排入队列尾部,再使第一设备将此队列元素被释放的信息传输到第二设备,然后使第二设备将被释放的队列元素的状态设置为占用;
队列重排单元,用于当第二设备替代第一设备工作时,将所有的状态设置为空闲的队列元素重新标记成一单向队列。
技术领域
本发明涉及通讯与计算机技术领域,尤其涉及一种不同设备间的数据队列的同步方法及装置。
背景技术
通信领域对于稳定性的要求非常苛刻。很多设备都需要同时设置一台备份机,当主用设备发生故障时,立刻启动备用设备代替工作,做到无缝切换,使用户感觉不到设备故障带来的影响。这样的设置就要求主用设备和备用设备之间的数据必须严格同步,否则很容易带来整个通讯网络的混乱,给用户的通讯业务造成影响。
当主用设备故障时,备用设备必须实时接管原设备所有功能。因此主用设备在正常使用过程中,主用设备上的业务数据的变化需要实时同步到备用设备,这些业务数据包含各种数据结构。
当设备主备倒换时,备用设备能够根据同步到备用设备的数据快速的接管业务,用户无法感知设备端的变化,在线业务不中断。
通常在主备设备之间做实时备份时,主用设备的一个操作复制到备份设备上做同样的操作。对于单向队列的同步,主用设备上对队列元素进行获取或释放操作,该操作复制到备用设备时,备用设备对同一队列元素进行获取或释放操作,保持主备设备之间的队列状态完全一致。
这种做法的优点是主备倒换时,备用设备队列和主用完全一致,不需要任何额外的操作。缺点是,这种实时的操作的复制有很严格的消息时序要求,才能保证主备设备之间的队列完全一致。
在多用户场合下,现有技术的缺陷随之显现出来。在多用户同时对队列元素进行申请和释放操作时,同步到备用设备的消息就很难严格保证顺序,除非在主用设备上进行排序,但这又会影响处理的效率。如果后申请的队列元素先到达备份设备,此时,该队列元素不在单向队列的队列头,需要遍历该队列才能到,而且由于单向队列只有next指针,如果从中间删除元素,必然导致队列断裂,无法衔接。反之释放队列元素时乱序也会导致队列无法恢复。
发明内容
本发明所要解决的技术问题是,提供一种不同设备间的数据队列的同步方法及装置,能够消除了主用与备用设备之间单向队列的数据同步操作对时序的要求,并且不会为设备带来大量额外的运算负担,基本不影响设备正常的数据处理。
为了解决上述问题,本发明提供了一种不同设备间的数据队列的同步方法,包括如下步骤:(a)将第一设备中的所有同类资源标记成单向队列;(b)将第二设备中的所有同类资源亦标记成单向队列,并在第二设备中将队列内所有队列元素的状态设置为空闲;(c)当用户向第一设备申请或释放队列元素时,若申请队列元素,则执行步骤(d1)~(d3), 若释放队列元素,则执行步骤(e1)~(e3);(d1)第一设备从队列头分配队列元素给用户;(d2)第一设备将此队列元素被分配的信息传输到第二设备;(d3)第二设备将被分配的队列元素的状态设置为占用;(e1)第一设备将释放的队列元素排入队列尾部;(e2)第一设备将此队列元素被释放的信息传输到第二设备;(e3)第二设备将被释放的队列元素的状态设置为占用;(f)当第二设备替代第一设备工作时,将所有的状态设置为空闲的队列元素重新标记成一单向队列。
作为可选的技术方案,所述第一设备为主用设备,第二设备为备用设备,在主用设备启动工作时,执行步骤(a)和(b);当主用设备在工作过程中,只要遇到有队列元素申请或者释放操作,即执行步骤(c),并继续选择实行步骤(d1)~(d3)或者(e1)~(e3);当主用设备发生故障而启动备用设备时,执行步骤(f)。。
作为可选的技术方案,所述第一设备为备用设备,第二设备为主用设备,当主用设备被修复而回复工作时,执行步骤(f)。
一种使不同设备间的数据队列的同步装置,包括如下单元:第一队列形成单元,用于将第一设备中的所有同类资源标记成单向队列;第二队列形成单元,用于将第二设备中的所有同类资源亦标记成单向队列,并在第二设备中将队列内所有队列元素的状态设置为空闲;队列元素调配单元,用于当用户向第一设备申请或释放队列元素时,调用后续单元,若用户申请队列元素,则调用队列元素申请执行单元,若用户释放队列元素,则调用队列元素申请释放单元;队列元素申请执行单元,用于使第一设备从队列头分配队列元素给用户,再使第一设备将此队列元素被分配的信息传输到第二设备,然后使第二设备将被分配的队列元素的状态设置为占用;队列元素释放执行单元,用于使第一设备将释放的队列元素排入队列尾部,再使第一设备将此队列元素被释放的信息传输到第二设备,然后使第二设备将被释放的队列元素的状态设置为占用;队列重排单元,用于当第二设备替代第一设备工作时,将所有的状态设置为空闲的队列元素重新标记成一单向队列。
本发明的优点在于,为每个队列元素添加状态标签以在后续备份过程中避免了在备份设备中发生时序混乱,即使第二设备所接收到的“队列元素被申请”这一消息的时序与第一设备实际发生的时序并不一致,也不会影响到对队列元素状态标签的更改,即不会因为两个设备时序的不同步而引起混乱,因此尤其适用于多用户环境。
附图说明
附图1是本发明具体实施方式所述方法的步骤流程图。
附图2是本发明具体实施方式所述装置的结构示意图。
具体实施方式
接下来结合附图对本发明所述的一种不同设备间的数据队列的同步方法及装置的具体实施方式做出详细说明。
附图1所示本发明具体实施方式中所述方法的步骤流程图,包括如下步骤:步骤a,将第一设备中的所有同类资源标记成单向队列;步骤b,将第二设备中的所有同类资源亦标记成单向队列,并在第二设备中将队列内所有队列元素的状态设置为空闲;步骤c,当用户向第一设备申请或释放队列元素时,若申请队列元素,则执行步骤d1~d3,若释放队 列元素,则执行步骤e1~e3;步骤d1,第一设备从队列头分配队列元素给用户;步骤d2,第一设备将此队列元素被分配的信息传输到第二设备;步骤d3,第二设备将被分配的队列元素的状态设置为占用;步骤e1,第一设备将释放的队列元素排入队列尾部;步骤e2,第一设备将此队列元素被释放的信息传输到第二设备;步骤e3,第二设备将被释放的队列元素的状态设置为占用;步骤f,当第二设备替代第一设备工作时,将所有的状态设置为空闲的队列元素重新标记成一单向队列。
本实施方式中,第一设备为主用设备,第二设备为备用设备。在主用设备启动工作时,执行步骤a和b;当主用设备在工作过程中,只要遇到有队列元素申请或者释放操作,即执行步骤c,并继续选择实行步骤d1~d3或者e1~e3;当主用设备发生故障而启动备用设备时,执行步骤f。
对于第一设备为备用设备,第二设备为主用设备的情况下,执行的操作与上述情况类似,此处不再重复叙述。
这里所述的资源可以是设备的内存、通信的信道以及时隙等在信号处理中各种可分配的软件和硬件要素。
步骤a与现有技术的队列形成方法基本相同。
步骤b可以通过两种方式实现,一种是把步骤a中形成的队列复制到第二设备中,还有一种是第二设备独立地建立一个队列,该队列可能并不与步骤a在第一设备中建立的队列完全相同,但这并不影响下面步骤的实施。并且,步骤b除了将队列备份到第二设备中或在第二设备中独立构建建立队列之外,还进一步执行了对队列元素的状态设置的步骤。现有技术中的队列元素是没有被标记状态的,本实施方式对每一个队列元素都添加了一个标记状态的标签(例如可以是一位的二进制码),当队列元素没有被申请使用时,这个标签的标记值为空闲(例如可以对应为二进制的0)。而在后面的步骤中,如果该队列元素被占用了,则这个标签会被标记为占用(例如可以对应为二进制的1)。
当步骤a与步骤b执行完毕后,主用设备和备用设备实质上进入了待机的状态,随时可以进行队列元素分配以及备份工作。步骤c的执行是在当主用设备在工作过程中,遇到有队列元素申请或者释放操作时才发生的。步骤c中所述的用户可以每次都是同一个用户,也可以是多个用户依次申请。本实施方式尤其适用于多用户环境,原因在于多用户在申请和释放队列元素时是不可能完全按照时序进行的,这样为每个队列元素添加状态标签就能够在后续备份过程中避免了在备份设备中发生混乱。
若步骤c中的用户是执行的申请队列元素的步骤,则执行步骤d1~d3。可以看出,第二设备仅仅是对被申请使用队列元素的标签作出调整,由“空闲”改变为“占用”,并未涉及到重排队列等复杂的操作。此种操作的优点还在于,即使第二设备所接收到的“队列元素被申请”这一消息的时序与第一设备实际发生的时序并不一致,也不会影响到步骤d3的执行,即不会因为两个设备时序的不同步而引起混乱。
若步骤c中的用户是执行的释放队列元素的步骤,则执行步骤e1~e3。与上面的解释类似,释放队列元素的操作同样不会由于时序不同而引起混乱。
步骤f的执行是在主用设备发生故障而启动备用设备时。由于之前的步骤中已经在第二设备上标定了每个队列元素“空闲”或者“占用”状态,因此只需要将所有的状态设置为空闲的队列元素重新标记成一单向队列即可继续工作,完全可以确保该单行队列中的 所有队列元素都是为被申请的。显然,由于此步骤中的第二设备对队列元素进行了重排,因此步骤b中所建立的队列即使和步骤a不完全相同,也不影响此步骤f的实施。
如果用户特别地希望备用设备和主用设备之间的数据要随时严格同步,也可以在步骤d3或者e3实施完毕之后,不等待主用设备和备用设备的切换动作而主动地重构队列。
当从备用设备切换回主用设备时,实质上只需要执行上述的步骤a、b和f,即可顺利返回主用设备继续工作,如果在切换的过程中同时有队列元素的申请和释放,也可以实施其余的步骤。总之无论是从主用切换到备用,还是从备用切换会主用,上述方法都是有效的。
以上对于队列元素设置标记状态的标签的方法实质上是可以应用在其他的任意可以区分队列元素是否被使用的状态信息上的。
附图2所示是本发明具体实施方式所述装置的结构示意图,包括:第一队列形成单元21,用于将第一设备中的所有同类资源标记成单向队列;第二队列形成单元22,用于将第二设备中的所有同类资源亦标记成单向队列,并在第二设备中将队列内所有队列元素的状态设置为空闲;队列元素调配单元23,用于当用户向第一设备申请或释放队列元素时,调用后续单元,若用户申请队列元素,则调用队列元素申请执行单元24,若用户释放队列元素,则调用队列元素申请释放单元25;队列元素申请执行单元24,用于使第一设备从队列头分配队列元素给用户,再使第一设备将此队列元素被分配的信息传输到第二设备,然后使第二设备将被分配的队列元素的状态设置为占用;队列元素释放执行单元25,用于使第一设备将释放的队列元素排入队列尾部,再使第一设备将此队列元素被释放的信息传输到第二设备,然后使第二设备将被释放的队列元素的状态设置为占用;队列重排单元26,用于当第二设备替代第一设备工作时,将所有的状态设置为空闲的队列元素重新标记成一单向队列。
以上各个设备彼此之间的关系以及工作原理请参见对方法的具体实施方式的说明,此处从略。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
本文发布于:2023-04-14 23:02:26,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/1/87450.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |