基于DDS技术提高分布式系统可靠性的方法与流程

文档序号:11589832阅读:791来源:国知局
基于DDS技术提高分布式系统可靠性的方法与流程

本发明涉及信息系统技术,尤其涉及一种基于dds技术提高分布式系统可靠性的方法。



背景技术:

分布式系统是一种广泛使用的信息系统,具有节点多、互连松散、软硬件分头研制等特点。分布式系统一般由部署在多个节点上的协同运行软件组成,这些软件通过互联网络交换信息,共同完成某项功能或对外提供服务。在分布式系统的运行过程中,部分节点可能会出现网络链路故障、交换机故障、节点硬件故障、节点软件故障等,这些部分节点的局部故障会导致分布式系统全局功能无法正常运行,降低了系统的可用性。

由于各种软硬件故障难以避免,在构建分布式系统时就必须设计额外的冗余部件,并按一定的机制在故障发生后对故障部件自动替换,提升系统的可靠性。实践中,一般采用如下两种方式来提高分布式系统的可靠性:

1、按照高可靠性系统的构建原则,对原分布式系统进行重新设计和编码实现。该方法有以下不足:

(1)需要对原有系统的硬件与软件进行较大改动。在原来不具备高可用性的分布式系统中加入故障冗余机制,涉及对原系统从软件架构、到设计、到实现的全方位修改,工作量大、成本高、风险高、工期长。特别当系统中各软件系统是由不同单位分头研制时,实施更加困难。

(2)软件系统复杂度提升,软件系统难以升级维护。当原分布式系统在设计中加入故障冗余机制后,软件系统的复杂度急剧提升,后其升级和维护困难。特别对于复杂度较高的、集成规模较大的分布式系统,如舰载作战系统,就更加困难。

2、借助虚拟化运行平台,采用虚拟机快照的方式对原分布式系统的各个节点进行备份与恢复。该方法有以下不足:

(1)仅能提供秒级冗余切换能力。采用虚拟机快照的方式来实现对分布式系统中关键部件的在线备份与恢复具有较大的网络开销,使其提供冗余热备的切换时间仅能在秒级,无法支撑实时类应用。

(2)无法应对软件本身的故障。采用虚拟机快照的方式时,虚拟化管理软件仅可以感知和处理硬件级或虚拟机级的故障,但对于应用软件本身的故障就无能为力。特别当一个软件运行进入异常状态后,虚拟化管理软件仍然将其当成正常运行的软件进行备份,无法对其进行冗余切换和故障恢复。



技术实现要素:

本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种基于dds技术提高分布式系统可靠性的方法。

本发明解决其技术问题所采用的技术方案是:一种基于dds技术提高分布式系统可靠性的方法,包括以下步骤:

1)确定分布式系统需要冗余的目标应用,采用发布订阅机制实现目标应用与原来的信息传输关系解耦合;

具体如下:

通过dds技术提供的发布订阅机制将软件应用之间的通信关系由原来的点对点直接通信,转换以主题为媒介的发布订阅关系;信息的发送方只需将信息发布到主题,而无需知道接收方;同理,信息的接收方只需从主题订阅消息,而无需知道发送方是谁;采用发布订阅机制,使得目标应用的多个冗余组件以主题形式动态加入或退出分布式系统;

2)采用dds技术的qos策略实现目标应用的独立运行和冗余热备切换,具体如下:

当一个目标应用的多个互为冗余的运行实例同时运行时,会同时向同一主题发布消息,为防止干扰,借助发布订阅机制的ownership和ownershipstrength策略对不同的运行实例设置不同的优先级,使得仅具有较高优先级的运行实例获得主题的所有权,即订阅者仅能收到最高优先级的运行实例发布的数据,其它较低优先级的运行实例所发布的数据会被订阅方所排斥;而当较高优先级的运行实例故障后,由次高优先级的运行实例获得主题所有权,即订阅者仅能收到其发送的数据;保证分布式系统在可靠性降级的情况下功能仍然可用;

3)当目标应用的较高优先级的运行实例从故障中恢复过来后,具有较高优先级的运行实例获得主题的所有权;此时分布式系统的可靠性恢复到正常状态。

按上述方案,步骤2)订阅者仅能收到最高优先级的运行实例发布的数据为接收存活的具有最高优先级的目标应用的运行实例发送的数据,具体如下:配置目标应用的所有互为冗余的运行实例定时发送心跳报文,目标应用所发布主题的订阅方根据接收的心跳判定目标应用的多个运行实例的存活情况,仅接收处理存活的具有最高优先级的目标应用的运行实例发送的数据。

本发明产生的有益效果是:

