掌桥专利:专业的专利平台
掌桥专利
首页

一种可靠数据分发异常处理方法及系统

文献发布时间:2024-04-18 19:57:50


一种可靠数据分发异常处理方法及系统

技术领域

本发明涉及数据分发技术领域,具体是一种可靠数据分发异常处理方法及系统。

背景技术

在嵌入式分布式设备中,内部数据的可靠分发一般采用RPC或HA的相关接口来实现,会将数据可靠分发到所有目的部件上,应用模块只需调用发送接口,即可达到数据分发的目的。这些接口相对比较简单,操作比较灵活,可以很方便的实现源分布式部件向所有目的分布式部件分发数据的需求。但在实际使用过程中,由于硬件线路、硬件资源、软件错误等原因,会导致数据发送、接收出现异常,一般这种异常常用的手段是重试或者关闭通信通道,虽然这种处理方式可以解决通信异常,但也会因为这样的异常处理占用正常发送的资源,如其中一条通道异常后,会立即对次通道进行数据的重试,必然会占用正常通信的资源(如cpu资源、宽带资源、内存资源等),对正常通信造成影响;又如其中一条通道异常后,直接关闭通道,或许这次的异常只是暂时的、可恢复的,这样的处理就会极大的浪费资源。一般这种异常处理是发送模块内自己运行的,没有考虑应用模块是否需要或选择的余地,导致应用模块的效率受损。所以,如何在不影响正常数据通信的情况下、合理地对异常现象进行处理的问题出现在我们面前。

发明内容

为克服现有技术的不足,本发明提供了一种可靠数据分发异常处理方法及系统,解决现有技术存在的难以实现在不影响正常数据通信的情况下、合理地对异常现象进行处理等问题。

本发明解决上述问题所采用的技术方案是:

一种可靠数据分发异常处理方法,在分布式设备数据分发出现异常时,应用模块选择使用以下异常处理操作的一种或多种:分为隔离、解隔离、重启、关闭。

作为一种优选的技术方案,包括以下步骤:

S1,数据分发:为每一个应用模块分配一套资源,每个应用模块互不干扰进行数据分发;

S2,异常判断:判断是否出现数据分发异常;若是,则进入步骤S3;若否,则正常实时分发数据;

S3,通知:向应用模块通知异常目的部件的ID;

S4,隔离/关闭:将异常目的部件隔离,或,关闭异常目的部件。

作为一种优选的技术方案,将异常目的部件隔离包括以下步骤:

S4A1,将异常目的部件从发送位图上清除;

S4A2,通知已经往异常目的部件上发送就绪的数据暂停发送该异常目的部件数据;

S4A3,将该异常目的部件在隔离位图上置位。

作为一种优选的技术方案,关闭异常目的部件包括以下步骤:

S4B1,将该异常目的部件从发送位图上清除;

S4B2,将该异常目的部件从注册部件位图上清除;

S4B3,本地卸载该异常目的部件注册数据;

S4B4,通知所有往该异常目的部件上发送就绪的数据停止发送该异常目的部件数据;

S4B5,关闭该异常目的部件接口。

作为一种优选的技术方案,还包括以下步骤:

S5,解隔离:若步骤S4中采用将异常目的部件隔离,则应用模块解隔离。

作为一种优选的技术方案,步骤S5包括以下步骤:

S51,向隔离部件发送注册信息,注册完毕后在注册位图上置位,并批量向隔离部件发送源部件上所有数据;

S52,在隔离部件上对批量下发的数据进行平滑,使平滑后的数据与当前源部件上的数据保持同步;

S53,将该异常目的部件在隔离位图上清除;

S54,将该异常目的部件在发送位图上置位。

作为一种优选的技术方案,还包括以下步骤:

S6,解隔离成功判断:判断解隔离是否成功;若是,则正常实时分发数据;若否,则返回步骤S2,其中,若N次解隔离未成功,则进入步骤S7,N为提前设定的值;

S7,重启:重启异常目的部件。

作为一种优选的技术方案,步骤S7包括:

S71,将该异常目的部件从发送位图上清除;

S72,将该异常目的部件从注册部件位图上清除;

S73,本地卸载该异常目的部件注册数据;

S74,通知所有往该异常目的部件上发送就绪的数据停止发送该异常目的部件数据;

