基于域模型的构件实时主动迁移方法

文档序号:6459909阅读:490来源:国知局
专利名称:基于域模型的构件实时主动迁移方法
技术领域
本发明涉及软件构件化技术领域,具体的说是一种基于域模型的构件 实时主动迁移方法。
技术背景构件是在软件生命周期各阶段可以被复用的软件实体,可独立配置与 部署,具有良好的封装独立性和定义清晰的接口,与运行上下文环境和其 他构件严格分离。通过构件化技术开放的软件系统不仅可以有效提高开发 者的效率,降低开发者的成本,还使得构造出的系统具有良好的可扩展性 和可维护性。目前,基于构件技术的软件开发技术已受到业界的普遍关注, 并已成为软件开发的主流方法。釆用构件化技术开发的分布式系统是由分布在网络中的多个构件组 成的,系统功能通过一系列构件间的交互协作完成。由于网络的不稳定性和脆弱性,以及软件bug的存在,系统中某个构件的失效可能导致系统功 能的部分或严重受损,特别是在对可靠性和实时性具有较高要求的系统, 可能会造成严重经济和人员损失。因此当构件失效后系统能主动实时的进 行构件迁移,恢复系统功能就显得十分重要。构件迁移的难度在于迁移过程的时效性、构件状态的一致性以及关联 构件依赖关系的调整等。当前业界存在三大成熟的通用构件化技术一 C0RBA、 C0M和EJB,其中C(H和EJB完全没有构件容错规范,只有C0RBA 提出了一个容错CORBA规范。容错CORBA体系中进行复制以实现冗余的实 体是对象, 一个对象拥有多个r印lica,它们组成对象组,作为一个整体 展示给外界,其对象引用称为IOGR(Interoperable ObjectGro叩 Reference),客户方使用IOGR向复制的对象发起请求,无需知道对象组的存在以及对象组成员的失效。该方案存在两个缺陷 一是该规范设计复 杂、难以实现,当前还缺乏相应的有效实现体;二是容错实体针对单个构 件,没有从全系统容错的角度出发,难以应用于实际系统开发。现有的其 他迁移容错方案大多都是基于集群系统的进程迁移,侧重于从处理器的角 度将进程资源进行节点间的迁移,例如基于Linux内核的集群系统 openMosix等。这些方法是基于整个进程迁移,粒度过大,无法应用于构 件化的系统。综上所述,虽然目前业界已有大量的迁移容错方案,但都是基于非构 件化系统的,还没有一种基于构件化系统的成熟迁移容错方案。 发明内容本发明的目的在于针对现有技术的不足,基于CORBAORB内核,通过 对C0RBA构件模型的扩展,提供基于域模型的构件实时主动迁移方法。本发明基于域模型的构件实时主动迁移方法,包括(l)域模型的描述、 (2)主域和备份域间的全局信息同步、(3)失效构件的主动发现、(4)构件迁移 过程、(5)关联构件间依赖关系的更新。(1) 域模型的描述将分布式应用系统网络中所有节点划分为两种 角色主域节点和备份域节点。主域节点是全域主控和仲裁节点,维护全 局信息,协调和控制迁移过程的进行。备份域节点是主域节点的信息备份, 并充当主域节点的后备节点。系统包括唯一一个主域节点和若干备份域节 点,节点的角色由选举算法决定。当系统启动时根据权重对所有节点进行 编号,编号最大者为主域节点,其他为备份域节点,当主域节点失效时, 余下编号最大的备份域节点被选举为主域节点。(2) 主域和备份域间的全局信息同步主域节点维护全局状态信息, 包括了应用系统构件组成部分,构件间的依赖关系,构件在节点的部署情 况以及当前构报本节点的构件状态信息,主域节点通过汇总各个备份域节点的上报信息 形成系统的全局状态,并向所有备份域进行下发全局状态,备份域接受全 局状态进行缓存。所有节点均以向外广播心跳报文的方式向其他节点表明 本节点的有效性。(3) 失效构件的主动发现构件装载在节点的容器进程中,容器通 过定时调用构件的Ping方法来探测构件的心跳,若在一定的周期内探测 不到构件的心跳,则认为该构件已失效,该节点服务立即向主域节点上报 本节点构件失效情况。(4) 构件迁移过程各备份域节点上的构件通过构件"潜伏"状态, 记录最近的输入信息,但是不做任何处理, 一旦主域节点出现故障,被选 中的备份域构件立即由"潜伏"状态转为"激活"状态,同时将补偿性处 理最近故障时期内主域节点错过的信息,保持不丢失任何系统信息,同时 避免信息重发,提高实时性和准确性。主域节点根据各备份域节点上报的 构件活动状态信息形成构件激活优先级队列。若主域节点通过步骤(3) 发现了失效构件,则查找该失效构件的激活构件列表,选择优先级最高的 待激活构件作为当前有效的全局激活构件,并指示该激活构件所在的备份 域节点进行该构件的全局激活。(5) 关联构件间依赖关系的更新当构件迁移完成后,主域节点根 据记录的迁移构件间的依赖关系,对被依赖构件的对象引用进行更新,主 域节点向依赖构件所在的备份域节点下达更新对象引用的命令,最终由备 份域节点完成依赖构件对象引用的更新。本发明基于域模型的构件实时主动迁移方法有如下优点 1)实时性迁移过程由主域节点统一调度,通过全局信息的精简优 化和基于优先级的构件激活队列,消除了迁移过程中构件装载和 环境绑定时间,提高了迁移过程的实时响应程度。2) 自适应/主动性构件迁移与计算、通信环境自适应,迁移过程 根据预定义的迁移策略自发进行,无需人为干预。3) 准确性通过备份域构件"潜伏"状态的功能实现,确保信息的 完整性,保证系统运行状态的正确。4) 花费小迁移方案只需要软件编程即可实现,无需额外硬件冗余。