(1)快速轻量级的冗余热备切换。采用基于dds技术实现的高可靠分布式系统,一方面用于提供冗余热备切换功能的资源(计算、存储、网络)开销较小,对应用的正常业务几乎没有影响;另一方面其冗余热备的切换时间可以达到10毫秒级,非常适用于实时任务的分布式系统。

(2)软件升级难度小。采用基于dds技术实现的高可靠分布式系统,仅需要使用成熟商用的dds中间件对原系统的通信部分进行升级(原业务逻辑不用修改),一方面减少了软件升级的工作量、另一方面提升了软件通信模块的质量。

(3)可冗余软件故障。在基于dds技术的冗余热备切换机制下,应用软件需要定时向dds中间件通告自身的活跃性状态,而dds中间件则会依据这个状态发送心跳报文其它相关节点。当软件自身出现异常后,dds中间件就失去了发送心跳报文的机会,其它相关节点就感知到应用软件出故障,进行冗余热备组件的快速切换。

(4)可冗余硬件故障。当应用软件所运行的某节点的硬件环境出故障后,比如链路断开、计算机崩溃、系统掉电等,其它相关节点就会因未收到该节点的心跳报文而感知到应用软件故障,进行冗余热备组件的切换。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为传统分布式系统示意图;

图2为本发明的基于dds技术高可靠分布式系统示意图;

图3为本发明的基于dds技术的冗余关键件热备切换原理图;

图4为本发明的基于dds技术的高可靠分布式系统关键件(主)受损恢复示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

如图1所示,传统的分布式系统中应用a是关键件,应用a从应用s1、应用s2、……、应用sm接收消息,向应用d1、应用d2、……、应用dn发送消息。若应用a发生故障,则分布式系统的功能受损。

如图2所示,本发明针对图1中的关键件采用dds技术实现关键件的主-备双重冗余热备。具体方法如下:

针对应用a的所有datawriter的qos策略作如下配置:

(1)设定“ownership”qos策略的值为“exclusive”;

(2)设定“ownershipstrength”qos策略的值为该应用实际运行实例的优先级(同一个运行实例的所有datawriter应设置为相同的优先级),优先级是一个大于等于0的整数,值越大优先级越高;

(3)设定“liveliness”qos策略的kind值为“manual_by_participant”,并设置lease_duration的值为所需要的心跳间隔;

(4)应用a应确保每lease_duration调用一次域参与者的assert_liveliness()方法。

针对订阅了应用a所发布主题的应用的datareader的qos策略进行配置:

(1)设定“ownership”qos策略的值为“exclusive”;

(2)设定“liveliness”qos策略的kind值为“automatic”,并设置lease_duration的值为应用a的lease_duration的值的3倍。

如图3所示,本发明针对图2中的关键件的冗余热备机制说明如下:

(1)应用a的对外信息传输统一采用dds技术的发布订阅机制进行,其中发送接收的每一种消息分别对应一种主题,实现应用a与原来的信息传输关系解耦合;

dds技术提供的发布订阅机制将软件之间的通信关系由原来的点对点直接通信,转换以主题为媒介的发布订阅关系。信息的发送方只需将信息发布到主题,而无需知道接收方;同理,信息的接收方只需从主题订阅消息,而无需知道发送方是谁。采用发布订阅机制,使得多个冗余组件动态加入或退出分布式系统成为可能。

(2)同时运行两份应用a,一份设置较高的优先级,称为应用a(主),另一份设置较低的优先级,称为应用a(备)。对应用a发布的主题进行配置,允许应用a的多个实例可以同时运行,但同一时刻仅有优先级较高的运行实例获取主题所有权。

(3)配置应用程序a定时发送心跳报文,应用程序a所发布主题的订阅方根据应用a的心跳判定应用a的多个运行实例的存活情况,仅接收处理存活的具有最高优先级的应用a的运行实例发送的数据。当应用a(主)出故障失效后,所有订阅方自动接收处理应用a(备)发送的数据。

如图4所示,本发明的高可靠分布式系统方法在关键件(主)因某种故障失效后,自动切换到由关键件(备)提供应用a的服务,确保在发生故障的情况下,分布式系统在可靠性降级的情况下功能仍然可用。当采用某种方法将关键件(主)从故障中恢复过来后,分布式系统的可靠性恢复到正常状态。

本发明的高可靠分布式系统方法在关键件(备)因某种故障失效后,不会发生热备切换,确保在发生故障的情况下,分布式系统在可靠性降级的情况下功能仍然可用。当采用某种方法将关键件(备)从故障中恢复过来后,分布式系统的可靠性恢复到正常状态。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1