一种双机热备份方法及系统的制作方法

文档序号:7898630阅读:575来源:国知局
专利名称:一种双机热备份方法及系统的制作方法
技术领域
本发明涉及网络应用技术领域,特别是涉及一种基于时效输出缓存的双机热备份 方法和系统。
背景技术
随着整个社会的信息化程度不断提高,社会生活逐渐与计算机系统密不可分。人 们越来越关心计算机系统以及相关应用的可用性。所谓可用性,一般定义为计算机系统正 常工作时间与计算机系统总运行时间之比。对于某些执行关键使命的计算机系统,要求系 统能够长时间稳定运行,即具备365 X M不停顿运行的能力。对于这类系统,暂时的停机都 会导致数据的丢失和灾难性的后果。因此采用主备用系统通过冗余的部件和专门的软件, 能够在单一系统出现单点故障时降级运行,大大提高了系统的可用性。目前组建主备用系统有多种技术方案。从备份的规模来讲有单机备份、双机备份 和异地双机备份。从后备系统的准备程度来讲,有冷备份、温备份和热备份。从系统的工作 方式来讲,主要有主从方式以及双机双工方式。其中,目前应用最广的是双机热备份系统。双机热备份技术,概括地说,就是在系统运行过程中使用两台服务器,装载完全相 同的系统和数据,通过即时备份数据的方式,实现系统的高可用性。其基本原理是这两台服 务器,一台处于active状态,称为主用机,一台处于standby状态,称为备用机。在正常情 况下,由处于active状态的主用机提供服务。备用机不断检测主用机状态,备用机检测到 主用机出现物理异常或接收到主用机的切换命令时,进行主备切换。而整个过程无需人工 干预,在短时间内自动完成服务接管。对于双机热备份技术而言,保证运行时数据的同步是 至关重要的。目前,双机数据同步的主要解决方案包括以下几种基于共享磁盘或磁盘阵列的 数据同步;基于第三方备份软件的数据同步;基于网络通信的数据同步。采用基于共享磁盘或磁盘阵列的数据同步方案的双机热备份技术中,主用机和备 用机使用同一个存储设备存储数据。这个共享存储设备可以是RAID (磁盘阵列),也可以是 NAS (网络附属存储器)。在正常情况下主用机将数据库放到共享存储器上,当主服务发生 故障时,备用机访问同样的设备,读写相同的数据。这种方式不存在数据滞后的问题,适合 数据量大的场合,且通常会在共享存储器上利用数据压缩卡来节省存储空间。但是,其存在 以下缺陷,第一,工作存储器方案配置复杂,需要外部存储器的支持;第二,共享存储器方案 存在单点故障问题,即一旦存储器出现故障,系统将无法继续提供服务。采用基于第三方备份软件的数据同步方案的双机热备份技术中,主用机和备用机 的数据都放入第三方备份软件中进行保存,使用备份软件自身提供的备份功能,可以保证 主备系统中的数据一致性。其优点是处理逻辑简单。但是,存在以下缺点,第一,使用第三 方备份软件,成本高昂,而且操作系统兼容性差;第二,处理效率低,应用复杂。采用基于网络通信的数据同步方案的热备份技术中,正常情况下,主用机对外提 供服务,备用机上的服务进程没有启动,不对外提供服务。两台机器中间有一条单独的网络电缆,主用机上的数据同步软件不时将主用机的配置数据通过该网络电缆发送给备用机, 使得两者的配置达到一致。一旦主用机发生故障,它将放弃其网络地址,而备用机会启用网 口,启动服务进程,利用相同的配置继续向外提供服务。这种方案的缺点是带来大量无用的 传输,不仅会加重CPU和网络的负荷,而且长时间不断地读写数据,会缩短硬盘的寿命;另 外,单纯依赖软件实现的数据同步处理能力不高。