S75,重启该异常目的部件接口。

一种可靠数据分发异常处理系统,用于实现所述的一种可靠数据分发异常处理方法,包括依次连接的以下模块:

数据分发模块:用以,为每一个应用模块分配一套资源,每个应用模块互不干扰进行数据分发;

异常判断模块:用以,判断是否出现数据分发异常;若是,则进入步骤S3;若否,则正常实时分发数据;

通知模块:用以,向应用模块通知异常目的部件的ID;

隔离/关闭模块:用以,将异常目的部件隔离,或,关闭异常目的部件。

作为一种优选的技术方案,还包括以下模块:

解隔离模块:用以,若步骤S4中采用将异常目的部件隔离,则应用模块解隔离;

解隔离成功判断模块:用以,判断解隔离是否成功;若是,则正常实时分发数据;若否,则返回步骤S2,其中,若N次解隔离未成功,则进入步骤S7,N为提前设定的值;

重启模块:用以,重启异常目的部件。

本发明相比于现有技术,具有以下有益效果:

(1)本发明能够及时有效的解决数据可靠分发过程中所出现异常现象;

(2)本发明在不影响应用模块完成数据分发的情况下,也能处理分发出现的异常;

(3)本发明能够保证在异常处理完毕后,目的部件上的数据能够和源部件实现完全同步;

(4)本发明当目的部件完全不能修复时,也不会耗费过多的资源对其进行重试,而是直接关闭该目的部件;

(5)本发明对于异常部件的恢复措施,都是针对单个应用模块的,不会对其他应用模块造成影响,除非是分发机制的公有异常,这样每个应用模块都会进行异常处理;

(6)本发明能够继续扩展更多的异常处理方法。

附图说明

图1为本发明所述的一种可靠数据分发异常处理方法的工作流程示意图;

图2为隔离流程图;

图3为解隔离流程图;

图4为重启异常部件流程图;

图5为关闭异常部件流程图;

图6为异常处理的示意图。

具体实施方式

下面结合实施例及附图,对本发明作进一步的详细说明,但本发明的实施方式不限于此。

实施例1

如图1至图6所示,本发明通过提供一套可靠数据分发异常处理的方法,在分布式设备数据分发出现异常时,供外部应用模块选择使用。该异常处理分为隔离、解隔离、重启目的部件、关闭目的部件这些操作,该方法具有如下特点:

1、模块化:不再是传统的由数据分发模块统一进行异常处理,这样做的坏处在于忽略了应用模块的效率需求,即占用资源处理异常,而影响其他正常目的部件的数据传输。这套可靠数据分发异常处理模块可以提供给应用模块依照自己的需求来使用,更好的帮助应用模块完成自己的功能。

2、高效率:不在是传统的重试机制,而改成隔离、解隔离,该套机制可以快速隔离异常目的部件,其隔离精度是以应用模块划分的,即应用模块A隔离目的部件,但不影响应用模块B往目的部件上的数据通信行为。等到系统闲下来或应用模块处理完毕后再对目的部件进行解隔离,这样就会保证在数据通信过程中,不会因为处理异常而影响效率。

3、自我修复性:对于非硬件损伤问题,一般重启即可大概率解决,所以数据分发模块可以根据应用模块异常报告的行为,来分析是否是某目的部件的群体问题,如果是群体问题,则可以统一调用重启目的部件的异常处理方法,来试图修复异常部件;如果重启目的部件也不能解决,则可以调用关闭目的部件的方法来永久关闭异常部件,避免长时间的对其进行修复而影响整机效率。

4、可扩展性:通过事务机制,使每次的异常处理都作为一个事务来进行,这样可无限扩展除本文所列的4种异常处理方法外的其他方法。

本发明所述方法通过可靠数据分发模块的发送目的部件位图,生成一套异常目的部件位图,调用隔离、关闭时,将发送位图的异常部件置0,再将异常部件位图的异常部件置1,后续再调用数据发送接口时,由于该异常目的部件不在发送位图上,所以自然屏蔽该异常目的部件,不需要浪费资源在该部件上面,达到隔离或关闭的效果;而解隔离、启动时,会对该隔离部件进行一次数据的批量和平滑,使隔离部件的数据和源部件数据一致,然后再将异常部件位图的异常部件置0,在发送位图的该部件对应位置置1,达到恢复部件状态的效果。

