第28卷第7期 计算机应用 Vo1.28 No.7 2008年7月 Computer Applications July 2008 文章编号:1001—9081(2008)07—1850—04 基于CORBA的大规模事务处理系统失效检测机制的实现 贺细平 ,朱幸辉 (1.国防科学技术大学计算机学院,长沙410073;2.湖南农业大学信息科学技术学院,长沙410128) (hexiping@hunau.net) 摘要:为了更好地管理大规模事务处理系统,对基于CORBAR的监测系统中失效检测机制的XML实现进行了 研究。设计了主从式失效检测器,实现了服务对象失效检测、应用服务器失效检测、数据库失效检测。实际的运行表 明这些机制运行良好,为系统监测提供了有效的手段。 关键词:CORBA;事务处理系统;失效检测;服务对象;XML 中图分类号:TP311.52 文献标志码:A CORBA.based implementation of invalidation detection mechanism in large scale transaction processing system HE Xi—ping .ZHU Xing—hui (1.School ofComputer Science,National UniversityofDefense Technology,ChangshaHunan 410073,Chian; 2・School ofInformatoin Sciecne and Technology,HunanAgricultural University,ChangshaHunan 410128,Chian) Abstract:In order to manage the large scale transaction processing system more efficiently,XML implementation of invalidation detection mechanism in momitoring system,based on Common Object Request Broker Architecture(CORBA), was discussed.The primary-slave invalidation detector was designed to realize service object invalidation detection,application sever invalidation detection,database invalidation detection were designed and realized.These mechanisms are under good condition in the practical running,and provide effective means to system monitoring. Key words:Common Object Request Broker Architecture(CORBA);transaction processing system;invalidation detection;service object;XML 0 引言 错误。特别当对象很多时,如果没有工具的支持,管理员是不 可能对系统进行有效的监测。本文讨论的失效检测是这类大 大规模事务处理系统可以看作是一个支持高速并行数据 规模事务处理系统的监测任务中最重要方面。 加载、分布式数据存储和在线分析处理的分布式海量信息事 本文所涉及的系统中服务器节点已经达到64个,服务对 务处理中间件系统平台,实际上是一个规模相对庞大的分布 象的种类达到20个,对象实例数目达到104个,并且还在不 式系统。分布式计算技术已渗入到金融、电信、商业等应用领 断地扩大之中。其分布计算环境采用了目前被业界广泛支持 域;与此同时,各领域的实际需求又强烈地促进了分布式计算 和应用的公共对象请求代理体系结构(CORBA),并使用符合 技术的发展,对分布式计算环境提出了更高的要求 I4 。 CORBA标准的StarBus 作为系统开发和运行平台,以保证 由于实际应用需求的规模和复杂度的不断增加,分布计 系统的可扩展性、可维护性、可配置性和对异构性的要求。 算系统的组成部分变得愈加庞大和复杂,因此,如何监测和管 CORBA是由对象管理组织(Object Management Group, 理这类庞大的计算系统,使之既能提供稳定健壮的服务,又便 OMG)提出的应用软件体系结构和对象技术规范 ,它是 于管理者监测系统的状态,是研究者关注的热点问题 。 开放的、独立于供应商的支持网络应用程序互操作的规范。 目前大规模事务处理系统大多采用了应用服务器和服务 其核心是一套标准的语言、接口和协议,支持异构分布应用程 对象双层冗余技术,一方面通过增加数据和计算的冗余度,提 序间的互操作性及独立于平台和编程语言的对象重用。 高系统的可靠性;另一方面,多个服务器并行地响应客户请 CORBA是一个异质网络分布对象的交互标准。本文的大规 求,提高系统的吞吐率。然而随着系统规模的扩大,服务对象 模事务处理系统就是基于CORBA的分布对象计算技术的面 的增多,也给系统的监测带来问题:对于运行多个服务对象构 向海量信息存储、管理、查询和分析处理的事务处理中间件。 成的复杂应用系统,当服务对象规模达到一定程度时,如果一 个服务对象的效率下降或出现错误,由于其他同类服务对象 1 监测系统体系结构 还可以正常工作,整个系统除了性能少许下降外,不会表现更 基于CORBA的分布式对象监测系统 是一个集信息采 多异常,但如果不进行修复,将破坏冗余服务的条件和状态, 集与传输、数据处理和决策支持于一体的综合系统。 导致可靠性的下降。因此管理员必须及时检测出这种错误, 在文献[11]提出系统设计基础上,基于遵循CORBA2.3 并恢复到正常状态。人工逐个检查每个节点的每个进程执行 规范的StarBus平台 ,具体实现了大规模事务处理监测系 情况以及每一个对象的状态既费时又费力,而且也很难定位 统。 收稿El ̄1]:2008—01—02;修回日期:2008—04-03。 基金项目:国家自然科学基金资助项目(60773021)。 作者简介:贺细平(1973一),男,讲师,博士研究生,主要研究方向:生物信息学、并行计算;朱幸辉(1971一),男,副教授,硕士,主要研究 方向:分布式计算。 维普资讯 http://www.cqvip.com
第7期 贺细平等:基于CORBA的大规模事务处理系统失效检测机制的实现 作。 1851 其中,服务代理sA(Server Agent):依附在服务对象实例 上的探测器对象,对服务对象实例及ORB本身进行监测并获 取被监测实体的通信消息以及相关信息。 本机管理者HM(Host Manager):HM通过sA收集驻留 1)openXmlFile():加载指定的XML文档。 2)queryServerlnfo():获取所有应用服务器配置信息。 3)queryDblnfo():获取所有数据库服务器信息。 4)queryDeploylnfo():查询指定服务器上对象配置信息。 5)queryObjTypelnfo():查询指定类型的对象配置信息。 在本服务器主机上所有服务对象实例信息,收集主机本身的 运行状态信息,并经过数据预处理后将结果信息传递给监测 中心;接受监测中心发出的指令并下达到本主机的每个代理 服务SA,使SA按照用户的要求工作。 3 主从式失效检测器 3.1失效监测的基本概念 一图形用户界面GUI(Graphical User Interface):接受信息 管理中心提供的信息并将系统状态以各种可视化形式呈现。 个部件失效是指它的行为与其规范不再一致 。本 在本系统的采用主从式失效检测机制实现了对系统中的 文讨论的是fail—stop失效模型,在该模型中,一个部件或者正 服务对象、应用服务器、数据库的失效检测。 确工作,或者只是简单地停止和崩溃,并不会执行不正确动 作。 3.2失效监测的基本模式 传输“心跳”模式:由被监控对象定期地向监控对象发送 心跳信息,通告它们依然存活,如果超过某一期限没有收到 “心跳”,监控对象则认为其失效,相当于被监控对象向监控 对象“推”(push)失效事件,我们称之为“推”模式。该模式下 监控对象和被监控对象之间发送one—way消息,所以该方法 比较高效。该模式下监控对象和被监控对象之间的消息交换 如图3所示。 监控对象 图1 监测系统的体系结构 被监控对象0 2 监测系统数据存储机制的实现 图3传输“心跳”中的监控消息 监测系统采用了两种数据存储方式:数据库方式和数据 轮询检测模式:监控对象定期轮循检查被监控实体,询问 文件方式。对基本的数据采用数据库方式存储,而监测系统 它是否存活,如果被监控对象作出应答,则意味着它没有失 对系统配置的存储采用现在较为流行的XML数据文件存储 效。相当于监控对象从实体“拉”(pul1)失效事件,我们称之 技术。它的实现方式灵活,有较高的存储效率和存取速度。 为“拉”模式。该模式下监控对象和被监控对象之间是two— 因此,在结构化的XML文档中,信息按层次化的树型结构组 way的消息,因此比“推“模式低效,但由于被监控对象是被动 织,适合大规模事务系统的配置存储结构。 的,所以该模式更容易被应用开发者使用,它们无需任何有关 XML文档通过DOM(Document object Mode1)接口进行 失效监控所需的信息。该模式下监控对象和被监控对象之间 访问和操作,DOM是一个对象化的XML数据接口,它由一组 的消息交换如图4所示。 对象组成,DOM的使用使得对XML文档中节点的访问和操 作更加简单,同时DOM提供了支持VB Scirpt、JScript、VB、VC 监控对象 等多种语言的编程接口,可以很方便地对XML文档进行读 取、遍历、修改、添加和删除操作 。根据大规模事务处理系 被监控对象0 统的实际特点,本文采用的DOM节点树的结构如图2所示。 图4轮询检测中的监控消息 两种监控模式各有优劣,监控对象和被监控对象之间具 体采用哪种交互类型取决于应用程序的需求。 3.3主从式失效检测器的设计模型 监测系统采用了主从式失效监测机制来确保失效检测的 可靠性,当主失效检测器监测到系统某资源失效时启动从失 效检测器进行确认,只有主从检测器均返回失效结果时,才认 为该资源失效。正常状态下监测系统运行的是主检测器,只 有当发现资源失效时才启动从检测器进行确认,失效检测的 系统开销主要是由主检测器消耗的,因此在设计失效检测器 时应该尽量使主检测器的开销最小。 图2 DOM节点树的结构 3.4主失效检测器的设计 通过DOM接口,可以按指定方式对节点树进行遍历,找 由前述可知,系统中每个服务对象实例和i L倚理者 到相应节点后即可对数据进行输入输出等操作。 HM启动时必须向应用级容错与负载平衡服务(Application 监测系统对配置文件的访问操作由XmlManager类完成, level Fault—tolerant and Load—balancing Service,AFI_S)注册, XmlManager类提供了下列成员函数对XML文档进行读取操 AFLS将定期检查向它注册的对象是否失效,根据AFLS的这 维普资讯 http://www.cqvip.com l852 计算机应用 第28卷 种特点,在设计主失效检测器时,可将一部分失效检测任务交 给AFLS来完成,通过AFLS的相关接口查询各对象实例和 4)若发现某一对象实例失效,则调用FailStopManager类 中的startObjValidate方法,该方法负责调用HM上的 LocalHostManagerimpl类中HM—ObjLiveReport()方法。 _HM是否失效,这种设计实现简单,同时可以减少系统通信开 销。数据库的失效检测则由失效检测器直接调用oracle提供 的接口与每个数据库建立一次链接,若链接不成功则表明该 5)HM—ObjLiveReport成员函数负责查询对应的对象实例 是否失效,即调用该对象实例的is—alive(),如果在规定的时 数据库失效。 主失效检测器的结构如图5所示。 图5主失效检测器 3.5从失效检测器的设计 从失效检测器的设计采用两层检测机制,监测中心负责 检查HM的失效,主机管理者HM负责监测本应用服务器上 的对象实例是否失效,即定期轮询本主机上的每个服务对象 实例的存活状态。数据库失效检测采用基于空表的查询方 法,每个主机的HM都向某一数据库的空表发出请求,只要在 规定的时间内有一个HM与数据库建立链接成功,就认为该 数据库在正常运行。 从失效检测器的结构如图6所示。 图6从失效检测器 3.6主从式失效检测器的具体实现 主要实现类及其功能。失效检测主要由监测中心的 FailStopMananger类、驻留在各服务器主机上的 1.ocalHostManager_impl类完成。与失效检测紧密相关的还有 XmlManage类,各类的主要功能如下: 1)XmlManage类。实现从系统配置文件中读取配置信 息。 2)FailStopManager类。失效管理中心,完成整个系统的 失效监测,并在系统资源出现失效时向管理员报警。 31)1.ocalHostManager—impl类。完成本应用服务器的管 理,包括失效管理、本机对象实例状态管理、本机状态信息管 理等。 4服务对象失效监测 服务对象失效监测主要监测系统中的服务对象是否失 效,通常情况下是由主失效检测器来完成,当主失效检测器发 现某对象实例失效时,才启动从失效检测器中的相关机制进 行验证,具体实现步骤如下: 1)通过XmlManage类中的queryDeploylnfo(CString serverName)方法得到每个应用服务器上的对象配置信息。 2)调用AFLS接口lookup—ObjInfo byNode(in stirng ip)得 到当前系统中每个服务器上正常运行的对象信息。 3)将对象配置信息与对象实际运行信息比较获取对象 失效信息。 间得不到回答,则认为该对象已经失效同时向失效管理中心 发出确认消息。 6)失效管理中心接到HM传来的确认失效信息后,将监 测的结果送往报表显示类TableList,同时启动报警机制。 5 应用服务器失效监测 应用服务器的意外断电或者操作系统崩溃等都可能导致 该服务器失效,服务器级失效检测通常通过远程方法调用,存 在调用失败的可能性,也许被检测的服务器并没有失效,而只 是由于网络的暂时I生堵塞致使远程方法调用失败。服务器级 的失效恢复的代价非常大,通常会引起服务器所在的大量对 象的恢复,所以必须尽量避免误判。我们采用主从检测机制 来尽量增强判断的准确性,具体实现步骤如下:. 1)通过XmlManage类中的queryServerlnfo()方法获取系 统所有服务器配置信息,并保存在监测中心的服务器列表 Hnllist中。Hnllist=(serverNal/le;status;max—load;current— load;objnum),其中serverName为服务器名,status为服务器 存活状态。 2)通过AFLS接口lookup—ObjInfo—byFunction(in stirng fname)得到当前系统中每个主机管理者HM的信息,fname为 HM在AFLS的注册名,如果HM正常则其所在服务器必定没 有失效。 3)将得到的HM信息与服务器列表比较,获得服务器失 效信息。 4)若发现某服务器失效则启动从失效检测器中相关机 制,即有监测中心向该服务器上的HM发出查询信息,若在规 定时间内得不到回答,则怀疑该服务器失效。 从上面的检测步骤可以发现,判断服务器是否失效是以 该服务器上的HM是否失效作为标志的,然而HM失效并不 能完全代表该服务器失效。例如某服务器上的HM本身因为 某种原因停止,但服务器并未失效,该服务器上的服务对象实 例依然正常。因此,如果出现上面主从两次检测均判断失效 的情况下,还需要进行下面的步骤确认。 5)由于应用服务器的失效必然会引起部署在该服务器 上的所有对象失效,导致AFLS将该服务器上的对象实例从 对象列表中移除,因此监测系统可以通过调用AFLS接口 lookup_ObjInfo_byNode(in stirng ip),查看该服务器上的对象 是否全部失效来最后确定服务器的失效。 例外的情况:某服务器上的HM失效,同时其上的所有服 务对象实例也均失效,但服务器本身未失效。这种情况下检 测系统会误报服务器失效,当然这种现象发生的可能性极少, 事实上出现这种情况的话,对系统来说该服务器也已经没有 存在的意义了。 6数据库失效监测 数据库失效检测由FailStopManager类中的DBManager方 法实现,具体步骤如下: 1)通过XmlManage类中queryDblnfo()方法获取系统所 有数据库配置信息。 维普资讯 http://www.cqvip.com
第7期 贺细平等:基于CORBA的大规模事务处理系统失效检测机制的实现 1853 2)调用oracle提供的接口InspeetDb()与每个数据库建 是对象级的。软构件(Software Component)技术是增大系统 立链接,若返回值为0,表示链接成功,若返回1表示链接失 可重用粒度和管理粒度、改善系统可重用性和可管理性的主 败。 流技术,因此基于构件级的失效检测机制有待进一步的研究。 3)若发现某数据库无法链接成功,失效管理中心会尝试 参考文献: 多链接几次,若仍然无法成功则对该数据库表示一次失效怀 【11 李小勇.大规模分布式环境下动态信任模型研究【J】.软件学 疑。 报,2007,18(6):1510—1521. 4)一次失效怀疑并不能代表该数据库一定失效,由于网 【2】KIM H C,NAIR V S S.Software fault tolerance for distributed ob— 络的一时的阻塞或者监测中心与该数据库之间网络连接失败 jeer based computing[J】.ouma/of Systems and Software,2000,39 都可能引起这种情况出现,因此需要采用了从失效检测器的 (2):103—117. 相关机制来确认该失效是否可靠。 【31 GAMPEL O.Workload management,IBM Component Broker Con— 5)DBManager通知所有服务器上的HM上的 neetor Overview【J/OL】.【2006—12—10】.http://www.ibm. corn/public/pubs/bookmgr/redbooks/一sg242022.book. LocalHostManager—impl类中的HM—DbLiveReport()方法,每个 【41 仲盛,汲化,谢立.基于多服务器的分布对象系统的设计与实现 HM—DbLiveReport()方法均向怀疑失效的数据库发出空表查 【J】.计算机学报,1998,21(Z):218—224. 询请求,然后将查询结果返回失效管理中心,将所有结果进行 【5】 KROEGER R.Automated CORBA—based Application Management 或操作,只要有--一个HM与该数据库链接成功,就认为该数据 【C】//DAIS 99.Helsinki,Finland:【s.n.】,1999. 库仍然有效。 【61 BABU S,SUBRAMANIAN L,WIDOM J.A Data Stream Manage— 6)若所有返回的结果都认为该数据库失效,则将监测的 ment System for Network Trafifc Management[CJ//NRDM.Santa 结果送往报表显示类TableList,并发出报警。 Barbara,CA:【s.n.】,2001. 值得注意的是失效检测中超时值的选择对于失效检测达 [71 李永丽.基于CORBA的分布式应用服务器的设计与实现【J】. 到正确性和完整性的能力非常关键。短的超时时间使得监测 东北师大学报:自然科学版,2007,39(2):46—49. 系统可以很快检测到失效,但是增加了错误判断的概率,可能 【8】 国防科技大学计算机学院网络所.分布计算软件平台StarBus 导致破坏正确性。因此,在反应时问(短超时)和正确性(长 3.0程序员指南手册【M】.长沙:国防科大学出版社,2002. 超时)之间存在折衷。 【9】苏洋.软件新技术CORBA【EB/OL】.【2008—01~02】.http:// ersource.51cram.corn/NewTech/NcO11.htm?ID:256. 7 结语 【10】OTS Speciifcation 1.2【EB/OL】.【2008—01—02】.http://www. omg・org・ 随着大规模事务处理系统规模的不断扩展,解决管理问 [I】1朱幸辉,杨树强.基于CORBA的分布式对象监测系统的研究 题的前提和依据是对系统的运行情况进行有效监测和分析。 与实现【J】.计算机应用研究,2005,22(10):39—41. 本文对基于CORBA的大规模事务处理监测系统中的主从式 【12】曾春平,王超,张鹏.XML从人rqN精通【M】.北京:希望电子出 失效检测机制的设计与实现进行了研究。本机制的检测粒度 版社,2002. (上接第1843页) peratives and challenges【J】.Ad Hoc Networks,2003,1(1):l3— 64. 【2】HOLLOT C,MISRA V,TOWSLEY D.On designing improved CON trollers for AQM touters supporting TCP flows[CJ//Proceedings of the INFOCOMM 2001.Alaska:IEEE Computer Society,2001: 1726—1734. 【3】 吴启祥,胥布工,彭达洲.基于微分先行Pl的主动队列管理算 法[J】.计算机应用,2004,24(11):16—18. 时 1/s 【4】 钱艳平,李奇,刁翔.预测PI时滞网络拥塞控制算法设计及性 图5 PI算法和PID算法的队列长度曲线 能分析【J】.控制理论与应用,2006,23(2):161—168. 4 结语 【5】LEE C H.A survey of PID controller design based on gain and phase margins[J】.International Journal of Computational Cognition, 传统的PID工程整定方法往往只提供结果,缺乏稳定的 2004,2(3):60—100. 理论依据。本文根据Ad Hoc网络环境的特点,分析了带时滞 [6] RFC2309,Recommendations on queue management and congestion 环节的TCP/AQM被控对象,针对不同的 ,通过在 。一 平 avoidance in the lnternet[S1.1998. 面上绘制PID控制器的稳定边界线,分别得出了k。一k 平面 【7] MISRA V,GONG W B,TOWSLEY D.Fluid—based analysis of a 上的PID算法稳定区域。通过与PID控制器传统整定方法的 network of AQM routers supporting TCP flows with an application to 比较,稳定区域分析为TCP/AQM时滞系统的优化设计提供 RED【C]//Proceedings of the ACM SIGCOMM.Stockholm:ACM Press,2000:151—160. 了理论依据。Matlab和NS2仿真表明,稳定区域分析可以有 【8]HOLLOT C,MISRA V,TOWSLEY D,el a1.A contorl theoretic a- 效辅助PID控制器设计,为进一步设计优化Ad Hoe网络的改 nalysis of RED【C]//Proceedings of the IEEE INFOCOM.Anchor- 进PID算法带来了方便。 age:IEEE Press,2001:1510—1519. 参考文献: 【9]FALLK,VARADHAN K.The Ns manual【EB/OL].【2002—04 【1] CHLAMTAC I,CONTI M,LIU J.Mobile Ad Hoc networking:im- —101.http://www.isi.edu/nsnam/ns/doc/index.htm1.
因篇幅问题不能全部显示,请点此查看更多更全内容