(计算机软件与理论专业论文)分布式系统中容错中间件冗余服务的设计与实现.pdf_第1页
(计算机软件与理论专业论文)分布式系统中容错中间件冗余服务的设计与实现.pdf_第2页
(计算机软件与理论专业论文)分布式系统中容错中间件冗余服务的设计与实现.pdf_第3页
(计算机软件与理论专业论文)分布式系统中容错中间件冗余服务的设计与实现.pdf_第4页
(计算机软件与理论专业论文)分布式系统中容错中间件冗余服务的设计与实现.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机软件与理论专业论文)分布式系统中容错中间件冗余服务的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 随着分布式技术的广泛应用,尤其是在关键领域的深入,应用环境 变得异常复杂,网络异构问题也更加突出,对系统的可靠性和可用性提 出了更高的要求,为系统提供容错则是保证高可靠性和高可用性的重要 举措。如果直接开发分布式容错,就要处理复杂的应用逻辑和容错逻辑, 为了减轻容错应用开发者的负担,尽可能的将一些容错的共性提炼出来, 为分布式应用提供统一的容错管理,在中间件层提供容错备受关注。 本文在遵循现有容错规范的基础上,吸收和改进传统容错中的部分 容错思想和技术,建立了容错的计算模型,构建了基本容错框架,设计 和改进了复制管理模块和失效管理模块,将副本以对象组的形式由复制 管理器进行统一管理。通过接收复制管理器的请求,驻留在本地主机上 的通用对象工厂进行对象的创建与删除,系统根据复制模式的选择,进 行副本之间的状态同步。对失效管理模块建立了一个基于推拉混合模式 的失效检测模型,采用三层的层次式失效检测方法,进行进程级、对象 级和主机级的失效检测,在传统失效检测算法的基础上通过添加信任参 数和修正比例因子改进了失效检测算法。 测试结果表明,在i o i o o m 自适应的以太局域网环境下,当消息长 度不大于3 k ,对象副本数目小于4 时,请求平均响应时间不会太长,系 统具有较好的性能;采用心跳消息对系统进行检测,能及时的检测到对 象和主机的失效。 关键词分布式,中间件,容错,复制管理,失效检测 a b s t r a c t w i t ht h e w i d e s p r e a da p p l i c a t i o n o fd i s t r i b u t e d t e c h n o l o g y , t h e e n v i r o n m e n th a sb e c o m ee x t r e m e l yc o m p l e xe s p e c i a l l yi nt h ek e ya r e a s , h e t e r o g e n e o u sn e t w o r ki sa l s os e v e r e r , s y s t e mn e e ds t r o n g e rr e l i a b i l i t ya n d a v a i l a b i l i t y , a n df a u l t - t o l e r e n c ei st h eb e s tw a y t oe n s u r et h ep e r f o r m e n c e i ti s h e a v ya n dh a r d t od e v e l o pf a u l t - t o l e r e n c eo nt h ed i s t r i b u t e da p p l i c a t i o n d i r e c t l yb e c a u s eo ft h ec o m p l i c a t e da p p l i c a t i o nl o g i ca n df a u l t - t o l e r a n tl o g i c i no r d e rt or e d u c et h eb u r d e no fa p p l i c a t i o nd e v e l o p e r , i ti se a s i e ra n ds m a r t e r t op r o v i d ef a u l t t o l e r e n c ei nt h em i d d l e w a r el e v e l f o l l o w i n g t h e p r e s e n t f a u l t - t o l e r e n ts t a n d a r da n dl e a r n i n g s o m e f a u l t t o l e r e n ti d e a si no t h e rf i e l d ,t h i sp a p e rp r o p o s e daf a u l t - t o l e r e n tm o d u l e a n df r a m e w o r k d e s i g n i n ga n dp r o v i n gt h er e p l i a t i o nm a n a g e ra n df a u l t d e t e c t i o ni st h ec o r em i s s i o ni nt h i sp a p e r ,t h er e p l i a t i o nm a n a g e r a d m i n i s t r a t e dr e p l i c a t i o n sb yo b j e c tg r o u p g e n e r i cf a c t o r yc r e a t e sa n dd e l e t e s t h eo b j c e ta c c o r d i n gt ot h er e q u e s tf r o mr e p l i c a t i o nm a n a g e r n es y s t e m - k e e p st h es t a t es y n c h r o n i z a t i o nb e t w e e nt h o s er e p l i c a t i o n so nt h eb a s i so f r e p l i c a t i o ns t y l e i tp r o p o s e dap u l l p u s hm i x e dp a t t e r ni nt h ef a u l td e t c t i o n m o d u l ea n dc o u l dc a r r yo u tt h ep r o c e s s 1 e v e l ,o b je c t l e v e la n dh o s t - l e v e lf a u l t d e t e c t i o nu s i n gh i e r a r c h i c a ld e t e c t i o n t e s tr e s u l t ss h o wt h a tt h er e q u e s ta v e r a g el a t e n c yw i l lb en o tb a di nt h e 1o 10 0 me t h e r n e tl o c a la r e an e t w o r k , 3 ka n dt h en u m b e ro fr e p l i c a t i o n si s i ft h em e s s a g el e n g t hi sn o tm o r et h a n l e s st h a n4 ,t h ef a u l td e t e c t i o nc o u l d d e t e c tt h ef a u l ti nt i m ea n da c c u r a t e l y k e yw o r d s d i s t r i b u t e d t e c h n o l o g y , m i d d l e w a r e ,f a u l t - t o l e r e n c e , r e p l i a t i o nm a n a g e r f a u l td e t e c t i o n i i 原创性声明 本人声明,所呈交的学位论文是本人在导师指导下进行的研究工作 及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢的地方 外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获 得中南大学或其他单位的学位或证书而使用过的材料。与我共同工作的 同志对本研究所作的贡献均已在论文中作了明确的说明。 作者签名: 学位论文版权使用授权书 本人了解中南大学有关保留、使用学位论文的规定,即:学校有权 保留学位论文并根据国家或湖南省有关部门规定送交学位论文,允许学 位论文被查阅和借阅;学校可以公布学位论文的全部或部分内容,可以 采用复印、缩印或其它手段保存学位论文。同时授权中国科学技术信息 研究所将本学位论文收录到中国学位论文全文数据库,并通过网络向 社会公众提供信息服务。 作者签名: 导师签名煎i 塑盗j 日期:2 q q 窆年月1 7e 硕士学位论文第一章绪论 1 1 引言 第一章绪论 随着计算机通信技术的发展,近年来,分布式计算系统因其高性价比己经变得越 来越流行,随着安装数量的增加和应用范围的扩展,为这些系统开发的分布式软件也 越来越复杂。网络异构问题也日益突出,一个平台需要支持多种应用软件和管理多种 应用系统,软、硬件平台和应用系统之间需要高效和可靠的数据传递或转换,使系统 的协同性得以保证n 1 。屏蔽异构系统的差异性,就迫切需要一种基于标准的、独立于 计算机硬件以及操作系统的开发和运行环境,在这种情况下,中间件技术就应运而生 了乜1 。同时,许多分布式软件被用来处理关键临界任务,这些任务与人类的生活安全 息息相关。这种趋势导致了对高可靠性分布式软件或开发这种软件的技术的需求越来 越迫切。因此,为了保证系统的高可靠性和高可用性,就必须使中间件具有较强的容 错能力。 在中间件这一层次提供较完整的容错还刚刚起步,原因在于为容错提供支持的中 间件软件,也就是容错中间件,一方面必须能整合已有的中间件技术,与原有的中间 件及其服务的规范相容;另一方面还要能把发展已经较为成熟的、在集中环境里、专 业领域里广泛使用的容错思想与技术纳入到中间件的容错框架中来口3 。 随着对象技术和分布计算技术的融合,网络分布逐步走向深入,代表着分布式系 统发展的主要趋势,现在,基于网络分布式计算的分布式系统也成为计算机应用的主 流技术,并且涌现出一大批这对不同应用领域的、各具特色的分布式系统。目前最为 流行的分布式系统标准是o m g ( o b j e c tm a n a g e rg r o u p ,对象管理组织) 的c o r b a ( c o m m o no b j e c tr e q u e s tb r o k e ra r c h i t e c t u r e ,公共对象请求代理体系结构) 标准、 m i c r o s o f t 的o l e c o m d c o m 标准和s u n 公司的j 2 e e 标准h 刊。 1 2 容错的研究现状 1 2 1 冗余容错的研究现状 容错是指在系统发生部分失效时,能有效的恢复并能够继续正常工作n 1 。它是实 现系统可靠性和可用性的关键机制。实现容错的主要手段是冗余,冗余是指超过正常 系统操作所需要的信息、资源或时间的简单叠加暗1 。如果一个系统能够通过冗余标记 出系统中的错误,那么这个系统就可以称作容错系统。主要有四种类型的冗余: l 硕士学位论文第一章绪论 ( 1 ) 硬件冗余,例如额外的处理器; ( 2 ) 软件冗余,例如软件模块的额外版本: ( 3 ) 信息冗余,例如使用了额外位数的错误检测代码; ( 4 ) 时间冗余,执行一个操作,如果需要就再次执行,例如事务的重做。 由此可以看出,容错的目的是:即使错误存在,也要防止系统失败;当子系统失 败时,要防止整个系统的失败,并在高层次标记出子系统的失败。 目前在分布式系统中冗余算法主要采用对象复制凹1 ,根据对象是否有状态可将复 制模式分为无状态( s t a t e l e s s ) 模式和有状态( s t a t e ) 模式,并根据复制动作的差异将 s t a t e 模式分为主动复制( a c t i v e ) 模式、热被动( w a r m p a s s i v e ) 模式和冷被动 ( c o l dp a s s i v e ) 模式u 引。 在s t a t e l e s s 模式中,复制的服务对象没有内部状态,对象组的行为不受其调用 历史影响h ,一般适应于对静态数据的只读访问。 在a c t i v e 模式中,对象组的所有成员独立执行针对对象的方法调用,如果某一 个对象组成员发生失效,其它成员将产生所需的应答,并且应答的产生不会因失效恢 复造成延迟n 羽。对于a c t i v e 模式来说,副本间要求强的副本一致性,即针对对象组 的每次方法调用结束后,对象组的所有成员具有相同的状态n3 1 ,因此通信开销较大。 对于c o l d p a s s i v e 模式n4 1 5 1 ,对象组成员分为主( p r i m a r y ) 副本和备份( b a c k u p ) 副本。一个对象组由一个p r i m a r y 副本和多个b a c k u p 副本组成,只有p r i m a r y 副本 与客户进行通信。正常情况下p r i m a r y 副本执行客户请求,并将消息和状态记录在日 志中。当p r i m a r y 失效时,系统使用记录在消息日志中的状态信息和消息对某一个 b a c k u p 副本进行失效恢复。这是复制模式中最慢的一种失效恢复方法。 对于w a r m p a s s i v e 氐盯1 模式,对象组成员也分为p r i m a r y 副本和b a c k u p 副本, 但p r i m a r y 副本的当前状态将被周期地传输给b a c k u p 副本,因此主从副本状态同步 的开销被分摊到系统的生命周期中,并且b a c k u p 副本也拥有最新的状态,所以这种 模式下的失效恢复较之c o l dp a s s i v e 模式要快。 1 2 2 容错中间件的研究现状 在冗余技术中,让完成同一功能的多个对象形成对象组( 其中每个对象称为副本 r e p l i c a ) ,使在单个对象失效的情况下不影响系统的正常工作为了管理容错对象组 的创建以及在有对象失效时的检测和恢复,容错中间件对基础通信平台和公共服务进 行扩展,形成了一组f t i ( f a u l t t o l e r a n ti n f r a s t r u c t u r e ,容错基础设施) ,f t i 为基于分布对象中间件开发容错应用提供了一个管理环境,被称为容错对象管理框架 n 8 】 o f t _ c o r b a ( f a u l tt o l e r a n tc o r b a ,容错c o r b a ) 作为一个面向对象的分布式中间 2 硕士学位论文第一章绪论 件,需要支持具有不同特性的容错应用系统,鉴于容错技术的复杂性,容错c o r b a 自身的结构和功能也必然是相当复杂的。为了支持和方便分布式容错系统的开发和部 署,为后者提供一个开放和统一的框架和开发环境,o m g 组织在通用c o r b a 技术的基 础之上,按照容错领域的需求,对其进行了相应的拓展和改进,形成了容错c o r b a 规范n 引。 在f t _ c o r b a 规范中特别指出,容错c o r b a 规范不支持以下的错误类型啪1 : ( 1 ) 网络分区错误; ( 2 ) 设计或编程错误; ( 3 ) 逻辑错误导致的对象没有生成正确的结果。 o m g 在2 0 0 1 年9 月推出了f t c o r b a 规范( 包含在c o r b a 2 5 版本当中) ,规范的 出现也推动了容错c o r b a 中间件产品的开发和上市,这些产品主要采用以下三种方 法: ( 1 ) 集成方法口h 副。将组通信能力集成到o r b ( o b j e c tr e q u e s tb r o k e r ,对象请求 代理) 中提供容错,但是集成方法要求修改o r b 核心来支持容错,o r b 的修改程度取 决于要添加的功能,所以运用该策略的系统兼容性较差,主要产品有e l e c t r a 系统 2 4 。 ( 2 ) 截取方法乜4 。拍1 。开发人员在o r b 上插入一些代码作为拦截点,一旦客户发送 一个请求或收到一个应答,o r b 就会自动地运行这些代码,这些代码就可以修改客户 请求,修改后的客户请求被映射到可靠的组通信中,送往服务器对象。主要产品有 e t e r n a l 系统乜引。 ( 3 ) 服务方法嘲1 。定义一组对象和接口,作为c o r b a 服务为应用提供容错机制。优 点是可以使用已有的o r b ,不需要对o r b 进行修改。但是,由于容错通过服务的方式 提供,所以这种方式无法做到透明性。主要的产品有d o o r s 系统啪1 。 1 3 本文的工作与组织结构 本文以分布式容错作为研究对象,选用中间件c o r b a 作为实现平台,采用冗余的 方法实现容错,主要包括复制管理子系统和失效管理子系统,设计了复制管理器模型 和推拉混合模式的三层分层式失效检测系统,并在v i s i o b r o k e r 平台上得到了实现。 主要工作如下: 第一,设计和改进复制管理子系统。复制管理器是整个容错框架的核心,包括属 性管理器、对象组管理器和通用对象工厂三个模块的设计,设计了复制管理模块的计 算模型,对属性管理器的容错属性、对象组的组管理和操作、通用对象工厂的对象操 作进行了设计和改进,根据功能改进了对象创建、删除和查找的算法。 第二,设计和改进失效管理子系统,系统依靠它提供的信息淘汰已失效的对象副 硕士学位论文第一章绪论 本并创建需要的对象副本,尽可能的满足失效检测的完整性和准确性,设计了一个推 拉混合模式的三层分层式失效检测系统。 第三,系统的实现和分析。对复制管理模块测试了消息长度、对象组成员数在不 同复制模式下对请求延迟的影响;对失效检测模块用检测时间来测试失效检测的及时 性,用错误持续时间来检验系统的可靠性。 本文写作一共分为六章,各章内容如下: 第一章为绪论,主要介绍分布式系统和中间件在容错方面的研究背景、国内外研 究现状、本文的研究内容和写作结构。 第二章主要介绍面向对象的分布式中间件c o r b a 的一些基本概念、工作原理以及 容错c o r b a 的通信机制、模块组成和工作原理。 第三章主要是针对复制管理模块进行设计,包括属性管理器、对象组管理器和通 用对象工厂三大接口的设计和对象的创建、删除和查询几个基本功能模块的算法设计 和i d l 设计。 第四章主要设计失效管理模块。介绍并分析了失效检测的基本模式和组织构架, 建立了失效通告模型,改进了层次式失效检测,设计了对象级和主机级失效检测,在 传统的失效检测算法基础上通过添加信任参数和修正比例因子改进了失效检测算法。 第五章给出了实验结果和分析。对复制管理模块主要分析消息长度和副本数目对 系统平均请求响应时间的影响,对失效管理模块主要测试了对对象、主机和失效检测 器的失效检测,系统的错误间隔时间能满足正常需求,错误持续时间在可接受范围之 内。 第六章对现有工作进行总结,分析其中的不足,展望下一步的工作。 4 硕士学位论文第二章基于c o r b a 的容错中间件 第二章基于c o r b a 的容错中间件 c o r b a 是目前主流的分布式对象技术规范,被大多数计算机公司和厂商所支持。 它采用远程对象调用机制,支持异构环境下应用的开发和互操作,具有语言透明、位 置透明、互操作和可移植等特性啪1 ,极大地简化了分布式应用的开发,为越来越多的 分布式系统所采纳。 c o r b a 标准由o m g 设立并进行控制,c o r b a 定义了一系列a p i ( a p p l i c a t i o n p r o g r a mi n t e r f a c e ,应用程序接口) 函数,通信协议,和物件服务信息模型用于使 得异构应用程序能够互相操作,这些应用程序用不同的程序语言编写,运行在不同的 平台上m 1 。c o r b a 因此为定义明确的物件提供了平台和位置的透明性,这些物件是分 布式计算平台的基础。 2 1c o r b a 的结构与原理 2 1 1c o r b a 标准的一些重要概念 为了便于区分c o r b a 当中的一些实体以及一些重要的基本操作,理解客户、对象、 对象引用、对象连接这些概念就显得十分重要。 客户:通常将客户看作是一个能够初始化对象请求的程序或进程口羽。对象的客户 可以访问该对象的对象引用、调用该对象的操纵。客户通常从语言映射的角度来看待 对象和o r b 接口,因此,客户应该具有较好的移植性,无需修改源码,就可以在任何 o r b 上运行。 对象:是一个可标识的,封装的实体,它向客户提供一个或多个服务。对象具有 状态、行为和标识。对象的状态封装了对象的属性和当前属性值。对象的行为定义了 对象在内部状态改变和接到消息时的相应汹1 。对象的标识把一个对象与其它同类型对 象区别开。创建一个对象的过程叫做“实例化”。 对象引用:对象引用是用来指明某个o r b 中的某个具体的对象,对象的标识就是 通过对象引用来实现的口舢。值得注意的是,传递给客户的对象引用的表示方式只在该 客户的生命周期中有效。 对象实现:对象实现通过定义描述对象实例的数据和对象所实现的方法的编码来 提供对象的语义啪1 。对象实现往往要借助于其它的对象或软件来实现它的具体行为, 方法有多种,包括独立的服务器、程序库、方法的程序代码、封装的应用以及面向对 象的数据库等。 对象连接:c o r b a 广泛地支持对象的实现,在单服务器系统中也可以实现由接口 5 硕士学位论文第二章基于c o r b a 的窖错中间件 定义语言定义的接口1 。o r b 的灵活性既可以直接集成已有的应用,又不会使新对象 受某些原则的制约。对象连接提供了有不同类型对象实现时,使用o r b 服务的方法, 服务包括:对象引用、方挂调用、安全控制、对象实现的激活与静候等。 2 1 2c o r b a 的工作原理 在c o r b a 体系结构中,对象请求代理( o r b ) 是c o r b a 的通信核心,它的体系结构 如图2 1 。客户通过o r b 透明地调用远程对象的方法,o r b 可以看作是“对象软总线”, 异构的对象通过它可以进行互操作。”。o r b 也使得不同网络和操作系统上的分布式对 象的集成成为可能。在o r b 结构中,o r b 并不需要作为一个单独的组件来实现,而是 通过一系列接口来定义,任何一个提供适当的o r b 实现均是可行的。 : 客户 ) ( 对象实现 ) 南南茸斟 o r b 按心 = 三篇絮篡黧黧纛 ft 。煳 圈豳对年种对象羹墨辅单独的g 根和旺幕 一可姥育多个列橐睡l o 器 l 下行调用 二二二 与。珊实鼠相关的箍口 图2io r b 的体系结构 0 r b 洲( o b j e c tr e q u e s tb r o k e r ) 是c o r b a 体系结构的核心构件。它提供客户请 求和响应过程的实现机制,并且实现了它们之间通信的透明性。客户可通过o r b 使用 服务器对象的方法,o r b 截获客户调用,然后负责找到一个对象实现这个请求,传递 参数和方法,最后返回结果。客户无需知道对象的位置、语言实现、运行环境等等, 只需知道对象的接口“。 i d l ”“( i n t e r f a c ed e f i n i t i o nl a n g u a g e ,接口定义语言) 是一种独立的、说明性 的形式化语言,用来定义对象界面。这个界面描述了该对象的操作和类型,表示对象 提供的服务接口。值得注意的是,i d l 只是作为说明性的抽象语言,而不是具体的编 程语言,c o r b a 提供i d l 到c 、c + + 和j a v a 编程语言的映射。 把i d l 说明编译成面向对象程序设计语言的实代码后,客户可以调用已知对象的 硕士学位论文 第二章基于c o r b a 的容错中间件 操作。在某些应用中,用户并不了解应用接口编译信息,但也要求调用对象的操作, 这时就要动态调用接口来调用用户的操作了。例如,图形用户接口应支持用户浏览接 口公共库,以获得每个对象所支持的操作信息,用户可根据自己的需求从浏览对象中 挑选出所需的对象操作,具体的对象操作的调用实际上是用动态调用接口来完成的。 对象适配器h 3 州1 是联系对象实现和o r b 的纽带,它的引入大大减轻了o r b 的任务, 简化了o r b 的设计。对象适配器主要完成以下工作: 对象登记“5 1 :利用对象适配器所提供的操作,可以在c o r b a 的实现仓库中把编程 语言中的实体登记为c o r b a 的对象实现。 对象引用的产生m 1 :对象适配器为c o r b a 对象生成相应的对象引用。 服务器进程的激活h :如果客户发出请求时,目标对象所在的服务器还未运行, 对象适配器则自动激活该服务器。 对象的激活h 巩例:如果必要,会自动激活目标对象。 对象的撤销嘞5 :在预先规定的时间片内,如果一直没有发现某个目标对象的请 求,对象适配器则撤销这一对象,以节省系统资源。 对象上行调用陌刳:对象适配器把请求分配给已登记了的目标对象。 2 2 容错c o r b a 的计算模型 如图2 2 所示,容错c o r b a 的计算模型中,容错应用服务器应用通过容错基础设 施创建了服务对象组,并发布对象组引用,客户获得对象组引用后,通过o r b 请求对 象服务。 容错c o r b a 系统主要包括基本容错机制和容错基础设施两部分的设计,对于基本 容错机制,主要通过在o r b 层通过提供相应的机制来实现客户对容错服务器对象组的 寻址和失效处理,主要包括容错o r b 对一般o r b 的扩展和修改嘞】。而对于容错基础设 施,主要对容错中间件对基础通信平台和公共服务进行扩展,形成了一组容错基础设 施,它为分布对象中间件开发容错应用提供了一个管理环境,这个管理环境称为容错 对象管理框架,它基于容错属性为容错应用建立了一个统一的开发和管理环境,为需 要容错的服务器应用提供一系列接口实现容错管理,主要包括复制管理器、失效管理、 以及日志和恢复管理。本文的重点工作就是围绕复制管理器和失效管理进行。 7 硕+ 学位论文第二章基于c o r b a 的容错中间件 图2 2 容错c o r b a 计算模型 为了实现对象容错,一个对象会被创建多个副本,分布在不同的主机上,构成一 个对象组,组中的每个副本被称作该组的成员,一个对象组被客户应用当作独立的逻 辑实体看待嘲1 。 2 3 容错c o r b a 的体系结构与工作原理 容错c o r b a 通过对象冗余,失效检测和恢复来获得确定对象的容错。c o b r a 对象 的副本配置在不同的主机即容错域。容错域是一个非分割的网络中主机的集合嘲3 。对 象的副本( r e p li c a ) 称为对象组( o b j e c tg r o u p ) 的成员( m e m b e r ) ,它是一个逻辑地址, 允许客户透明的访问对象组就像单一的,非复制的,高可用的对象。如果复制对象是 有状态的,开发者要明确的决定处理副本的一致性,或者由基础设施来处理。容错 c o r b a 修改和扩展了c o r b a 规范概念的对象组寻址嘲1 ( o b j e c tg r o u pa d d r e s s i n g ) , 一个新客户失败语意和新机制,新体系结构组件被加入如复制管理( r e p l i c a t i o n m a n a g e m e n t ) ,失效管理( f a u l tm a n a g e m e n t ) 和恢复管理( r e c o v e r ym a n a g e m e n t ) 。 分布式容错系统主要由复制管理器、失效检测子系统、备份恢复子系统和分布在 各个主机上的对象工厂组成,如果2 3 所示。 8 硕士学位论文第二章基于c o r b a 的容错中间件 设置 失效报告 图2 3 容错c o r b a 体系结构图 复制管理器是容错系统的核心,它不仅提供服务接口让应用开发者设定容错属性 和创建删除对象组,而且控制和管理系统框架中的所有子系统哺 。它通过对象工厂创 建或删除对象副本,并以对象组为单位组织管理所有的应用服务对象组,产生对象组 引用;负责建立失效检测子系统和备份恢复子系统,接受失效检测子系统的失效报告, 根据产生失效的对象组的容错属性,让备份恢复子系统启动必要的恢复过程。 2 3 1 复制管理 复制策略规定了f t c o r b a 有5 种复制类型,它们决定对象组成员如何复制,复 制类型会影响对象状态记录方式以及错误如何恢复。 ( 1 ) 无状态方式( s t a t e l e s s ) :对象包含只读数据,对象的状态不能被更改,因此 无需记录和传送。 ( 2 ) 冷被动复制嘞1 ( c o l dp a s s i v e ) :对象组成员分为主副本( p r i m a r y ) 和备份副本 ( b a c k u p ) ,客户机将请求发送到组上唯一的主副本,该主副本是唯一执行该请求的成 员。操作完成后,该主成员的状态被记录到一个消息日志。当主副本失效时,系统使 9 硕士学位论文第二章基于c o r b a 的容错中间件 用记录在消息日志中的状态信息和消息对某一个备份副本进行失效恢复,这类恢复是 f t - c o r b a 中最慢的恢复机制。 ( 3 ) 暖被动复制咖3 ( w a r mp a s s i v e ) :对象组成员也分为主副本和备份副本,但住 副本的当前状态将被周期地传输给备份副本,因此主从副本状态同步的开销被分摊到 系统的生命周期中,并且备份副本也拥有最新的状态,所以这种模式下的失效恢复较 之冷被动模式要快。 ( 4 ) 主动复制呦1 ( a c t i v e ) :对象组的所有成员独立执行针对对象的方法调用,如 果某一个对象组成员发生失效,其它成员将产生所需的应答,并且应答的产生不会因 失效恢复造成延迟。对于主动复制模式来说,副本间要求强的副本一致性,即针对对 象组的每次方法调用结束后,对象组的所有成员具有相同的状态。 ( 5 ) 基于选举的主动复制( a c t i v ew i t hv o t i n g ) :这种复制类型与主动复制极其 相似。源对象组成员的响应经过选举,然后传送给目标对象组成员。当前c o r b a 容错 规范不支持这一复制类型。选举本身的计算并不昂贵,但通信设施要求支持选举就贵 了。 2 3 2 失效管理 失效管理子系统是维持对象组中各个副本的一致性和保证满足应用需求的最小 副本数所必需的,f t b u s 依靠它提供的信息淘汰已失效的对象副本并创建需要的对 象副本。在分布式系统里,失效包括对象本身不可访问和对对象的请求不可到达。失 效检测子系统的目的是尽可能及时、准确地检测到服务对象副本的失效和系统内主机 的失效( 判断主机失效的依据也是对特定对象进行检测的结果) 。应用开发者实现的 服务对象为了能被有效地检测,必须实现规范定义的拉m o n i t o r a b l e 接口,该接口中 只有一个方法i s _ a l i v e0 。失效检测子系统通过调用i s _ a l i v e0 来判断应用对象是 否失效。正常情况下,i s a l i v e0 应该返回t r u e ,若返回f a l s e 或异常则表明对象可 能已经失效。 2 4 系统结构模式 在分布式系统中,由于采用了冗余技术来实现容错,对这些副本进行管理就涉及 1 0 硕士学位论文 第二章基于c o r b a 的容错中间件 到负载均衡的问题,那么系统的结构模式也就成为一个重要的技术问题,通常有集中 式和选择式两种模式。 2 4 1 集中式模式 在集中式模式中,集中器一方面是负载分配的决策者,一方面作请求应答转发 的中介,因此,它适合充当失效检测者和请求重定向器的双重角色。所有的请求和应 答都要通过集中器,集中器保持着与所有应用服务器的连接,这使它可以很容易的检 测到系统中任一应用服务器的失效,失效通知也变成进程空间内部的操作,不需要额 外的监测进程和客户程序参与,这是集中式模式实现容错的一个优势。 对于请求的重定向,由于应用服务器层对于客户是透明的,因此请求的重定向对 客户也是透明的,客户感觉不到局部失效的影响。另外,请求的重定向也由集中器内 部完成,集中器只需要进行一次轻载对象选择,不需要额外的网络上的交互,进一步 缩小了m t t r ( m e a nt i m et or e a t o r a t i o n ,平均恢复前时间) 值,提高了可用性。 对于复制策略的容错,集中器起到请求克隆器的作用,负责将客户的一次请求按 照冗余复制服务的数量进行复制,发送给各应用服务器,同时串行化客户的请求,保 证所有组中的服务器能够按照相同的顺序接收并处理客户的请求。集中器还可以过滤 掉多余的请求应答,只允许一个应答返回给客户。 集中器模式下的容错同样存在着薄弱环节,那就是集中器的单点失效问题。要解 决这个问题,可以采用多个集中器的方式,也就是说,把集中器作成冗余复制服务, 采用客户方驱动的重定向方式来进行集中器的迁移,但由于集中器是一个有状态的服 务,涉及到状态的同步问题,如果简单的在一个集中器失效时重定向到另一个备份集 中器时,会丢失负载索引等重要信息,解决这一问题的办法之一是进行多个集中器之 间的状态同步,另一个办法是将状态信息定时序列化到共享的可靠永久存储上,启动 各份服务器时利用存储的信息恢复服务状态。 2 4 2 选择式模式 在选择式模式中,选择器是负载分配的决策者,是进行请求应答转发的中介, 因此,它需要额外的失效检测器和失效通告器。在这种情况下,可以使用客户程序完 成失效检测和通知工作,也可以使用监测进程。不管选择哪种方式,选择器都需要接 受外部的失效通知,比集中式开销要大一些,当然,也可以在选择器内部启动一个监 测线程完成检测工作,减少进程或网络问的交互,节约开销。 对于请求的重定向,选择式模式也需要客户方与选择器进行网络调用,来确定转 向的对象实例。 对于复制策略的容错,选择器只是负责活跃对象实例列表的维护,接受客户方的 1 l 硕士学位论文 第二章基于c o r b a 的容错中间件 查询,返回当前可用的对象实例列表,由客户端负责将请求按照可用冗余复制服务的 数量进行复制,发送给各应用服务器,同时进行串行化,保证所有可用的服务器能够 按照相同的顺序接收并处理客户的请求,并且负责等待和处理所有的应答。 同样,选择式模式也存在单点失效问题,解决这个问题的方案与集中器相同。需 要指出的是,由于选择器不转发客户方的请求和应答,客户方直接与应用服务器交互, 所以,如果选择器失效,客户方在无法获得新的请求分配决策之前,可以先利用原先 持有的对象引用继续进行业务处理,等选择器恢复后再进行新的请求分配,这虽然可 能造成负载不均衡的现象发生,但大多数情况下不会造成业务系统运行的中断,从这 一点来看,选择器的单点失效的所造成的严重性要远远低于集中器单点失效。 2 5 本章小结 本章简单介绍了c o r b a 的基本概念、体系结构和工作原理,重点阐述了容错c o r b a 的体系结构和工作原理,分析了现有的几种主要复制方式,最后在系统结构模式上分 析了集中式模式和选择式模式的优缺点和适用环境。 1 2 硕士学位论文 第三章复制管理器的设计与实现 第三章复制管理器的设计与实现 冗余管理,最主要的实现方法是对象复制,基本的对象复制算法有主动复制算法 和被动复制( 主一备份复制) 算法,容错c o r b a 中对象复制框架的主要功能是对对象进 行复制与管理,保持副本之间的状态同步。在一个已经进行对象复制的分布式系统中, 对象的各个副本通过对象组来进行管理。 3 1 复制管理器的模型与原理 复制管理器是容错c o r b a 系统模型的核心,在容错c o r b a 系统中,由多个复制管 理器对各个对象组进行统一的管理。由于复制管理器中保存有系统中各个对象组的组 成情况,所以它必须先于其他任何对象启动。其他对象创建时,必须向复制管理器进 行注册,在注册对象的过程中,对副本的访问要做到以下几个层次的透明。 ( 1 ) 地址透明:客户无需存储和维护冗余服务的地址信息,无需知道它们在哪些 节点、哪些主机上; ( 2 ) 实现透明:客户无需知道请求具体由哪个或者哪几个副本对象完成,请求的 响应过程对客户透明; ( 3 ) 失效透明:即使有服务对象失效,用户也不需要知道,复制管理器能够自动 屏蔽失效的服务对象,并对失效对象进行恢复,客户请求仍然能够得到正确结果。 ( 4 ) 配置透明:服务类实例的个数在运行时刻可以动态改变,允许实例动态注册 和注销,客户无需知道服务类的配置。 客户端程序通过复制管理器来得到其他对象组的组成情况,如图3 1 所示。 硕士学位论文第三章复制管理器的设计与实现 图3 1 复制管理器以及对象组的创建 复制管理器( r e p l i c a t i o n m a n a g e r ) 继承了属性管理器( p r o p e r t y m a n a g e r ) 、对象 组管理器( o b j e c t g r o u p m a n a g e r ) 和通用对象工厂( g e n e r i c f a c t o r y ) 三个接口。并且, 复制管理器为容错应用开发者提供管理和配置接口,接受应用的请求,按照开发者配 置的容错属性,进行复制管理并协调其它各部件共同完成开发者所需的失效管理和恢 复管理。 系统中的每台主机上驻留一个缺省的对象工厂( o b j e c tf a c t o r y ,o f ) ,接收来自 复制管理器或者应用本身的请求,负责创建对象。应用程序使用通用对象工厂来创建 对象组,它也被复制管理器用来创建对象组的单个成员。当应用程序调用 c r e a t e _ o b j e c t ( ) 来创建对象组时,复制管理器调用合适主机上的工厂对象来创建各 个对象,以符合对象组的初始成员数目等容错属性,并在对象组成员表中进行登记。 当由于对象组成员崩溃而使得成员数目小于所设定的最小成员数目时,复制管理器也 将自动调用合适主机上的工厂对象来创建一个或多个对象。另外,复制管理器还接受 失效检测子系统的失效报告,根据产生失效的对象组的容错属性,让备份恢复子系统 启动必要的恢复过程。 3 2 属性管理器的设计 3 2 1 容错域 实际应用环境中的分布式系统可能非常庞大且复杂,可以根据容错域( f a u l t 1 4 硕士学位论文 第三章复制管理器的设计与实现 t o l e r a n c ed o m a i n ,f t d ) 来对一个大的系统进行划分。一个f t d 包括一个逻辑的 r m ( r e p l i c i a t i o nm a n g e r ,复制管理器) 实例和一个f n ( f a u l tn o t i f i e r ,失效通告器) 实例。f d ( f a u l td e t e c t o r ,失效检测器) 分布在容错域中,周期的检测对象组中的对 象成员、进程和主机。 一个复杂的容错应用系统可以被分解成多个容错域,但一个对象组的所有成员及 成员所在的主机必须包含在同一个容错域中。每个容错域由一个管理框架管理,而不 同容错域中的对象可以彼此进行互操作。这样,同一个容错域中的对象处于相对一致 和稳定的环境中,相对而言,不同容错域的对象运行环境差别较大。因此我们常常针 对单个容错域抽象容错应用共同的容错属性,规定容错系统的运行特性。 3 2 2 容错属性的设计 属性管理器( p r o p e r t ym a n a g e r ) 的功能是设置各个对象组的属性序列,包括复制 方式、组成员关系、一致性、初始副本数,最d , n 本数等。可以对整个系统或某一种 对象设置缺省属性,也可以在系统运行时修改这些属性。p r o p e r t y m a n a g e r 接口中的 s e t d e f a u l t _ p r o p e r t i e s 用于创建容错域中所有对象组的默认属性,它要从客户端获 得属性列表中的每个属性的名字和值类型,对于在这个域中创建的新的对象组,都将 使用默认设置的属性。调用之后将产生的返回结果是i n v a l i d p r o p e r t y 异常和 u n s u p p o r t e d p r o p e r t y 异常,他们分别表示属性列表中的某些属性错误、属性序列中 的某些属性不支持。可以使用g e t d e f a u l t _ p r o p e r t i e s 来获得默认属性序列中每个属 性的名字和值类型。同样可以使用g e t d e f a u l t _ p r o p e r t i e s 来去除所设定的默认属性 序列。而其中的s e t t y p e _ p r o p e r t i e s 方法,根据给定的类型标识符可以重新定义该 类型,从而设置之后创建的对象组的属性列表,这个方法需要从客户发送的请求中获 得所要改变的接口库编号( t y p e i d ) ,以及某些属性的改进( o v e r r i d e s ) 。 s e t _ p r o p e r t i s e _ d y n a m i c a l l y 方法可以根据得到的对象引用动态的设置对象组的属 性。 属性管理器定义对象组的属性如复制策略、组成员关系、失败恢复机制、初始复 制对象数和最大对象复制数等,每个对象组都有一个相应的属性集合,可以缺省地为 容错域设置,可以在对象被创建时设置,也可以在应用程序执行时设置。包括 r e p l i c a t i o n s t y l e ,m e m b e r s h i p s t y l e ,c o n s i s t e n c y s t y l e ,i n i t i a l n u m b e r r e p l i c a s , m i n i m u m n u m b e r r e p li c a s 。 ( 1 ) r e p l i c a t i o n s t y l e :对象的复制方式是容错中很重要的一部分,对象复制的 方法可以是主动复制,也可以是被动复制,主动复制中对象组的所有成员都单独的执 行对象调用方法。如果一个错

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论