图l域模型示意图;图2构件状态转换图;图3主域节点启动流程图;图4备份域节点启动流程图;图5主域节点和备份域节点交互图。
具体实施方式
下面结合附图,对本发明的具体实施方案做进一步的说明(1) 域模型的描述。如附图1所示,系统所有节点划分为主域节点和备份域节点,主域节点由ORB核心和域管理服务组成,备份域节点由0RB 核心、构件容器和节点管理服务组成。ORB核心实现了 C0RBA规范的ORB 交互协议,是构件方法调用通信的基本机制;构件容器建立了构件运行的 上下文环境,构件被容器装载并经ORB绑定后运行在容器的进程中,容器 控制着构件的生命周期;节点管理服务运行于备份域节点,它通过容器对 构件的生命周期进行管理,向主域上报本节点的构件运行状态,并接受和 执行来自主域节点下发构件管理和迁移指令;域管理服务运行于主域节 点,收集来自备份域上报的构件状态信息,并根据全局的状态下达各类构 件管理指令。(2) 构件状态管理。如附图2所示,根据不同的运行时机,构件将 处于构件代码、未激活、潜伏和激活四个状态;同时定义了六种操作一装载、激活、激活备选、去活、升级和卸载,迸行构件间状态的切换。a) 状态定义Z构件代码一是构件最初的存在形式,只是磁盘上的代码文件;^未激活一指构件代码已被装载到容器的内存空间,构件对象已被创建,但构件对象尚未与ORB绑定; Z潜伏一将构件对象同ORB进行绑定,并通过节点管理服务将对象引用上报给主域节点,开始缓存时间片内的构件交互信息,但无法为其他构件提出服务; Z激活一将构件对象同ORB进行绑定,并通过节点管理服务将对象引用上报给主域节点,可以为其他构件提供服务。b) 操作定义Z装载一将构件代码文件加载进容器的进程空间,并创建构件对象; Z激活一将构件对象绑定到容器ORB上,并将构件对象引用发布到域;Z激活备选一将将构件对象绑定到容器ORB上,不发布到全域; Z去活一将构件对象同ORB解绑定,并向主域报告本构件失效; Z升级一将备选域构件激活成为主域构件; Z卸载一删除构件对象,并将构件代码从容器空间卸载。 (3)主域节点启动流程。如附图3所示,主域节点启动分为3个阶 段读取配置文件;创建域管理服务;打开监听端点,启动定时器。a)读取配置文件—包括了域节点配置文件和应用配置文件,获取0RB 监听端点、TCP监听端点、多播端点信息,以及本域部署应用的相 关信息,建立起基本的全局信息数据结构,包括了节点队列表、 构件队列表,构件部署信息映射表,构件依赖关系表,激活构件 优先队列表;b) 创建域管理服务一初始化ORB内核库,创建域管理服务对象,并 将其同ORB进行绑定,保存其对象引用;c) 打开监听端口,启动定时器一打开ORB监听端点、TCP监听端点、 多播端点,启动定时器,定时组播域心跳报文,对外宣告域已启 动完毕。(4) 备份域节点启动流程。如附图4所示,备份域节点启动分为6 个阶段读取节点配置文件;创建节点管理服务;遍历节点已部署构件; 部署构件的预装载;启动节点公共服务;打开监听端点,启动定时器;启 动对主域节点状态的查询。a) 读取节点配置文件一获取ORB监听端点、TCP监听端点、多播端点信息等其他配置信息;b) 创建节点管理服务—初始化ORB核心库,创建节点管理服务对象, 并将其同ORB进行绑定,保存其对象引用;c) 遍历节点已部署构件一遍历构件部署目录,读取相应构件的配置 文件,建立本地构件队列表,初始状态表以及依赖关系表;d) 部署构件预装载一根据构件配置信息,容器加载构件代码进入容 器的进程空间,创建构件实现体对象,并将其与ORB绑定,转入 潜伏状态;e) 启动节点公共服务一启动节点公共服务,例如命名注册/査询服 务,发布/订阅的事件服务等;f) 打开监听端点,启动定时器一打开ORB监听端点、TCP监听端点、 多播端点,启动定时器,组播节点心跳报文;g) 启动对主域节点状态的査询一通过多播查询报文,向主域查询其 状态。(5) 主域和备份域节点间的交互。如附图5所示,包括了主域和备份域节点间状态维护和连接的建立,备份域向主域上报信息以及主域向备 份域下发信息。a) 主域和备份域节点间状态维护和连接的建立。双方均探测对方发 出的心跳报文,若探测到对方的心跳报文,则表明对方的存在, 若在某个周期内探测不到已知节点的心跳报文,则该节点已失效。 对于主域节点,①若收到其他节点心跳报文,则査询节点表判断 该节点是否已存在;②若是新节点,则向该节点发出进行连接报 文;③连接成功,则加入节点表;④若是旧节点,则更新该节点 的心跳时间;⑤若在一定周期内某节点心跳时间得不到更新,则 从节点表中删除该节点,并进行容错迁移处理。对于备份域节点, ①若收到主域心跳报文,则判断是否新主域节点;②若是新主域 节点,则根据报文的端点信息进行与主域的连接;③连接成功, 则上报本节点的初始状态信息,包括所有构件的状态; 若是旧 主域,则更新主域的心跳时间。b) 备份域节点向主域节点上报信息。包括了两大类消息,本节点上 的构件有效消息和本节点上构件无效消息。备份域节点定时探测 构件状态,并通过步骤(4)建立的连接向主域上报构件状态转换 信息,上报信息括了构件标识(c o即I D)和构件对象引用 (compOb jRef),以及构件当前的状态(co即Status)。c) 主域节点向备份域节点下发信息。包括了三大类消息,构件管理 指令消息(装载、激活、卸载等指令)以及全域的构件有效消息, 全域构件无效消息。
权利要求
1. 一种基于域模型的构件实时主动迁移方法,其特征在于包括(1)域模型的描述、(2)主域和备份域间的全局信息同步、(3)失效构件的主动发现、(4)构件迁移过程、(5)关联构件间依赖关系的更新。
2、 根据权利要求1所述的域模型的基于域模型的构件实时主动迁移方法,其特征在于(l)域模型的描述为将分布式应用系统网络 中所有节点划分为两种角色主域节点和备份域节点;主域节点是全 域主控和仲裁节点,维护全局信息,协调和控制迁移过程的进行;备 份域节点是主域节点的信息备份,并充当主域节点的后备节点;系统 包括唯一一个主域节点和若干备份域节点,节点的角色由选举算法决 定;当系统启动时根据权重对所有节点进行编号,编号最大者为主域 节点,其他为备份域节点,当主域节点失效时,余下编号最大的备份 域节点被选举为主域节点。
3、 根据权利要求1所述的域模型的基于域模型的构件实时主动 迁移方法,其特征在于(2)主域和备份域间的全局信息同步为主域 节点维护全局状态信息,包括了应用系统构件组成部分,构件间的依 赖关系,构件在节点的部署情况以及当前构件的活动状态;备份域节 点按设定的频率依次向主域节点上报本节点的构件状态信息,主域节 点通过汇总各个备份域节点的上报信息形成系统的全局状态,并向所 有备份域进行下发全局状态,备份域接受全局状态进行缓存;所有节 点均以向外广播心跳报文的方式向其他节点表明本节点的有效性。
4、 根据权利要求1所述的域模型的基于域模型的构件实时主动 迁移方法,其特征在于(3)失效构件的主动发现为构件装载在节点的容器进程中,容器通过定时调用构件的Ping方法来探测构件的心跳,若在一定的周期内探测不到构件的心跳,则认为该构件已失效,该节点服务立即向主域节点上报本节点构件失效情况。
5、 根据权利要求1所述的域模型的基于域模型的构件实时主动迁移方法,其特征在于(4)构件迁移过程为各备份域节点上的构件 通过构件"潜伏"状态,记录最近的输入信息,但是不做任何处理, 一旦主域节点出现故障,被选中的备份域构件立即由"潜伏"状态转 为"激活"状态,同时将补偿性处理最近故障时期内主域节点错过的 信息,保持不丢失任何系统信息,同时避免信息重发,提高实时性和 准确性;主域节点根据各备份域节点上报的构件活动状态信息形成构 件激活优先级队列;若主域节点通过步骤(3)发现了失效构件,则査找 该失效构件的激活构件列表,选择优先级最高的待激活构件作为当前 有效的全局激活构件,并指示该激活构件所在的备份域节点进行该构 件的全局激活。
6、 根据权利要求1所述的域模型的基于域模型的构件实时主动迁移方法,其特征在于(5)关联构件间依赖关系的更新为当构件迁 移完成后,主域节点根据记录的迁移构件间的依赖关系,对被依赖构 件的对象引用进行更新,主域节点向依赖构件所在的备份域节点下达 更新对象引用的命令,最终由备份域节点完成依赖构件对象引用的更新。
全文摘要
本发明提供了一种构件化分布式系统中进行构件迁移的方法,属于软件构件化技术领域。包括了以下步骤1)将分布式系统中的节点划分为域和非域两种角色,域节点统管全局策略,非域节点负责策略在本节点的具体执行;2)制定了一种域和非域节点间的交互管理协议,用于构件的迁移管理;3)建立了构件多点冗余、失效主动发现和实时迁移算法。本发明设计的构件迁移方法具有1)实时性,通过全局信息的精简优化和基于优先级的构件激活队列,消除了迁移过程中构件装载和环境绑定时间,提高了迁移过程的实时响应程度;2)准确性,通过备份域构件“潜伏”状态的功能实现,确保信息的完整性,保证系统运行状态的正确。
文档编号G06F9/44GK101251797SQ20081004717
公开日2008年8月27日 申请日期2008年3月31日 优先权日2008年3月31日
发明者曹万华, 峰 薛, 菲 谌, 恒 赵, 炜 陆, 靖 陈, 黄志刚 申请人:中国船舶重工集团公司第七〇九研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1