(计算机科学与技术专业论文)基于容错软件总线的报单处理系统的设计与实现.pdf_第1页
(计算机科学与技术专业论文)基于容错软件总线的报单处理系统的设计与实现.pdf_第2页
(计算机科学与技术专业论文)基于容错软件总线的报单处理系统的设计与实现.pdf_第3页
(计算机科学与技术专业论文)基于容错软件总线的报单处理系统的设计与实现.pdf_第4页
(计算机科学与技术专业论文)基于容错软件总线的报单处理系统的设计与实现.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

(计算机科学与技术专业论文)基于容错软件总线的报单处理系统的设计与实现.pdf.pdf 免费下载

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

文档简介

浙江大学硕士学位论文 摘要 摘要 报单处理系统是基于报文通讯的实时处理系统,其所在的网络和硬件环境十 分复杂。它是实时交易系统中最为关键的核心子系统之一,要求在发生网络异常 或主机失效等故障时,仍然能够持续不间断地对外提供服务。因此系统开发者需 要结合硬件环境,在软件架构时就设计好完整的容错方案。 本文首先研究总结了容错和通信中间件的相关理论,然后结合两种思想设计 实现了容错软件总线,可以提供包括消息持久性在内的多种特性和各种通讯服 务。首先软件总线实现了自身的容错;其次以应用服务组的形式向应用提供热备 或负载均衡的特性;最后支持应用消息反演以便其在崩溃时可以根据总线的日志 构件恢复到出错前的状态。 将此容错软件总线应用到报单处理系统中可以发现:由于容错软件总线很好 地把容错和通信中间件的思想结合了起来,以此作为系统的通讯组件,不但能够 有效地分离业务层和通讯层以降低新应用开发的难度,而且可以毫不费力带来强 大的容错通信性能。其分布式的系统结构使得不同应用之间松耦合,提高了系统 的可扩展性和稳定性。 本文的主要贡献和创新在于,对如何在通信中间件中提供容错机制进行了研 究,给出了一种合理的容错软件总线的设计和实现,并大胆地将其应用到实时交 易系统的报单处理子系统中开发中,取得了出色的效果。论文将容错理论和通信 中间件有机结合,其相关研究成果对于日后在金融实时交易系统的开发实践具有 比较重大的指导意义。 关键词:容错,通信中间件,软件总线,热备,反演,应用服务组 浙江大学硕士学位论文 a b s t r a c t a b s t r a c t o r d e rp r o c e s s i n g s y s t e mi s o fh i g h l yr e a lt i m er e q u i r e m e n tb a s e do nm e s s a g e c o m m u n i c a t i o n ,r u n n i n gi na l le x t r e m e l yc o m p l i c a t e de n v i r o n m e n tc o n s i d e rb o t ht h e n e t w o r ka n dh a r d w a r e a so n eo ft h em o s tc r i t i c a lc o r es u b s y s t e mw h i c hc o n s t i t u t e s t h er e a lt i m et r a d es y s t e m ,i tc a l l sf o rc o n t i n u e ss e r v i c et ot h eo u t s i d ee v e nu n d e rt h e c o n d i t i o no fn e t w o r kb r o k e nd o w no rh a r d w a r ee i 。r o r t h u si t sw o a h ya n dn e c e s s a r y f o rt h es y s t e md e v e l o p e r st ot a k ef a u l t t o l e r a n ti n t oc o n s i d e r a t i o na tt h eb e g i n n i n go f s o f t w a r ed e s i g n a tf i r s tt h i sa r t i c l es u m m a r i z e st h ef u n d a m e n t a lt h e o r i e so ff a u l t t o l e r a n ta n d c o m m u n i c a t i o nm i d d l e w a r e ,a n dt h e ng i v e st h ed e t a i l e dd e s i g no faf a u l t - t o l e r a n t s o f t w a r eb u s ,w h i c hp r o v i d e sv a r i o u sp r o p e r t i e ss u c ha sp e r s i s t e n tt h r o u g hi t sd i f f e r e n t c o m m u n i c a t i o ns e r v i c e t h e r el a y sm o r et h a no n em e a no ff a u l t - t o l e r a n t i nt h ef i r s t p l a c et h es o f t w a r eb u si ss e l ff a u l t - t o l e r a n to n c ed e p l o y e di nah o ts t a n d b yf o r m s e c o n d l ya n yt h ea p p l i c a t i o nc o n n e c t e dt ot h es o f t w a r eb u sa c q u i r e sah o ts t a n d b y p r o p e r t yo rl o a db a l a n c ep r o p e r t yd i f f e r so nt h ea p p l i c a t i o ns e r v i c eg r o u pt h e yc h o o s e l a s tb u tn o tl e a s ta p p l i c a t i o n st a l kw i t ht h es o f t w a r eb u st h r o u g ht h ec o m m u n i c a t i o n a d a p t o r , w h i c hc a nr e p l a ya l lt h em e s s a g e st h a ts e n tt ot h ea p p l i c a t i o nb e f o r ei tb r o k e d o w no r d e r l ya sa ne x c e l l e n tw a yo fr e c o v e r i n gf r o mf a u l t a sw ep u ti ti n t ou s ei nt h ep r o j e c to fo r d e rp r o c e s s i n gs y s t e m ,w ef i n dt h e f o l l o w i n ga d v a n t a g e so ft h ea b o v ef a u l t t o l e r a n ts o f t w a r eb u s d u et ot h ew e l lc o m b i n e o ff a u l t t o l e r a n ta n dc o m m u n i c a t i o nm i d d l e w a r e ,i tp r o v i d e sf a n t a s t i cw o r ka st h e s y s t e m sc o m m u n i c a t i o nc o m p o n e n t f i r s to fa l l i te f f e c t i v e l ys e p a r a t e st h eb u s i n e s s l a y e ra n dc o m m u n i c a t el a y e rm a k i n gi te a s i e rt od e v e l o pn e wa p p l i c a t i o n s m e a n w h i l e ap o w e r f u lf a u l t - t o l e r a n tp r o p e r t yi sp r o v i d e dw i t h o u tt h eu s e r s e x t r aw o r k f i n a l l yt h e d i s t r i b u t es y s t e ma r c h i t e c t u r eb r i n g st h el o o s ec o u p l i n gb e t w e e nd i f f e r e n ta p p l i c a t i o n s , a n di n c r e a s e st h ee x t e n s i b i l i t ya n ds t a b i l i t y m a j o rc o n t r i b u t i o na n di n n o v a t i o no ft h i sa r t i c l er e s i d e si nt h ef o l l o w i n ga s p e c t s w ed os o m er e s e a r c ho nh o wt o p r o v i d e f a u l t t o l e r a n tm e c h a n i s mi nt h e m 浙江大学硕士学位论文a b s t r a c t c o m m u n i c a t i o nm i d d l e w a r e ,c o m et oaf i n e d e s i g n a n d i m p l e m e n t a t i o n o f f a u l t t o l e r a n ts o f t w a r eb u s ,a n ds u c c e s s f u l l yt a k ea d v a n t a g eo fi tt od e v e l o pt h eo r d e r p r o c e s ss u b s y s t e m t h i s a r t i c l ew e l lc o m b i n e st h ef a u l t - t o l e r a n t t h e o r y a n d c o m m u n i c a t i o nm i d d l e w a r e ,a n dm a k e sg r e a ts e n s et og u i d et h ef u t u r ed e v e l o p m e n to f r e a lt i m et r a d es y s t e mi nt h ef i n a n c i a lf i e l d k e y w o r d s :f a u l t - t o l e r a n t ,c o m m u n i c a t i o nm i d d l e w a r e ,s o f t w a r eb u s ,h o ts t a n d b y , r e p l a y , a p p l i c a t i o ns e r v i c eg r o u p i v 浙江大学硕士学位论文图目录 图目录 图2 1 动态冗余系统容错的过程6 图2 2 实现软件可靠性的方法1 0 图2 3 多版本程序设计技术1 2 图2 4 恢复块技术1 3 图2 5n 拷贝程序技术1 3 图2 6 重试块技术1 4 图2 7 自检程序设计技术1 5 图2 8 一致性恢复块技术1 5 图2 9 接受表决技术1 6 图3 1 基于集中器的通讯结构1 9 图3 2 总线提供的热备组2 0 图3 3 通讯平台提供的各种组方式2 1 图3 4 容错平台的架构2 3 图3 5 容错平台的实现层次设计2 3 图3 6 控制消息格式图解2 5 图3 7 应用消息格式图解2 5 图3 8 仲裁结构2 6 图3 9 测试环境逻辑结构2 8 图3 1 0 多级总线级联2 8 图3 1 1 总线输入性能测试结果3 0 图3 1 2 总线输出性能测试结果3 1 图4 1 系统总体架构图3 4 图4 2 报单处理系统的架构3 5 图4 3 前置设计3 6 图4 4 报单处理中心设计4 0 图4 5 报盘机设计4 2 l 浙江大学硕士学位论文表目录 表目录 表2 1 计算机在各领域中的应用3 表2 2 应用系统非功能性要求5 表2 3 采用向前策略和向后策略的比较7 表2 4 动态冗余和静态冗余的比较8 表3 1 总线容错性能测试2 9 表4 1 前置职责表3 7 表4 2 前置业务功能说明3 8 表4 3 前置非业务功能说明3 9 表4 4 报单处理中心职责表4 0 表4 5 报单处理中心非业务功能说明4 1 表4 6 报盘机各模块功能职责表4 3 表4 7 报盘机功能说明4 3 浙江大学研究生学位论文独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。除了文中特另t l j n 以标注和致谢的地方外,论文中不包含其他人已经发 表或撰写过的研究成果,也不包含为获得逝望盘堂或其他教育机构的学位或 证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文 中作了明确的说明并表示谢意。 躲孑彦乍辄舭圳咽 学位论文版权使用授权书 本学位论文作者完全了解逝江盘茔有权保留并向国家有关部门或机 构送交本论文的复印件和磁盘,允许论文被查阅和借阅。本人授权迸望盘鲎 可以将学位论文的全部或部分内容编入有关数据库进行检索和传播,可以采用影 印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 导师签名: 签字日期: 刀 l 1 v j 、月夕p 日 磊0 f 卜 b 谚纭盯 孑 卜l j 氢 年 签 坷 者 0 作 : 文 期 沦 日 位 字 学 签 浙江大学硕士学位论文致谢 致谢 首先要感谢我的导师蔡亮副教授,两年多来老师给了我无微不至的关心和悉 心的指导。蔡亮老师治学严谨、学识渊博、儒雅随和,不仅教导我们学术研究的 方法,还传授我们为人处世的哲学,他一丝不苟的生活作风和无私热忱的品格也 深深影响了我们。蔡亮老师一手安排了我们的学习计划和实习研究环境,没有老 师的帮助和鼓励就不会有我今天的进步和成长,老师的一切指导都将是我今后的 宝贵财富。 其次要感谢我的爸爸妈妈,不管怎样都在我的身后支持我,关心我。 感谢实习过程中的同事,何显圣、叶智、王亮等同事和前辈给了我很大的帮 助和支持。 最后要感谢学院和学校,为我们创造了良好的学习环境。 王赛锋 2 0 0 8 年6 月1 日 浙江大学硕士学位论文第1 章绪论 1 1 课题背景 第1 章绪论 随着信息时代的到来,计算机的应用越来越广泛。在一些关键的领域,比如 金融、电信和军事等等,需要提供非常高的可靠性,因为一旦系统失效,其造成 的损失是无法估量的。容错的思想应运而生,现代的容错基本上朝着两个方向走, 一方面,硬件容错技术和容错系统的设计相结合,提供越来越完善、可靠性越来 越高的计算机系统,为应用提供了极高容错的运行环境;另一方面,由于软件设 计的复杂性,没有错误的软件很难做到,所以软件容错的思想提出以后已经被各 方所接受,针对关键领域设计的系统往往需要把软件容错考虑其中。 通信中间件是一个已经比较成熟的概念,目的是屏蔽由于多种硬件和系统平 台导致的通信层编码的复杂性,以便于高效的开发分布式应用程序。 软件容错的设计极为复杂,不但耗时耗力,如果没有经验,甚至适得其反。 因此我们将容错和通信中间件的概念相结合,以基础通信部件的形式提供容错通 信能力,可以极大的提供系统的性能并简化关键领域内应用的开发。 1 2 论文主要工作 本文所作的工作主要包括: 介绍容错技术和通信中间件技术的相关背景,概念,原理以及实现机制,重 点介绍了容错的主要原理,各种主流的容错技术以及其相互关系。 在现有解决方案的基础上设计实现了提供容错通信的软件总线平台,并进行 了性能测试分析。 此后展示了基于此容错总线的开发实例。 最后对相关技术进行了总结和展望。 浙江大学硕士学位论文第1 章绪论 1 3 论文组织结构 本论文先对现有的相关技术研究进行一定的分析和综述,主要包括容错技术 和通信中间件的相关理论。接下去分析展示了一个真实的容错总线设计实现以及 在此基础上架构的一个报单处理系统,最后再对实际的系统运行结果进行测试, 并对这一结果进行了分析和总结。其组织方式如下: 第一章绪论,是对论文进行整体性的介绍,并粗略介绍了本文所作的主要工 作和文章结构。 第二章对系统中涉及的相关技术和系统进行了综述和分析,这些技术是设计 和实现容错总线的基础。 第三章介绍容错总线的设计与实现,包括其设计目标、具体实现和性能测试, 从各方面分析了怎样架构一个高可靠性的提供合适开发接口的通信总线平台。 第四章展示了一个基于容错总线的开发实例,详细的说明了如何在容错总线 上快速高效的开发应用。这是一个金融期货领域的项目,首先介绍了背景和相关 技术准备,然后是系统整体架构和各个模块的架构。 第五章总结了本论文的工作,并对容错总线和基于容错总线技术的报单系统 系统架构的进一步发展进行了展望。 1 4 本章小结 介绍了课题背景,论文的主要工作以及组织结构。 2 浙江大学硕士学位论文 第2 章相关领域综述 2 1 容错起源背景 第2 章相关领域综述 随着计算机技术的发展和互联网的普及,当今社会已经步入信息时代,如表 2 1 所示,计算机已经在各个领域得到广泛的应用,并取得了重大的成就。 表2 1 计算机在各领域中的应用 计算机应用领域作用 举例 科学计算大数据量高精度运算高能物理、气象预报等 信息管理加工、管理与操作任何财务管理、物流管理、报表统计等 形式的数据资料 计算机辅助系统采用计算机帮助提高效计算机辅助设计( c a d ) 、制造 率和质量 ( c a m ) 、教育( c a i ) 等 过程检测与控制根据信号对过程进行检自动化控制流水线等 测和自动控制 计算机作为一种高速处理信息的设备,不管是在硬件层面还是在软件层面, 都是有史以来最为复杂的人类智慧结晶。 在硬件层面上,首先,计算机的元件原来越复杂,随着新材料的研究使用和 晶体制造工艺的改进,单个芯片上的集成电路数量日益增加,一块小指甲大小的 芯片已经可以集成上亿单元。其次,当代计算机的体系结构非常复杂,根据冯 诺依曼的计算机体系结构定义,一个基本的计算机系统是由控制器、运算器、存 储器和输入输出设备组成。这么多设备需要协同工作,任何小的差错都可能导 致整个系统失效。 从软件层面讲,作为对人类知识的一种系统的表现和处理方法,软件本身距 3 浙江大学硕士学位论文第2 章相关领域综述 离“完美”还相当遥远。软件的本质是算法、数据结构、函数和它们之间的关系 【1 j ,当知识很复杂时,很难通过计算机语言用形式化的方法把它们合理地表达出 来。现代软件早已不是计算机刚刚发明时几千几万行的规模,单单依靠低级语言 就可以完成,程序开发早己不是个人英雄主义的方式。面对动辄数十力- 行,甚至 几百万行的系统类软件,软件公司往往需要投入数以千计的程序员工作数年才能 完成。当今的开发工具和硬件平台也多种多样,各种各样的高级语言和编译器被 采用。因此软件潜在的故障可能性是无法忽略的。 计算机系统由于硬件物理特性异变,或软件不能完成规定的功能都将导致系 统失效( f a i l u r e ) ,系统失效的后果就是无法继续向外所需的服务。 系统是由于故障导致的,故障( f a u l t ) 是指硬件或软件的错误状态,一个 故障可以用种类、值、影响范围和发生时间来描述。根据不同的标准,可以有多 种方式区分故障。 按逻辑性来分 逻辑故障:造成逻辑值发生变化的故障。 非逻辑故障:造成时钟( c l o c k ) 或电源出错等错误的故障。 按时间划分 永久性故障:调用诊断程序进行故障定位,然后采取纠错措施。 间隔性故障:可以通过更换硬件或软件等途径来达到修复的目的。 偶然性故障:只能靠改善环境条件等努力来减少这类故障失效是指硬件 物理特性异变,或软件不能完成规定功能的能力。 在一些关键系统中,比如金融、电信、能源、民航等领域,计算机提供的服 务不允许出错,一旦出错其成本和代价高的无法承受。这时系统的设计者不仅需 要考虑系统的功能性需求,还需要考虑表2 2 中所示的非功能性需求。 4 浙江大学硕士学位论文第2 章相关领域综述 表2 2 应用系统非功能性要求 可靠性计算机在规定的条件和规定的时间内完成规定的功能的概率。 可维护性在规定的时间内,按照规定的程序和方法进行维修时,保持或恢复 到能完成规定的功能的能力。 可用性可维修部件在某时间具有维持规定功能的能力,即计算机系统的利 用效率,也是系统在执行任务的任意时刻能正常工作的概率。 在长期的实践中,计算机工作者总结出多种可以满足系统非功能性需求的方 法。在设计和制造的环节通过严格的质量和过程控制,设计过程中采用一些常规 的避错排错手段,比如使用形式化的方法论证设计,严格的测试方案测试产品等 等,都可以提高系统的质量,减小不确定性。 但是这些并不能解决所有问题,缺陷与因其而引起的故障间的关系十分复 杂,依据对故障的观测来确定缺陷难度是很大的设计中的残存缺陷大多已经和总 体以及各阶段中形成的文档、资料等建立了密切的联系,难以一举排除。而且在 研制时间上,不允许作旷日持久的检验和修改。 这个时候我们如果希望系统能够容忍故障,即考虑故障一旦发生时能够自动 检测出来并使系统能够自动恢复正常运行,就需要依靠容错设计。 2 2 容错基本理论 容错设计的目的是当出现某些指定的硬件故障或软件错误时,系统仍能执行 规定的一组程序,或者说程序不会因系统中的故障而中止或被修改,并且执行结 果也不包含系统中故障所引起的差错。 冗余是实现容错的主要方法,其本质是在系统结构上通过增加冗余资源的方 法来掩盖故障造成的影响,使得即使出错或发生故障,系统的功能仍不受影响, 仍能够正常执行预定任务的技术。 容错方案按照冗余方式的不同划分。按照冗余的对象分可以分为硬件冗余、 软件冗余、时间冗余和信息冗余,按照冗余的策略分可以分为动态冗余和静态冗 浙江大学硕士学位论文第2 章相关领域综述 余。 下面按照冗余的策略的不同介绍容错的各种主流方法。 静态冗余用备用部件的形式保证在主部件失效的情况下,备用部件能够无缝 的接管,使系统能够继续运行。 故障屏蔽技术主要用于静态冗余,本质上是通过冗余使系统在外界看来拥有 故障屏蔽的特性。 故障屏蔽技术是用来防止系统中的故障在该系统的信息结构中产生差错的 各种措施的总称,其实质是在故障效应达到模块的输出以前,利用冗余资源将故 障影响掩盖起来,达到容错目的。 根据在系统中使用此技术的级别,分为四类【1 4 】:元件级故障屏蔽技术,逻辑 级故障屏蔽技术,模块级故障屏蔽技术,系统级故障屏蔽技术。 前两者都是硬件实现的,模块级故障屏蔽技术是以n 倍冗余码为基础,通为 构成n 模冗余( n m r ,n - m o d u l a rr e d u n d a n c y ) 系统来实现故障屏蔽。系统级故 障屏蔽技术采用多个计算机系统来实现系统的功能,也可称为多处理机或多计算 机系统。常用的结构有均分负载系统结构,主备用系统结构,双机协同系统结构, 紧耦合多处理机系统结构,分布式系统结构,网络结构等等。需要软硬件协调配 合实现。 动态冗余则复杂的多,涉及到之前讲过的故障检测定位技术,还有故障后重 组和恢复技术,整个动态冗余的基本过程如图2 1 所示。 图2 1 动态冗余系统容错的过程 在系统出现错误的时候,我们需要做故障测试( f a u l td i a g n o s i s ) 以检测 6 浙江大学硕士学位论文 第2 章相关领域综述 和定位错误。具体的故障检测技术分为两类,故障检测( f a u l td e t e c t i o n ) 和故 障定位( f a u l tl o c a t i o n ) 。故障检测技术判定系统是否存在故障,一般来说最多 只能找到故障单元,而无法定位故障点。故障定位技术确定故障所在。具体主要 方法有通过冗余资源实现的联机检测和只能在系统停机状态下通过特定诊断程 序检测的脱机检测,像硬件冗余中的检测电路,多版本程序方法中的判决器和模 块恢复方法中检验程序,其目的都是故障检测。 重组是指系统为了保证在故障恢复过程中不需要停顿依然能够有效的提供 服务,切除故障的模块,重新组合剩余模块。 重组根据程度分有两种,比较古老的一种是后援重组,通过设置一组备用部 件以备在出故障时替换出错部件。两种策略,冷备份或者热备份。 另外一种思想是通过合理的设计,使系统在发生故障时不是一下子全部失效 而是以降级的方式失去部分性能或功能。 故障恢复分为向前和向后两种策略。向有矿策略不是通过恢复点保存状态的方 法容错,而是积极的分析错误,校正系统的错误状态,从而使得系统可以恢复正 常继续执行。向后策略按某种约定建立恢复点,当系统遇到错误时即回滚到最近 的恢复点,然后从此正确状态重新开始执行。如表2 3 所示,在广泛使用的技术 中向前策略和向后策略各有优劣,而且各自发展多种被普遍采用的容错方法。 表2 3 采用向前策略和向后策略的比较 向前策略向后策略 优点代价相对小,不需要考虑连锁实现简单,恢复可靠 缺点恢复算法复杂,不易把所有情况考 有备份的时间和空间代价,开销大, 虑周全;显示错误需要防止连锁倒退 实例软件中的异常机制,如预设陷阱恢复块 纠错码日志 表决系统数据库回滚 原子操作 7 浙江大学硕士学位论文第2 章相关领域综述 最后在表2 4 中给出动态冗余和静态冗余的比较,并揭示了两者与软件冗余 和硬件冗余之间的关系。 表2 4 动态冗余和静态冗余的比较 动态冗余静态冗余 只有所有备用元件全部失效时系统才系统内部出现错误时,可不 失效,有更大的隔离灾难性故障的能进行故障检测、定位和系统 力的恢复工作,简单易行 利用程序卷回等手段可消除由瞬时故设计相对简单 特 障引起的错误 占 易于调节后备单元的数量与类型 备用原件只在出错时才启用,可增加 系统平均寿命 相比静态冗余容错能力更易扩展 不适合实时要求高的系统 硬件冗余通过检测电路自动检测调用备用部件 冗余互备 软件冗余回滚,多模块等方法多版本方法,动态或静态备 份的双机或多机系统 一个高可靠性的系统往往需要静态冗余和动态冗余的合理结合。 硬件冗余顾名思义就是在常规设计的硬件之外附加备份硬件,包括静态冗 余、动态冗余。 硬件的静态冗余实现比较简单,但就是采用并联结构,结果输出到表决器n 取1 ,优点是系统可不进行故障检测、定位和系统的恢复工作,省掉了大量的软 件工作,简单易行;缺点是增加了大量成本。 反之其动态冗余实现比较复杂,采用辅助系统作为主系统的热备份,正常状 8 浙江大学硕士学位论文第2 章相关领域综述 态下主系统工作,并对主系统进行故障检测和定位,一旦诊断出故障发生的位置, 系统能进行自动修复,优点是成本相对比较低;缺点是复杂,诊断和修复设计比 较难,可靠性也没有静态冗余高。 软件冗余是指增加用于测试、检错的外加程序模块,针对软件本身的故障, 采用方法去防止由于软件的错误而导致的系统失效。 其静态冗余的实现方式又称软件存储冗余,是把关键的系统程序和应用程序 在系统中多点存储在主存或高速辅助存储器中。在正常状态下,只执行一处或几 处的程序,其它做备份,一旦程序遭破坏,则快速调入备用程序,使系统仍能正 常工作。系统程序和应用程序可采取分布式存储,或集中式存储方式,或两者结 合。 多版本表决法也属于静念冗余。多版本方法提供问题的多个版本的解决方 法,所有的输出通过表决器表决选择出结果输出。其主要缺点是代价昂贵,因为 多个版本程序的开始所需的付出十分大,只有一些可靠性极为严格的系统如火箭 控制系统等才会使用。 反之其动态冗余有多种实现方式。 程序回卷法,通过设置检查点,在其检查点上执行若干验证操作,如果失败, 则回滚,重新执行,可以消除偶发的错误,但是对设计上的永久性错误无能为力。 模块恢复法,将整个过程分成n 个模块顺序执行,每个模块有备用模块。每 个模块执行后进行检查,如果检查不通过,可以选择重复执行几次,如果还不通 过则启用备用模块。缺点是会有时间延迟的代价,不适合实时要求高的系统。 还有使用之上3 种方法混合而成的动态冗余方法。 综上所述,在当今的容错系统中,静态冗余和动态冗余、硬件冗余和软件冗 余相辅相成,互相演绎提供了越来越丰富的容错技术和越来越强大的容错功能。 2 3 软件容错技术概述 软件可靠性是由软件的既定需求来描述的,具体是指软件能保证系统在指定 条件下,在指定时间内完成预定功能的性质。软件可靠性和硬件可靠性是有区别 9 浙江大学硕士学位论文第2 章相关领域综述 的,硬件可靠性的威胁主要来源与长期使用导致的磨损消耗,而软件的所有不确 定性都是与生俱来的,是设计中存在的错误导致的。 图2 2 展示了提高软件的可靠性的各种方法,这里可以看到主要涉及两个技 术,可靠性分析技术和可靠性设计技术【1 1 1 ,下文主要介绍可靠性的设计技术。 图2 2 实现软件可靠性的方法 可靠性设计可以通过避错排错的设计和容错设计完成,避错排错可以通过软 件工程方法和形式化数学模型等方法实现,这里不再赘述。 何谓容错软件? 当软件由于自身的缺陷而陷入故障时,软件能够根据自身的 容错机制屏蔽或克服故障并继续以恰当的方式向外提供服务,即称为可容错的软 件p j 。软件容错借鉴了硬件容错的思想,和后者一样一些基本的对待错误的策略 和思想贯穿了软件容错的整个过程,软件的容错机制包括故障检测算法、故障恢 复算法、故障隔离以及如何在故障发生后继续提供服务。 软件的故障检测主要通过软件断言、异常处理和测试实现【8 】。高质量的软件 有很大一部分代码用于处理异情况,科学合理的测试用例设计能够最大程度的覆 盖软件的潜在错误从而有效的提高软件产品的质量。 塑垩奎堂堡圭兰垡丝苎 蔓! 兰塑茎塑堡堡堕 软件的故障恢复技术包括两种策略,前向策略和后向策叫1 0 1 。前向策略在发 现错误后主动的定位错误并解决错误从而使得软件可以继续正确的工作下去。后 向策略则通过设置还原点,在发生错误时返回到这个还原点,可以有效的解决一 些瞬态错误。 软件故障隔离和继续提供服务同样有两种不同的方式【1 3 】。一种方式是通过冗 余备份替换发生错误的软件部件向外提供服务,另一种方式是服务降级的方式, 即隔离发生故障的部件但是保证整个软件能够继续运行,只是不提供出错部分的 功能或服务质量下降。 软件容错设计的两个基本方法是多版本程序方法和恢复块方法,都是通过设 计多样性实现的。数据多样性是另一种实现软件冗余的途径,即提供多种逻辑上 等价的输入变异执行相同的程序,这种冗余的核心是数据重表达算法【5 】( d a t a r e e x p r e s s i o na l g o r i t h m ,d r a ) ,通过这种方法衍生的软件容错方法主要有n 拷 贝方法和重试块方法。通过多程序版本方法和恢复块方法混合变异也产生了多种 很好的冗余方案,包括接受表决法和一致性恢复块方法。最后介绍多版本方法衍 生的n 自检程序方法,这是一种被广泛的软件容错实现策略。 浙江大学硕士学位论文第2 章相关领域综述 2 4 基于设计多样性的软件容错技术 2 4 1 多版本程序技术 如图2 4 所示,多版本程序技术 3 ( nv e r s i o np r o g r a m m i n g ,n v p ) 是通 过实现同一规格的不同编码实现同时运行,在结果不一致时通过多数表决实现的 一种软件冗余方法。如果结果是多数选举则输出,否则发布警告。优点是不需要 设计专门结果检测程序容易扩展,缺点是设计实现多版本代价昂贵而且难以实 现。 2 4 2 恢复块技术 图2 3 多版本程序设计技术 如图2 5 所示,恢复块技术【1 1 ( r e c o v e r yb l o c k ,r c b ) 事先设置还原点的方 式,然后对执行结果进行结果测试,如果不通过,则退回到还原点执行其中一个 恢复块,再进行结果测试,如此直至通过测试输出结果或则耗尽恢复块宣布容错 失败。优点是对比多版本技术容错系数更高,缺点是不适合实时系统,而且测试 结果的程序很难设计。 1 2 浙江大学硕士学位论文第2 章相关领域综述 图2 4 恢复块技术 2 5 基于数据多样性的软件容错技术 2 5 1n 拷贝程序技术 如图2 6 所示,n 拷贝程序技术【5 】( nc o p yp r o g r a m m i n g ,n c p ) 是通过数据 多样性实现的和多版本方法结构差不多的容错方法。 图2 5 n 拷贝程序技术 1 3 浙江大学硕士学位论文第2 章相关领域综述 2 5 2 重试块技术 如图2 7 所赤,重试块技术1 5 】( r e t r yb l o c k ,r t b ) 也是通过数据变异实现的 一种软件冗余方法,他的优点和缺点和n 拷贝方法相同。 图2 6 重试块技术 2 6 混合衍生的软件容错技术 2 6 1n 自检程序设计技术 如图2 8 所示,n 自检程序设计【4 】( ns e l fc h e c kp r o g r a m m i n g ,n s c p ) 是多 版本程序设计的一种变异,同时也是比较广泛的一种实现,下图所示的两对的n 自检程序设计,每对在输出到表决器之前先比较结果,如果不一致则不会输出到 表决器。其中每对可能是相同版本也可能是不同版本,如果是相同版本,则它也 将是下面接受表决方法一种特殊实现。 1 4 浙江大学硕士学位论文 第2 章相关领域综述 2 6 2 一致性恢复块技术 图2 7 白检程序设计技术 如图2 9 所示,一致性恢复块技术【6 1 ( c o n s i s t e n c yr e c o v e r yb l o c k ,c r b ) 顺序结合了多版本技术和恢复块技术,当多版本失败时系统尝试采用恢复块技术 实现容错,只有两者都失败时系统才失败。 图2 8 一致性恢复块技术 1 5 浙江大学硕士学位论文 第2 章相关领域综述 2 6 3 接受表决技术 如图2 1 0 所示,接受表决技术【7 】( a c c e p t a n c ev o t i n gt a b l e ,a v t ) 是一种 更加严格的多版本技术。多版本表决之前,所有的版本输出都需要通过特定 的接受检验模块,这时候表决器是动态的,规定只有接受表决的输入超过两 个时才是有效表决。 图2 9 接受表决技术 2 7 通信中间件容错技术初探 2 7 1 通信中间件技术概述 首先对通信中间件技术做一个简单的介绍和综述。通信中间件泛指能够屏蔽 操作系统和网络协议差异,能够在异构系统之间提供通信服务的软件。 通信中间件可以屏蔽复杂的通信层,用户可以使用其提供的开发接口开发网 络应用,将主要精力放在业务层的设计。 1 6 浙江大学硕士学位论文第2 章相关领域综述 通信中间件提供的最普遍的三种通讯方式:远程过程调用( r p c ) ,会话编程以 及消息队列方式。 远程过程调用是一种同步通讯模式。通信中间件提供逻辑连接将请求者的过 程调用请求发送给另一端的服务提供者,服务提供者进行相关处理后返回结果给 请求者,请求端被挂起直至收到返回结果。 会话编程是指通信双方通过通信中间件建立的逻辑连接进行同步对话通讯。 消息队列是一种异步通讯模式。通信双方不需要同步尽量减少耦合,通信中 间件提供队列管理功能,发送方可以往队列中存放消息,接收方从队列中获取消 息,双方不存在严格意义上的连接。其好处是简单,通过持久性等措施可以保证 通讯的完整性,缺点是通讯量过大时可能造成阻塞。 好的通信中间件通过适配器的方式封装了应用与通信中间件的通信,新开发 的应用只需要继承或则使用该适配器即可。适配器作为通行中间件的一部分,一 方面它可以分担核心通信层的部分工作,另一方面能够屏蔽内部的复杂通讯形 式,为应用提供简单的开发接口。 2 7 2 在通信中间件中加入容错机制 通信系统包括参与通信参与者和通信网络,容错的通信需要保证通讯过程中 所有消息报文一致、完整、有序。当参与者或者通信网络发生故障时,系统有能 力屏蔽网络故障或则短时间内恢复故障到发生前的状态。 通过合理的设计,通信中间件可以提供容错通信的能力。 首先需要解决的问题是故障发现的问题。所有的通信断开事件都是故障,一 种有效的发现通信断开的技术就是心跳机制,通信参与者可以通过检测心跳判断 通信连接是否完好。 通信故障的屏蔽比较难,一种可行的方式是对所有的参与实现热备份。通信 中间件需要实现自身的热备份,这里一方面需要消息同步,另一方面需要相互检 测心跳以发现故障或则通过增加额外的检测程序来维护状态,一种普遍采用的机 制就是仲裁机制。通信参与者需要实现热备份,这个相对简单,冗余版本并行运 1 7 浙江大学硕士学位论文 第2 章相关领域综述 行即可。 通信系统的故障恢复涉及报文的重发反演。首先,所有的报文需要按照顺序 编号,其次通信中间件需要将所有的消息备份落地,最后所有的通信参与需要记 录自己收到的所有报文序号。 在通信中间件中实现通信容错不应该将额外的负担付诸中间件的使用者即通 讯端,一种适配器的软件设计模式可以有效的解决这种问题【1 8 】,适配器将上述的 心跳机制、报文编号以及记录等所有工作封装在内部,对外提供发送和接收消息 的接口。适配器作为中间件的接口发布,所有基于该总线的应用只需要复用该适 配器即可完成与总线的通讯。这样做的好处很多,不但简化了开发,而且将接口 和具体实现分开,即使通信中间件的内部技术细节发生了改变,只要借口不变也 不会影响到使用者。 2 8 本章小结 本章着重介绍了容错技术。容错技术历来已久,硬件容错的思想先于软件容 错,但是硬件容错并不能解决所有的故障,软件复杂性导致的固有故障必须由软 件自身解决。容错的主要方式是冗余,冗余有两种方式,一种是静态冗余,一种 是动态冗余,各有优劣。最后介绍了软件冗余的几种主流方法,包括多版本方法, 恢复块方法等等。 最后做了一些通信中间件技术的概述,并结合容错阐述了在通信中间件中实 现容错机制的一些理论和做法。 1 8 浙江大学硕士学位论文 第3 章容错总线平台设计与实现 第3 章容错总线平台设计与实现 3 1 背景介绍 容错总线( s w i t c h ) ,也称容错通信平台。容错通信平台有两层概念,其一, 软件总线的概念,实现插件模式的业务应用开发,软件总线是对硬件总线的一种 抽象,它贯穿于整个平台的设计思想中,通过接口适配器,在功能不同的应用模 块之间,建立了一组虚拟的数据传输线。同时根据应用类型的不同,分成不同性 质的服务组。其二,通信容错的概念,容错平台的容错支持有两个层面,一是自 身的容错,通过双物理节点部署,可物理上的单节点故障;单节点双进程部署时, 一定程度上可解决软件的容错( 因为不同状态下运行不同的程序) 。二是对挂接 的应用服务的容错支持,通过对关键服务部署多个实例进程,只要有一个实例进 程可用就能保证服务的可用性,并且可以支持实例的动态扩展。 图3 1 基于集中器的通讯结构 通过图3 1 所展示的抽象化系统目标规划可知,挂接在集中器上的有些应用 服务,需要对客户发出的处理请求消息进行统一排序,然后应用服务对消息请求 进行处理,同时要求集中器对应用服务提供的消息是可靠的。对一个高可用的应 1 9 浙江大学硕士学位论文第3 章容错总线平台设计与实现 用服务,需要对应用服务冗余部署,同时为避免集中的单节点故障,需要对集中 器进行备份,并且要求切换时对应用服务是透明的。 基于以上的应用模块之间通信的泛化考虑,提出了软件总线的产品概念目 标,它为应用模块之间进行数据传输与联系提供了虚拟化的公共通道和统一接 口。 3 2 设计目标 3 2 1 容错设计目标 容错系统主要具有以下必要能力: 处理自身故障。由于容错通信进程采用双进程,可以分别部署在两台物 理机器上,当一台机器停止工作,对使用者来说无任何影响。容错平台重新启动 后,可以恢复到启动前的状态。 应用的故障隔离和屏蔽。如图3 2 所展示

温馨提示

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

评论

0/150

提交评论