发明内容
本发明的目的在于提供一种双机热备份方法和系统。其针对现有双机热备份技术 的不足,提出一种基于时效输出缓存的双机热备份技术,具备网络适应性和扩展性,在保证 网络应用高处理效率和零丢包率的同时,避免了现有技术方案带来的缺陷和不足。为实现本发明的目的而提供的一种双机热备份方法,采用时效输出缓存与集线器 配合,在正常情况下,主用机接收集线器发送的数据包、并进行处理以及回注过程;备用机 处于standby状态,缓存集线器首次广播的数据包;同时当收到主用机回注的数据包时,缓 存命中成功,缓存删除;在主用机工作正常但数据包回注异常情况下,主用机流量回注失败,备用机的缓 存仅仅缓存了集线器首次广播的数据包,时效输出缓存通过线程轮询的策略回注此数据 包,保证网络应用处理丢包率为零;在主用机工作异常情况下,备用机实时检测到主用机失败,备用机完成切换过程, 备用机接替主用机继续工作。所述方法,包括下列步骤步骤100.所述集线器从数据源接收一个网络数据包,将此时的数据包的状态标 记为 PKT_0RIGIN ;步骤200,集线器判断所述数据包是否是以太网类型,若是,则广播所述数据包; 否则,丢弃所述数据包;步骤300.主用机和备用机的管理调度模块分别接收所述数据包,并将所述数据 包的状态标记为H(T_BCAST_F ;所述主用机执行步骤400,所述备用机执行步骤600 ;步骤400.所述主用机的管理调度模块对所述数据包进行数据包状态判别,若所 述数据包的状态为H(T_BCAST_F,则执行步骤500 ;否则,丢弃所述数据包;步骤500.用户程序执行相关业务的处理,所述管理调度模块判断是否回注所述 数据包,若是,所述数据包被回注到集线器,集线器进行第二次数据包广播,将数据包状态 被标记为H(T_BCAST_S,返回步骤300 ;否则,结束备份;步骤600.所述备用机的管理调度模块对所述数据包进行数据包状态判别,若所 述数据包的状态为H(T_BCAST_F或H(T_BCAST_S,则执行步骤700 ;否则,丢弃所述数据包;步骤700.所述备用机的时效输出缓存模块提取所述数据包的信息,判断所述数 据包是否命中缓存,若是,则删除缓存数据包;否则,在缓存中添加所述数据包,执行步骤 800 ;步骤800.所述备用机进行缓存时效性的验证;判断是否回注所述数据包,若是, 则所述数据包被回注到集线器,返回步骤300 ;否则,继续进行所述备用机进行缓存时效性 的验证。
所述时效输出缓存模块的数据结构采用哈希表结合双向时间链表的方式实现,当 采用固定内存管理策略时,将所述哈希表中的哈希结点以及双向时间链表结点放置在固定 内存管理的LRU双向链表中。当采用可扩展内容管理策略时,时效缓存模块实时统计已分配缓存的利用率,当 缓存利用率超过65 %时,再次分配缓存。所述哈希表的关键码采用了以下七元组的形式,{源IP地址;目的IP地址;源端 口 ;目的端口 ;协议;IPID ;IP分片位移},其中,IPID字段为IP数据报文的唯一标志;IP分 片位移字段,用于当数据包是IP分片数据包时,区分某个特定的数据包在分片序列中的位置。所述步骤700,包括下列步骤步骤710.所述时效输出缓存模块提取所述数据包的七元组信息{源IP地址;目 的IP地址;源端口 ;目的端口 ;协议;IPID;IP分片位移};步骤720.根据所述七元组信息查找所述时效输出缓存模块中的哈希表,判断所 述数据包是否命中,若是,则执行步骤730 ;否则,执行步骤740 ;步骤730.删除所述哈希表的相应表项;步骤740.在所述哈希表中添加所述数据包的表项。步骤800中,所述缓存时效性验证,是采用线程定期轮询的方式进行,预定义缓存 失效时间T,假设数据包初次缓存添加时间为Tl,线程轮询到此数据包的时间点为T2。如 果T2-T1 > T,则认定缓存时效性匹配失败,应该回注此数据包;否则认定数据包在缓存中 仍然有效,不进行回注。所述时效输出缓存模块的数据结构,采用可扩展大小的缓存,时效缓存模块实时 统计已分配缓存的利用率,当缓存利用率超过65%时,再次分配缓存。所述双机热备份方法中,还采用了心跳机制来进行主用机的存活性验证,主用机 上的心跳程序周期性地发送状态消息,以表示本机的当前状态;备用机上的心跳程序会实 时地监听主用机发送的状态消息;当主用机出现故障时,备用机在设定的时间间隔内没有 收到主用机的状态消息,就认为主用机已经失效。所述心跳程序实现的是接收者发起的方式,并且通过在计时器时间内限制接收者 请求重传消息包的次数,来限制网络通信流量。所述心跳程序采用应急呼唤信号验证的方式,当第一次超时没有收到心跳信号 时,即向主用机发出一个紧急的呼唤信息,主用机应该优先响应此信息回送一个心跳,如果 主用机第二个时间间隔内还没有收到心跳,才进行服务和数据接管。为实现本发明的目的,还提供一种双机热备份系统,包括主用机、备用机、集线 器,其中所述集线器从数据源接收一个网络数据包,将此时的数据包的状态标记为H(T_ ORIGIN;判断所述数据包是否是以太网类型,若是,则广播所述数据包;否则,丢弃所述数 据包;在正常情况下,主用机接收集线器发送的数据包、并进行处理以及回注过程;备用 机处于standby状态,缓存集线器首次广播的数据包;同时当收到主用机回注的数据包时, 缓存命中成功,缓存删除;
在主用机工作正常但数据包回注异常情况下,主用机流量回注失败,备用机的缓 存仅仅缓存了集线器首次广播的数据包,时效输出缓存通过线程轮询的策略回注此数据 包,保证网络应用处理丢包率为零;在主用机工作异常情况下,备用机实时检测到主用机失败,备用机完成切换过程, 备用机接替主用机继续工作。所述主用机和备用机,都包括用户程序模块、管理调度模块、时效输出缓存模块, 其中所述用户程序模块,用于从所述集线器接收网络数据包,执行相关业务的处理;所述管理调度模块,用于接收所述数据包,完成用户程序接入并进行参数管理以 及相关策略性调度;主用机的所述管理调度模块,对所述数据包进行数据包状态判别,若所述数据包 的状态为H(T_BCAST_F,则所述管理调度模块判断是否回注所述数据包,若是,所述数据包 被回注到集线器,集线器进行第二次数据包广播,将数据包状态被标记为H(T_BCAST_S ;否 则,结束备份;若所述数据包的状态不是KT_BCAST_F,则丢弃所述数据包;备用机的所述管理调度模块对所述数据包进行数据包状态判别,若所述数据包的 状态为H(T_BCAST_F或H(T_BCAST_S,则所述备用机的时效输出缓存模块提取所述数据包 的信息,判断所述数据包是否命中缓存,若是,则删除缓存数据包;否则,在缓存中添加所述 数据包,进行缓存时效性的验证;判断是否回注所述数据包,若是,则所述数据包被回注到 集线器;否则,继续进行缓存时效性的验证;若所述数据包的状态不是130_80431^7或冊乙 BCAST_S,则丢弃所述数据包。所述时效输出缓存模块的数据结构采用哈希表结合双向时间链表的方式实现,当 采用固定内存管理策略时,将所述哈希表中的哈希结点以及双向时间链表结点放置在固定 内存管理的LRU双向链表中。所述哈希表的关键码采用了以下七元组的形式,{源IP地址;目的IP地址;源端 口 ;目的端口 ;协议;IPID ;IP分片位移},其中,IPID字段为IP数据报文的唯一标志;IP分 片位移字段,用于当数据包是IP分片数据包时,区分某个特定的数据包在分片序列中的位置。所述备用机的时效输出缓存模块提取所述数据包的七元组信息{源IP地址;目 的IP地址;源端口 ;目的端口 ;协议;IPID;IP分片位移};根据所述七元组信息查找所述 时效输出缓存模块中的哈希表,判断所述数据包是否命中,若是,则删除所述哈希表的相应 表项;否则,在所述哈希表中添加所述数据包的表项。所述缓存时效性验证,是采用线程定期轮询的方式进行,预定义缓存失效时间T, 假设数据包初次缓存添加时间为Tl,线程轮询到此数据包的时间点为T2。如果T2-T1 > T, 则认定缓存时效性匹配失败,应该回注此数据包;否则认定数据包在缓存中仍然有效,不进 行回注。所述时效输出缓存模块的数据结构,采用可扩展大小的缓存,时效缓存模块实时 统计已分配缓存的利用率,当缓存利用率超过65%时,再次分配缓存。双机热备份系统中,所述主用机和备用机,还分别包括主用机的心跳模块,用来进行主用机的存活性验证,主用机上的心跳程序周期性地发送状态消息,以表示本机的当前状态;备用机的心跳模块,用于实时地监听主用机发送的状态消息;当主用机出现故障 时,备用机在设定的时间间隔内没有收到主用机的状态消息,就认为主用机已经失效。所述心跳模块实现的是接收者发起的方式,并且通过在计时器时间内限制接收者 请求重传消息包的次数,来限制网络通信流量。所述心跳模块采用应急呼唤信号验证的方式,当第一次超时没有收到心跳信号 时,即向主用机发出一个紧急的呼唤信息,主用机应该优先响应此信息回送一个心跳,如果 主用机第二个时间间隔内还没有收到心跳,才进行服务和数据接管。本发明的有益效果在于本发明的双机热备份方法和系统,充分考虑了网络应用数据包级别备份的需求, 而且能够根据实际网络部署环境进行策略调整,具有良好的灵活性和扩展性。其主要包括 时效输出缓存模块、双机心跳模块以及管理调度模块,根据以上模块的应用,实现了在兼容 流量回注功能的同时,保证双机工作模式切换时网络应用丢包率为零。可适用于对高可用 性要求比较高的网络应用,如QOS保障系统,入侵检测系统等。


图1是本发明的一种双机热备份方法的步骤流程图;图2是本发明中主用机的时效输出缓存模块判断数据包是否命中缓存的步骤流 程图;图3是本发明的一种双机热备份系统的结构示意图;图4是本发明的一种双机热备份系统的一实施例的示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明的一种双机热备份方法和系统进行进一步详细说明。应当理解,此处所描述的具体 实施例仅仅用以解释本发明,并不用于限定本发明。本发明的一种双机热备份方法和系统。采用了软硬件结合的方式,在软件方面,采 用时效输出缓存提供数据包缓存功能,并通过线程轮询的方式定期回注缓存匹配失败的数 据包,通过时效输出缓存提供了数据包级别的网络应用备份。在硬件方面,引入了 OSI第一 层交换设备集线器,集线器属于纯硬件网络底层设备,它发送数据时都是没有针对性的,而 是采用广播方式发送。集线器的应用避免了单纯依赖软件进行数据同步的缺点,其数据传 输效率相对较高,可靠性强。下面结合上述目标详细说明本发明的双机热备份方法,其中时效缓存模块与集 线器配合,在正常情况下,主用机接收集线器发送的数据包、并进行处理以及回注过程;备 用机处于standby状态,缓存集线器首次广播的数据包;同时当收到主用机回注的数据包 时,缓存命中成功,缓存删除。在主用机工作正常但数据包回注异常情况下,主用机流量回 注失败,备用机的缓存仅仅缓存了集线器首次广播的数据包,时效缓存模块通过线程轮询 的策略回注此数据包,保证网络应用处理丢包率为零。在主用机工作异常情况下,备用机实 时检测到主用机失败,备用机完成切换过程,接替主用机继续工作。
10步骤流程图,如图1所示,所述方法,包括 下列步骤步骤100.从数据源接收一个网络数据包,此时的数据包的状态被看做为H(T_ ORIGIN ;步骤200,集线器判断所述数据包是否是以太网类型,若是,则广播所述数据包; 否则,丢弃所述数据包;较佳地,本发明引入了 OSI第一层交换设备集线器,集线器属于纯硬件网络底层 设备,基本上不具有类似于交换机的“智能记忆”能力和“学习“能力。它也不具备交换机 所具有的MAC地址表,所以它发送数据时都是没有针对性的,而是采用广播方式发送。也就 是说当它要向某节点发送数据时,不是直接把数据发送到目的节点,而是把数据包发送到 与集线器相连的所有节点。集线器的应用避免了单纯依赖软件进行数据同步的缺点,其数 据传输效率相对较高,可靠性强。本发明中的时效输出缓存模块以数据包为处理单元,该数据包是指网络应用对应 的外部接口数据源,其特性为以太网数据包类型。步骤300.主用机和备用机的管理调度模块分别接收所述数据包,并将所述数据 包的状态标记为H(T_BCAST_F ;所述主用机执行步骤400,所述备用机执行步骤600 ;步骤400.所述主用机的管理调度模块对所述数据包进行数据包状态判别,若所 述数据包的状态为H(T_BCAST_F,则执行步骤500 ;否则,丢弃所述数据包;较佳地,为了在内部处理中对数据包的状态进行明确,时效输出缓存模块将数据 包划分为以下状态,分别为原始数据报文,集线器首次广播报文,集线器第二次广播报文以 及其他状态报文。分别采用 PKT_0RIGIN,PKT_BCAST_F, PKT_BCAST_S,PKT_0THERS 来对以上 状态进行标识。原始数据报文H(TJ)RIGIN指数据源接入的报文;由于集线器的广播功能, 集线器会对原始数据报文进行广播,首次广播后的报文即集线器首次广播报文H(T_BCAST_ F;主用机上的管理调度模块对集线器首次广播报文进行处理,会将需要回注的数据报文重 新返回给集线器,集线器会再次广播该报文,即集线器第二次广播报文H(T_BCAST_S,PKT_ OTHERS标识除此状态之外的报文类型。步骤500.用户程序执行相关业务的处理,管理调度模块判断是否回注所述数据 包,若是,所述数据包被回注到集线器,集线器进行第二次数据包广播,此时的数据包状态 被标记为H(T_BCAST_S,返回步骤300 ;否则,结束备份;步骤600.所述备用机的管理调度模块对所述数据包进行数据包状态判别,若所 述数据包的状态为H(T_BCAST_F或H(T_BCAST_S,则执行步骤700 ;否则,丢弃所述数据包;所述时效输出缓存模块是本发明的核心,在正常情况下,主用机的时效输出缓存 模块处于非使能状态,备用机的时效输出缓存模块处于使能状态,同时接收并缓存主用机 传送过来的数据包。步骤700.所述主用机的时效输出缓存模块提取所述数据包的信息,判断所述数 据包是否命中缓存,若是,则删除缓存数据包;否则,在缓存中添加所述数据包,执行步骤 800 ;较佳地,所述时效输出缓存模块的数据结构采用哈希表结合双向时间链表的方式 实现。双向时间链表是时效输出缓存模块的核心组成部分,用来进行时效性验证;对于时效输出缓存,有两种内存管理方式,即固定内存管理及可扩展内存管理,当采用固定内存管理 策略时,其将哈希表中的哈希结点以及双向时间链表结点放置在固定内存管理的LRU双向 链表中。在哈希表中,采用桶内链表的方法解决冲突。哈希表,是根据关键码值(Keyvalue) 而直接进行访问的数据结构。它通过把关键码值映射到表中一个位置来访问记录,以加快 查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做哈希表。采用哈希表结构 使数据包查找的时间复杂度为常数。同时,在TCP/IP协议栈中,如果数据包过大,网络层会 对数据包进行分片处理,为了使本发明可以兼容对IP分片数据包的处理,哈希表的关键码 采用了以下七元组的形式,即{源IP地址;目的IP地址;源端口 ;目的端口 ;协议;IPID;IP 分片位移}。其中,IPID字段为IP数据报文的唯一标志;当数据包是IP分片数据包时,为 了区分某个特定的数据包在分片序列中的位置,本发明引入了 IP分片位移字段。所述时效输出缓存模块对于数据包的处理策略分为缓存添加以及缓存删除两种。 对于外部数据源引入的数据包,备用机都采取缓存添加策略,将数据源发送的数据包进行 缓存;对于集线器将主用机回流的数据包进行广播,所有备用机会收到主用机回流的数据 包,备用机采用缓存删除策略,缓存删除策略的执行依据是根据{源IP地址;目的IP地址; 源端口 ;目的端口 ;协议;IPID;IP分片位移}七元组的命中成功来确定。图2是本发明中主用机的时效输出缓存模块判断数据包是否命中缓存的步骤流 程图,如图2所示,所述步骤700,包括下列步骤步骤710.所述时效输出缓存模块提取所述数据包的七元组信息{源IP地址;目 的IP地址;源端口 ;目的端口 ;协议;IPID;IP分片位移};步骤720.根据所述七元组信息查找所述时效输出缓存模块中的哈希表,判断所 述数据包是否命中,若是,则执行步骤730 ;否则,执行步骤740 ;步骤730.删除所述哈希表的相应表项;步骤740.在所述哈希表中添加所述数据包的表项。步骤800.所述备用机进行缓存时效性的验证;判断是否回注所述数据包,若是, 则所述数据包被回注到集线器,返回步骤300 ;否则,继续进行所述备用机进行缓存时效性 的验证。所述缓存时效性验证,是采用线程定期轮询的方式进行,具体实施方式
为预定义 缓存失效时间T,假设数据包初次缓存添加时间为Tl,线程轮询到此数据包的时间点为T2。 如果T2-T1 > T,则认定缓存时效性匹配失败,应该回注此数据包;否则认定数据包在缓存 中仍然有效,不进行回注。所述时效输出缓存模块通过以上数据结构、缓存策略以及发送策略的设计,可以 实现数据包级别的应用备份。在本发明的双机热备份方法中,采用管理调度模块负责对用户程序接入进行制 定,运行参数管理以及策略性调度。所述用户程序接入的制定是指在管理调度模块中指定用户程序接入模块为用户 程序接入提供标准化流程及配置。所述用户程序接入模块具体包括缓存处理接口、主用机 存活性验证接口和工作模式切换接口等。各个接口分别提供“注册初始化”和“注销”接口 供应用来调用。
所述运行参数管理是指在本发明中,各个模块相关的运行情况可以进行参数化, 通过在不同的应用场景配置不同的运行参数,可以提供相关软件模块的适应性和可扩展 性。详细的运行参数指标包括缓存预分配大小,缓存遍历间隔,心跳间隔等。本发明中,所述时效缓存模块为了满足不同的应用场景,分别提出了基于固定缓 存的LRU机制以及基于可扩展内存的机制。相关策略的采用由管理调度模块来统一支配。所述策略性调度根据时效输出缓存模块的机制,包括二种规则(1)基于固定缓存LRU机制的缓存调度策略(2)基于可扩展内存的缓存调度策略所述基于固定缓存LRU机制的缓存调度策略,其特点为使用LRU机制淘汰最近最 少使用的散列节点,避免了过多的缓存占用,避免了使用定时器进行超时检测所付出的代 价。散列节点和LRU链表节点存在一一对应关系。散列节点根据在LRU双向链表中所处位置的不同,分为以下四种状态,空闲状 态(STATE_IDLE)节点未被使用,位于内存池,初始化时总数为Μ。LRU双向链表头状态 (STATE_HEAD)最近被引用的那个节点,数目为1个。LRU双向链表尾状态(STATE_TAIL) 很久没有被引用的节点,占链表总数X%。LRU双向链表中状态(STATE_MIDDLE):介于最 近被引用的那个节点和很久没被引用节点之间的链表节点,当内存池中的节点全部被分配 时,链表中节点数目为Μ* (1-X/100)-1个。初始化时所有节点均位于内存池中,处于空闲状态;当新接收一个数据包时,系统 从内存池申请一个空闲节点,处理好映射关系后插入到缓存哈希表,同时插入到LRU双向 链头部,节点从空闲状态转换成链表头状态;在缓存哈希表中的节点,一旦长时间未被引 用,将会随着新节点不断插入LRU双向链表头,从链表头状态转换为链表中状态,进一步还 将转换为链表尾状态;同样的,一旦缓存哈希表表中的节点被引用到,该映射节点将立即插 入到LRU双向链表头部,不管其本来的状态是在链表中还是链表尾;当内存池没有空闲节 点时,接入点将把尾部节点(即占链表总数的节点)从缓存哈希表和LRU双向链表删 除,归入到内存池,节点重新变为空闲状态。例如在内存中申请10个固定节点的内存区域,初始化时10个节点都处于空闲状 态,当节点1被引用时,节点1被插入到链表头,进入链表头状态;当节点2被引用时,节点2 被插入到链表头,进入链表头状态,节点1进入链表中状态;依次类推,当节点3被引用时, 节点3被插入到链表头,进入链表头状态,链表状态为3- > 2- > 1 ;依次类推,引用10个 节点时,链表状态为10- > 9- > 8- > 7- > 6- > 5- > 4- > 3- > 2- > 1 ;此时,如果节 点4被引用,则链表状态转换为4- > 10- > 9- > 8- > 7- > 6- > 5- > 3- > 2- > 1 ;当 仍然需要引用内存节点时,由于节点已经都被使用,所以需要进行LRU淘汰,淘汰的原则是 尾部淘汰(例如20% ),链表状态为4- > 10- > 9- > 8- > 7- > 6- > 5- > 3,此时被淘 汰的1和2进入空闲状态,可供下次引用使用。所述基于可扩展内存的缓存调度策略,其特点在于所述时效输出缓存模块使用可 扩展大小的缓存。时效缓存模块实时统计已分配缓存的利用率,当缓存利用率超过65%时, 再次分配缓存。该策略适合于网络数据包分布较广,网络流速较高的应用场景中。较佳地,在本发明的双机热备份方法中,还采用了心跳机制来进行主用机的存活 性验证,心跳机制设计的目地是保证主用机和备用机之间灵敏的存活性感知。主用机上的心跳程序周期性地发送状态消息,以表示本机的当前状态。备用机上的心跳程序会实时地 监听主用机发送的状态消息。当主用机出现故障时,备用机在设定的时间间隔内没有收到 主用机的状态消息,就认为主用机已经失效。较佳地,由于主备用机之间可能会出现颠簸现象,主用机有可能会因忙碌等原因, 出现“假死”现象,即长时间不发出心跳信号。如果备用机一旦听不到主用机的心跳信号, 就马上接管主用机的工作,则可能导致“颠簸”现象,则主用机和备用机频繁出现交接,造成 服务中断。因此,本发明采用接收者发起的方式来保证可靠消息传输,备用机设有一个缓冲 窗口,当第一次超时没有收到心跳信号时,即向主用机发出一个紧急的呼唤信息,主用机应 该优先响应此信息回送一个心跳。如果备用机第二个时间间隔内还没有收到心跳,才进行 服务接管。另外,为了尽可能不激活备用机,主用机在发现某些服务不正常时应尝试自己恢 复这些服务,只有当恢复无效时才停止发送心跳来激活备用机。另外,心跳模块还通过在计时器时间内限制接收者请求重传消息包的次数,来限 制网络通信流量。作为一种可实施方式,采用心跳机制的心跳模块包含多个进程,分别为主状态进 程、FIFO进程、心跳介质读进程、心跳介质写进程。其中主状态进程是核心进程,同时是其 他三个进程的父进程,其功能主要是定期发送心跳信号;读取心跳信号并进行处理;处理 各个管道的输入。FIFO进程是主状态进程的子进程,其功能主要是读取用户程序输 入,并发送到FIFO管道上。心跳介质写进程是主状态进程的R)rk子进程,其功能主要是 读取通讯管道上的输入;通过心跳链路plug in模块进行节点间通信。心跳介质读进程是 主状态进程的i^ork子进程,其功能主要是读取心跳介质上的消息,将消息放置在通讯管 道上。较佳地,由于网络负载不均以及UDP心跳协议的不可靠性,主备用机可能在响应 较高网络负载时过于“忙碌”,暂时无法处理心跳信号,此时极有可能出现主备用机之间的 丢包或颠簸现象。为了实现消息包可靠传输,心跳程序实现的是接收者发起的方式,并且通 过在计时器时间内限制接收者请求重传消息包的次数,来限制网络通信流量。为了防止颠 簸现象,本发明采用应急呼唤信号验证的方式来解决此问题,当第一次超时没有收到心跳 信号时,即向主用机发出一个紧急的呼唤信息,主用机应该优先响应此信息回送一个心跳。 如果主用机第二个时间间隔内还没有收到心跳,才进行服务和数据接管。所述心跳模块将节点的状态划分为以下几种,当心跳系统启动时,节点处于INIT 状态,主状态进程启动后,节点进入UP状态。节点接收到两个节点的状态信息后,进入 ACTIVE状态。如果节点在deadtime时间间隔内,没有接收到对方节点的状态信息,则认为 对方节点死亡,进入DEAD状态。所述心跳模块的节点死亡判断规则如下主状态进程使用本地时间记录获得节点 状态信息的时间。每当主状态进程获得节点状态信息,主状态进程使用当前时间更新相应 节点的时间记录TL。主状态进程利用时间记录判定节点是否失效。使用公式T = TC-TD计 算出可以判定节点死亡的时间值T,其中TC表示当前时间,TD表示可以认定节点死亡的时 间间隔。如果TL不小于T,认为节点正常,否则认定节点已经死亡。也就是说,如果节点在 deadtime内没有接收到另一个节点发送来的状态信息,节点判定另一个节点失效。相应于本发明的一种双机热备份方法,还提供一种双机热备份系统,图3是本发明的一种双机热备份系统的结构示意图,图4是本发明的一种双机热备份系统的一实施例 的示意图,如图3和图4所示,所述系统,包括主用机1、备用机2、集线器3,其中所述集线器从数据源接收一个网络数据包,将此时的数据包的状态标记为H(T_ ORIGIN;判断所述数据包是否是以太网类型,若是,则广播所述数据包;否则,丢弃所述数 据包;在正常情况下,主用机接收集线器发送的数据包、并进行处理以及回注过程;备用 机处于standby状态,缓存集线器首次广播的数据包;同时当收到主用机回注的数据包时, 缓存命中成功,缓存删除;在主用机工作正常但数据包回注异常情况下,主用机流量回注失败,备用机的缓 存仅仅缓存了集线器首次广播的数据包,时效输出缓存通过线程轮询的策略回注此数据 包,保证网络应用处理丢包率为零;在主用机工作异常情况下,备用机实时检测到主用机失败,备用机完成切换过程, 备用机接替主用机继续工作。所述主用机1包括用户程序模块11、管理调度模块12、时效输出缓存模块13和 心跳模块14,其中所述用户程序模块11,用于从所述集线器接收网络数据包,执行相关业务的处 理;所述管理调度模块12,用于接收所述数据包,并将所述数据包的状态标记为H(T_ BCAST_F ;所述管理调度模块12,对所述数据包进行数据包状态判别,若所述数据包的状态 为H(T_BCAST_F,则所述管理调度模块12判断是否回注所述数据包,若是,所述数据包被回 注到集线器,集线器进行第二次数据包广播,将数据包状态被标记为H(T_BCAST_S ;否则, 结束备份;若所述数据包的状态不是KT_BCAST_F,则丢弃所述数据包;所述心跳模块14,用来进行主用机的存活性验证,主用机上的心跳程序周期性地 发送状态消息,以表示本机的当前状态。所述备用机2包括用户程序模块21、管理调度模块22、时效输出缓存模块23和 心跳模块对,其中所述管理调度模块22,对所述数据包进行数据包状态判别,若所述数据包的状态 为H(T_BCAST_F或H(T_BCAST_S,则所述时效输出缓存模块23提取所述数据包的信息,判 断所述数据包是否命中缓存,若是,则删除缓存数据包;否则,在缓存中添加所述数据包,进 行缓存时效性的验证;判断是否回注所述数据包,若是,则所述数据包被回注到集线器;否 则,继续进行缓存时效性的验证;若所述数据包的状态不是H(T_BCAST_F或H(T_BCAST_S, 则丢弃所述数据包。所述时效输出缓存模块23提取所述数据包的七元组信息{源IP地址;目的IP地 址;源端口 ;目的端口 ;协议;IPID ; IP分片位移};根据所述七元组信息查找所述时效输出 缓存模块中的哈希表,判断所述数据包是否命中,若是,则删除所述哈希表的相应表项;否 则,在所述哈希表中添加所述数据包的表项。所述心跳模块M,用于实时地监听主用机发送的状态消息;当主用机出现故障 时,备用机在设定的时间间隔内没有收到主用机的状态消息,就认为主用机已经失效。
较佳地,所述用户程序模块通过所述管理调度模块中指定用户程序接入模块5为 用户程序接入提供标准化流程及配置。所述用户程序接入模块5具体包括缓存处理接口 51、主用机存活性验证接口 52和工作模式切换接口 53等。本发明的有益效果在于1)数据包级别的双机热备份。本发明通过时效缓存技术的应用,实现了数据包级 别的网络应用热备份,备份粒度细,故障空间小。2)网络适应性和扩展性强。本发明将各个模块工作流程独立执行并进行参数化, 可根据目标应用场景的不同进行相关策略的选择,适应不同网络应用的高可用性需求。3)实现了在兼容流量回注功能的同时,保证双机工作模式切换时网络应用丢包率为零。4)部署成本低,应用简单。本发明将双机热备份的相关功能都内置到应用中,不依 赖于第三方的备份软件或系统的支撑,对外部环境没有任何额外要求,策略配置简单。可用 性强。可适用于对高可用性要求比较高的网络应用,如QOS保障系统,入侵检测系统等。通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的 技术人员而言是显而易见的。以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例 性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。
权利要求
1.一种双机热备份方法,其特征在于,采用时效输出缓存与集线器配合,在正常情况 下,主用机接收集线器发送的数据包、并进行处理以及回注过程;备用机处于standby状 态,缓存集线器首次广播的数据包;同时当收到主用机回注的数据包时,缓存命中成功,缓 存删除;在主用机工作正常但数据包回注异常情况下,主用机流量回注失败,备用机的缓存仅 仅缓存了集线器首次广播的数据包,时效输出缓存通过线程轮询的策略回注此数据包,保 证网络应用处理丢包率为零;在主用机工作异常情况下,备用机实时检测到主用机失败,备用机完成切换过程,备用 机接替主用机继续工作。
2.根据权利要求1所述的双机热备份方法,其特征在于,所述方法,包括下列步骤 步骤100.所述集线器从数据源接收一个网络数据包,将此时的数据包的状态标记为PKT_0RIGIN ;步骤200,集线器判断所述数据包是否是以太网类型,若是,则广播所述数据包;否则, 丢弃所述数据包;步骤300.主用机和备用机的管理调度模块分别接收所述数据包,并将所述数据包的 状态标记为H(T_BCAST_F ;所述主用机执行步骤400,所述备用机执行步骤600 ;步骤400.所述主用机的管理调度模块对所述数据包进行数据包状态判别,若所述数 据包的状态为H(T_BCAST_F,则执行步骤500 ;否则,丢弃所述数据包;步骤500.用户程序执行相关业务的处理,所述管理调度模块判断是否回注所述数据 包,若是,所述数据包被回注到集线器,集线器进行第二次数据包广播,将数据包状态被标 记为H(T_BCAST_S,返回步骤300 ;否则,结束备份;步骤600.所述备用机的管理调度模块对所述数据包进行数据包状态判别,若所述数 据包的状态为H(T_BCAST_F或H(T_BCAST_S,则执行步骤700 ;否则,丢弃所述数据包;步骤700.所述备用机的时效输出缓存模块提取所述数据包的信息,判断所述数据包 是否命中缓存,若是,则删除缓存数据包;否则,在缓存中添加所述数据包,执行步骤800 ;步骤800.所述备用机进行缓存时效性的验证;判断是否回注所述数据包,若是,则所 述数据包被回注到集线器,返回步骤300 ;否则,继续进行所述备用机进行缓存时效性的验 证。
3.根据权利要求1所述的双机热备份方法,其特征在于,所述时效输出缓存模块的数 据结构采用哈希表结合双向时间链表的方式实现,当采用固定内存管理策略时,将所述哈 希表中的哈希结点以及双向时间链表结点放置在固定内存管理的LRU双向链表中。
4.根据权利要求3所述的双机热备份方法,其特征在于,所述哈希表的关键码采用了 以下七元组的形式,{源IP地址;目的IP地址;源端口 ;目的端口 ;协议;IPID ;IP分片位 移},其中,IPID字段为IP数据报文的唯一标志;IP分片位移字段,用于当数据包是IP分 片数据包时,区分某个特定的数据包在分片序列中的位置。
5.根据权利要求1所述的双机热备份方法,其特征在于,所述步骤700,包括下列步骤步骤710.所述时效输出缓存模块提取所述数据包的七元组信息{源IP地址;目的IP 地址;源端口 ;目的端口 ;协议;IPID;IP分片位移};步骤720.根据所述七元组信息查找所述时效输出缓存模块中的哈希表,判断所述数 据包是否命中,若是,则执行步骤730 ;否则,执行步骤740 ;步骤730.删除所述哈希表的相应表项;步骤740.在所述哈希表中添加所述数据包的表项。
6.根据权利要求1所述的双机热备份方法,其特征在于,步骤800中,所述缓存时效性 验证,是采用线程定期轮询的方式进行,预定义缓存失效时间T,假设数据包初次缓存添加 时间为Tl,线程轮询到此数据包的时间点为T2。如果T2-T1 > T,则认定缓存时效性匹配失 败,应该回注此数据包;否则认定数据包在缓存中仍然有效,不进行回注。
7.根据权利要求1所述的双机热备份方法,其特征在于,所述时效输出缓存模块的数 据结构,采用可扩展大小的缓存,时效缓存模块实时统计已分配缓存的利用率,当缓存利用 率超过65 %时,再次分配缓存。
8.根据权利要求1所述的双机热备份方法,其特征在于,所述双机热备份方法中,还采 用了心跳机制来进行主用机的存活性验证,主用机上的心跳程序周期性地发送状态消息, 以表示本机的当前状态;备用机上的心跳程序会实时地监听主用机发送的状态消息;当主 用机出现故障时,备用机在设定的时间间隔内没有收到主用机的状态消息,就认为主用机 已经失效。
9.根据权利要求8所述的双机热备份方法,其特征在于,所述心跳程序实现的是接收 者发起的方式,并且通过在计时器时间内限制接收者请求重传消息包的次数,来限制网络通信流量。
10.根据权利要求8所述的双机热备份方法,其特征在于,所述心跳程序采用应急呼唤 信号验证的方式,当第一次超时没有收到心跳信号时,即向主用机发出一个紧急的呼唤信 息,主用机应该优先响应此信息回送一个心跳,如果主用机第二个时间间隔内还没有收到 心跳,才进行服务和数据接管。
11.一种双机热备份系统,其特征在于,所述系统,包括主用机、备用机、集线器,其中所述集线器从数据源接收一个网络数据包,将此时的数据包的状态标记为 ORIGIN ;判断所述数据包是否是以太网类型,若是,则广播所述数据包;否则,丢弃所述数 据包;在正常情况下,主用机接收集线器发送的数据包、并进行处理以及回注过程;备用机处 于standby状态,缓存集线器首次广播的数据包;同时当收到主用机回注的数据包时,缓存 命中成功,缓存删除;在主用机工作正常但数据包回注异常情况下,主用机流量回注失败,备用机的缓存仅 仅缓存了集线器首次广播的数据包,时效输出缓存通过线程轮询的策略回注此数据包,保 证网络应用处理丢包率为零;在主用机工作异常情况下,备用机实时检测到主用机失败,备用机完成切换过程,备用 机接替主用机继续工作。
12.根据权利要求11所述的双机热备份系统,其特征在于,所述主用机和备用机,都包 括用户程序模块、管理调度模块、时效输出缓存模块,其中所述用户程序模块,用于从所述集线器接收网络数据包,执行相关业务的处理;所述管理调度模块,用于接收所述数据包,完成用户程序接入并进行参数管理以及相 关策略性调度;主用机的所述管理调度模块,对所述数据包进行数据包状态判别,若所述数 据包的状态为H(T_BCAST_F,则所述管理调度模块判断是否回注所述数据包,若是,所述数 据包被回注到集线器,集线器进行第二次数据包广播,将数据包状态被标记为H(T_BCAST_ S ;否则,结束备份;若所述数据包的状态不是KT_BCAST_F,则丢弃所述数据包;备用机的所述管理调度模块对所述数据包进行数据包状态判别,若所述数据包的状态 为H(T_BCAST_F或H(T_BCAST_S,则所述备用机的时效输出缓存模块提取所述数据包的信 息,判断所述数据包是否命中缓存,若是,则删除缓存数据包;否则,在缓存中添加所述数 据包,进行缓存时效性的验证;判断是否回注所述数据包,若是,则所述数据包被回注到集 线器;否则,继续进行缓存时效性的验证;若所述数据包的状态不是H(T_BCAST_F或H(T_ BCAST_S,则丢弃所述数据包。
13.根据权利要求12所述的双机热备份系统,其特征在于,所述时效输出缓存模块的 数据结构采用哈希表结合双向时间链表的方式实现,当采用固定内存管理策略时,将所述 哈希表中的哈希结点以及双向时间链表结点放置在固定内存管理的LRU双向链表中。
14.根据权利要求13所述的双机热备份系统,其特征在于,所述哈希表的关键码采用 了以下七元组的形式,{源IP地址;目的IP地址;源端口 ;目的端口 ;协议;IPID ; IP分片位 移},其中,IPID字段为IP数据报文的唯一标志;IP分片位移字段,用于当数据包是IP分 片数据包时,区分某个特定的数据包在分片序列中的位置。
15.根据权利要求12所述的双机热备份系统,其特征在于,所述备用机的时效输出缓 存模块提取所述数据包的七元组信息{源IP地址;目的IP地址;源端口 ;目的端口 ;协议; IPID ;IP分片位移};根据所述七元组信息查找所述时效输出缓存模块中的哈希表,判断所 述数据包是否命中,若是,则删除所述哈希表的相应表项;否则,在所述哈希表中添加所述 数据包的表项。
16.根据权利要求12所述的双机热备份系统,其特征在于,所述缓存时效性验证,是采 用线程定期轮询的方式进行,预定义缓存失效时间T,假设数据包初次缓存添加时间为Tl, 线程轮询到此数据包的时间点为T2。如果T2-T1 >T,则认定缓存时效性匹配失败,应该回 注此数据包;否则认定数据包在缓存中仍然有效,不进行回注。
17.根据权利要求12所述的双机热备份系统,其特征在于,所述时效输出缓存模块的 数据结构,采用可扩展大小的缓存,时效缓存模块实时统计已分配缓存的利用率,当缓存利 用率超过65 %时,再次分配缓存。
18.根据权利要求11所述的双机热备份系统,其特征在于,双机热备份系统中,所述主 用机和备用机,还分别包括主用机的心跳模块,用来进行主用机的存活性验证,主用机上的心跳程序周期性地发 送状态消息,以表示本机的当前状态;备用机的心跳模块,用于实时地监听主用机发送的状态消息;当主用机出现故障时,备 用机在设定的时间间隔内没有收到主用机的状态消息,就认为主用机已经失效。
19.根据权利要求18所述的双机热备份系统,其特征在于,所述心跳模块实现的是接 收者发起的方式,并且通过在计时器时间内限制接收者请求重传消息包的次数,来限制网 络通信流量。
20.根据权利要求18所述的双机热备份系统,其特征在于,所述心跳模块采用应急呼 唤信号验证的方式,当第一次超时没有收到心跳信号时,即向主用机发出一个紧急的呼唤 信息,主用机应该优先响应此信息回送一个心跳,如果主用机第二个时间间隔内还没有收 到心跳,才进行服务和数据接管。
全文摘要
本发明公开了一种双机热备份方法和系统。所述方法,采用时效输出缓存与集线器配合,在正常情况下,主用机接收集线器发送的数据包、并进行处理以及回注过程;备用机处于standby状态,缓存集线器首次广播的数据包;同时当收到主用机回注的数据包时,缓存命中成功,缓存删除;在主用机工作正常但数据包回注异常情况下,主用机流量回注失败,备用机的缓存仅仅缓存了集线器首次广播的数据包,时效输出缓存通过线程轮询的策略回注此数据包,保证网络应用处理丢包率为零;在主用机工作异常情况下,备用机实时检测到主用机失败,备用机完成切换过程,备用机接替主用机继续工作。
文档编号H04L1/22GK102118309SQ20101062008
公开日2011年7月6日 申请日期2010年12月31日 优先权日2010年12月31日
发明者吴志刚, 周渊, 王勇, 王曦, 罗浩, 贺龙涛, 郝志宇 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1