工作原理如下:

本发明中,有三个位图的概念需要提前说明,如下:

1、注册位图:在数据分发模块中,为了能够使源部件知道将要把数据分发到哪些目的部件上,就需要目的部件在自己初始化完成后主动告知源部件进行注册,等注册完毕后,源部件将该目的部件在注册位图上置位。该位图的作用是在和目的部件有交互的流程上提供目的部件的ID(该交互不仅仅只限于发送数据)。

2、发送位图:告知数据分发模块要将数据分发到哪些目的部件上的位图。

3、隔离位图:告知所有和目的部件有交互的流程该部件是被隔离的。

本发明的所有动作都在源部件上,具体步骤如下:

1、为每一个应用模块分配一套资源,这里我们只关心发送任务和接收任务。这样每个应用模块就可以互不干扰的进行数据的分发,并且在异常处理时,也不会干扰其他应用模块。

2、当数据分发模块发生分发异常时,将这个异常通知给相应的应用模块,同时也要告知异常目的部件的ID,自己本身并不做任务异常处理动作。

3、应用模块收到数据分发异常后,建议立即调用隔离模块将异常的目的部件隔离。

4、隔离操作首先将数据分发的目的部件位图上的异常部件去除,使数据分发不再向该异常部件分发数据,并且在隔离部件位图上将这个异常部件置位。后续任何与目的部件有交互的行为都要比对隔离位图,使这个异常部件不参与任何交互行为。隔离操作只是简单的位图操作,主要目的是先把异常部件隔离起来,不做任何占用资源的恢复操作。

5、应用模块可以在关键行为进行完毕后,开始进行解隔离操作;也可以根据自身需求来进行解隔离操作。这样就会在数据分发异常时,应用模块可以做出对自己最有利的操作。

6、解隔离操作首先触发数据分发模块对该部件进行数据的批量和平滑,以保证和当前源部件上的数据保持同步。然后,将该异常目的部件在数据分发的目的部件位图上置位,保证后续实时数据能够既是同步,最后,再将隔离位图上的该目的部件位图去除。需要注意的是,上述步骤是和与目的部件有交互的行为互斥的,而批量分发和实时分发的规则是由数据分发模块来保证的。

7、如果解隔离失败,会通知应用模块,应用模块可以继续重复5、6步动作,如果尝次数过多,应用模块可以考虑重启目的部件。

8、重启目的部件首将该异常部件在发送位图上去除,同时也在注册位图上清除,然后再将目的部件reset(重启)。

9、如果数据分发模块通知应用模块某目的部件已经硬件损坏,则可以调用关闭目的部件的处理方法。

10、关闭部件首将该异常部件在发送位图上去除,同时也在注册位图上清除,然后再将目的部件shutdown(关闭)。

11、所有异常处理(即隔离、解隔离、重启、关闭)以报告的形式告知数据分发模块,并依次入事务队列,再由数据分发模块内部的异常处理任务依次对事务进行处理,这样做的好处是所有的异常都是事务,增加了异常处理方法的可扩展性。

本发明的积极效果是:

(1)本发明能够及时有效的解决数据可靠分发过程中所出现异常现象;

(2)本发明在不影响应用模块完成数据分发的情况下,也能处理分发出现的异常;

(3)本发明能够保证在异常处理完毕后,目的部件上的数据能够和源部件实现完全同步;

(4)本发明当目的部件完全不能修复时,也不会耗费过多的资源对其进行重试,而是直接关闭该目的部件;

(5)本发明对于异常部件的恢复措施,都是针对单个应用模块的,不会对其他应用模块造成影响,除非是分发机制的公有异常,这样每个应用模块都会进行异常处理;

(6)本发明能够继续扩展更多的异常处理方法。

如上所述,可较好地实现本发明。

本说明书中所有实施例公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合和/或扩展、替换。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,依据本发明的技术实质,在本发明的精神和原则之内,对以上实施例所作的任何简单的修改、等同替换与改进等,均仍属于本发明技术方案的保护范围之内。

相关技术
  • 一种基于概率分布的异常数据处理方法及装置
  • 一种分布式高可靠终端设备可认证基础数据的分发方法及系统
  • 一种互联网数据中心的高可靠数据处理方法及系统
技术分类

06120116467479