(计算机科学与技术专业论文)corba中间件协议层优化研究.pdf_第1页
(计算机科学与技术专业论文)corba中间件协议层优化研究.pdf_第2页
(计算机科学与技术专业论文)corba中间件协议层优化研究.pdf_第3页
(计算机科学与技术专业论文)corba中间件协议层优化研究.pdf_第4页
(计算机科学与技术专业论文)corba中间件协议层优化研究.pdf_第5页
已阅读5页,还剩51页未读 继续免费阅读

(计算机科学与技术专业论文)corba中间件协议层优化研究.pdf.pdf 免费下载

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

文档简介

摘要公共对象请求代理体系结构( c o r b a ) 允许分布式应用程序进行交互,并且具有操作系统、网络协议、语言无关性,因此已在商业的分布式计算环境中得到广泛应用,但是在高负荷并发通信的应用环境下,c o r b a 在处理并发请求时的性能比传统的s o c k e t 协议逊色不少。这成为c o r b a 在更多领域特别是性能敏感领域取得突破的一个瓶颈。本文在充分研究c o r b a 中间件协议g i o p ( 通用对象请求代理间协议) 的编码、g i o p 消息在o r b 中的传送过程及其对网络性能影响的基础上,针对g i o p 协议头封装的过多冗余信息造成的服务器编码负载和网络负载的增加,采取了裁减协议头无效信息的方法;针对字节序转换集中在服务器端造成服务器端c p u 数据处理效率低下,提出了将字节序转换的任务交由客户端执行的优化策略。最后,搭建了一个分布式c o r b a 平台,利用压力测试原理得到该平台在到达性能瓶颈时的用户并发数并设置为系统的输入参数。通过测试在服务器高负荷的情况下采用以上优化技术时的响应时间和c p u 利用率对比状况,验证了采用以上技术后对c o r b a性能起到一定的改善效果。关键词:c o r b a ;协议层;中间件;性能a b s t r a c tc o m m o no b je c tr e q u e s tb r o k e ra r c h i t e c t u r e ( c o r b a ) h a sb e e ni naw i d eu s ei nc o m m e r c i a ld i s t r i b u t e dc o m p u t i n ge n v i r o n m e n t ,f o ri ta l l o w st h ed i s t r i b u t e da p p l i c a t i o n si n t e r a c t ,r e g a r d l e s so fi t so sp l a t f o r m ,p r o t o c o lo rl a n g u a g e ,b u tc o r b as h o w sap o o rp e r f o r m a n c ec o m p a r i n gw i t ht h et r a d i t i o n a ls o c k e tp r o t o c o lu n d e rh i g h l o a dc o n c u r r e n tc o m m u n i c a t i o ne n v i r o n m e n t ,w h i c hb e c o m e sab o t t l e n e c kf o rc o r b at og e tab r e a k t h r o u g hi nm o r ef i e l d s ,e s p e c i a l l yi nap e r f o r m a n c e s e n s i t i v ef i e l d s u n d e raf o u n d m i o no fs t u d y i n gt h em a r s h a la n dd e m a r s h a lo fg e n e r a li n t e ro r bp r o t o c o l ,t h et r a n s i t i o np r o g r e s so fg i o pm e s s a g ea n di t sa f f e c t i o n so nn e t w o r kp e r f o r m a n c e ,am e t h o do fr e d u c i n gu s e l e s si n f o r m a t i o ni sp r o p o s e da i m i n ga tt h es e r v e r sm a r s h a l l i n gl o a da n dn e t w o r kl o a di n c u r r e db yt h ee x c e s s i v ei n f o r m a t i o ni ng i o pm e s s a g eh e a d e rp a c k a g e ,a n dam e t h o do fl e t t i n gt h ec l i e n tp r o c e s sb y t eo r d e rc o n v e r s i o ni sp r o p o s e da i m i n ga tt h ep o o rp e r f o r m a n c eo fc p u sd a t ap r o c e s s i n gi n c u r r e db yi m m e r s eb y t eo r d e rc o n v e r s i o n b a s e do nt h ea n a l y s i sa b o v e ,t h i sp a p e ri m p l e m e n t sac o r b ap l a t f o r ma n dg e tt h ec o n c u r r e n tn u m b e r sw h i l eb o t t l e n e c ko ft h es e r v e ri sa r r i v e do nt h ep r i n c i p l eo fs t r e s st e s t s c o m p a r i n gw i t ht h er e s p o n s et i m ea n du s er a t eo ft h ec p uw h i l et h es e r v e ri so nah i g hl o a d ,i ts h o w sa no b v i o u se f f e c ti nc o r b a sp e r f o r m a n c ew i t ht h em e t h o d sa b o v e k e yw o r d s :c o r b a ;p r o t o c o l ;m i d d l e w a r e ;p e r f o r m a n c e原创性声明本人声明,所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得中南大学或其他单位的学位或证书而使用过的材料。与我共同工作的同志对本研究所作的贡献均已在论文中作了明确的说明。作者虢衅吼一年上月且日学位论文版权使用授权书本人了解中南大学有关保留、使用学位论文的规定,即:学校有权保留学位论文并根据国家或湖南省有关部门规定送交学位论文,允许学位论文被查阅和借阅;学校可以公布学位论文的全部或部分内容,可以采用复印、缩印或其它手段保存学位论文。同时授权中国科学技术信息研究所将本学位论文收录到中国学位论文全文数据库,并通过网络向社会公众提供信息服务。作者签名:导师签名垫丝垒 日如:2 q q 窆年月盟日硕士学位论文第一章绪论1 1 研究背景第一章绪论弟一早珀v 匕随着互联网的不断发展,人们已不单纯满足于计算机间的互联,让应用程序联结起来成为下一步的目标,在分布式环境下,人们无需安装种类繁多的应用程序,只需从浏览器中下载一个插件,就可以向远程的服务器提出服务请求,互联网的出现解决了电脑之间的互联,而中间件的出现则是为了解决软件间的互相通信。以往丌发的软件系统只能在企业系统环境下使用,因为操作系统、协议、编程语言的异构性,与系统外的软件无法通信,成为一个个的信息“孤岛”,造成已有的软件无法被其他系统重用,遗留系统与新系统的融合困难。中间件试图在不同的软件间搭建一个互相通信的平台,让不同的软件系统以一种通用的接口语言、协议进行交互,在分布式系统中取得了广泛的应用。自1 9 9 1 年对象管理组织( o b j e c tm a n a g e rg r o u p ,简称o m g ) 首次发布公共对象请求代理结构( 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 ,简称c o r b a )规范c o r b a l 0 以来,c o r b a 中间件作为分布式计算最完善解决方案的代表,在移动通信、金融等领域获得了广泛应用,c o r b a 正是为了满足因特网的需要,实现软件全方位集成而设计的。分布式软件丌发需要解决一系列的兼容问题,到目前为止,c o r b a 是解决以下五个跨越问题的唯一方案:( 1 ) 跨平台。未来的软件分布在更多不同类型的平台上,比如各种手持设备、大型机、笔记本、嵌入式产品等等;( 2 ) 跨操作系统。除了微软的w i n d o w s 操作系统,还有u n i x 家族、主机系统和嵌入式平台上种类繁多的小型操作系统;( 3 ) 跨语言。至今为止,还没有一种通用的万能编程语言能解决软件开发的所有问题,每种语言都有自己擅长的领域,需要一个平台能让不同语言编写的软件互相通信以各取所长;( 4 ) 跨协议。因特网是一个异质结构的网络,在不同的区域会有不同的网络结构、传输协议,为使软件运行时具有数据、方法共享性、操作透明性、集成软件时必须考虑协议不同带来的不便;( 5 ) 跨版本。用户对软件功能的需求总是在逐步增加,每次变化都会要求软件工程师重新编写程序模块。分布式软件开发会给版本的更新带来不便,在因特网上必须实现版本的透明性。硕士学位论文第一章绪论随着网络带宽的进一步扩大,服务器端数据处理压力会进一步增加,c o r b a以前在低速网络中的未明显表现出来的低效率乜3 将会进一步暴露,用户的数量持续增长,而他们对服务质量的要求越来越高,如何在向用户提供便捷、丰富业务的同时保证系统的服务质量成为一个巨大的挑战,如不及时解决这些问题,将影响到c o r b a 在未来高速网络中的应用。1 2 国内外研究现状a n i r u d d h as g o k h a l e 与d o u g l a sc s c h m i d t 在高速a t m 网络中测试了c o r b a 的延迟性,证实传统的c o r b a 应用在高速网络的性能敏感应用程序中会产生明显的开销1 ;a n i r u d d h as g o k h a l e 与d o u g l a sc s c h m i d t 在高速网络中测量c o r b a 延迟时提出引起c o r b a 延迟的三个来源:长链的内部对象请求代理( o b j e c tr e q u e s tb r o k e r ,简称o r b ) 函数调用,更多的表示层转换和数据拷贝,未经优化用于网络读写的缓冲区算法h 1 ;r o b e r t a a $ 1 p a u l or m m a c i e l 等人用随机p e t r i 网测试了c o r b a 并发控制服务的性能1 ;武汉科技大学的宋俊描述了一个基于c o r b a 的网络测量系统的体系结构和模型瞄1 。不少人进一步研究造成c o r b a 性能低下的原因。w e i l it a o 和s h i k h a r e s hm a j u m d a r 针对基于应用层的性能优化,提出一系列指导方针,关注四个不同的方面对性能的影响:连接建立延迟、函数在服务器的存放位置、将对象打包给服务器、负载均衡阳1 ;a n i r u d d h as g o k h a l e ,d o u g l a sc s c h m i d t 首先列出s u n s o f l 的i i o p 版本的公共域实现,然后通过在高速a t m 网络中测量传送复杂类型数据时的性能指出s u n s o f ti i o p 实现的开销,最后经验性地验证了对i i o p 系统性优化带来的益处口1 ;国内也在这方面做了不少工作,如北京邮电大学的鲁波等从c o r b a产品矛n c o r b a 应用开发者的角度,总结出七个造成c o r b a 性能低下的原因:未经优化的表示层转换、数据复制及存储管理,接收器侧低效率的消息分发,请求消息中携带的额外控制信息,网络适配器的设计效率低,与i o 子系统的不适当集成,o r b 传送协议的实现效率低,缺乏与o s 的正确集成m 1 ;同济大学的李启炎等人结合c o r b a 体系结构特点和c o r b a 规范,给出一些在开发c o r b a 应用的过程中可采取的优化策略阳1 ;浙江大学人工智能研究所的黄启春等人提出了影响性能的重要因素:远程激发数量、调用模式、消息尺寸、不同i d l 数据类型的打包开销并通过实验进行验证引。因为c o r b a 规范中偏重于对跨平台等分布式计算的解决,造成c o r b a 过于复杂和性能低下,随后更多针对性能改进的研究开始兴起。在c o r b a 的g i o p 协议层的研究主要集中在g i o p 与其他协议的映射儿1 2 1 和g i o p 协议的可配置化方向n 3 【1 。c o r b a 在嵌入式系统中的成功应用使得它在性2硕十学位论文第一章绪论能优化的潜力得到了验证n 钉1 1 引,比如实时c o r b a 产品t a o 在电力系统中的应用n 引;c a t h yh r u s t i c h 使用目标接口的o r b e x p r e s sc o r b a 作为实时系统的引用实现,满足了嵌入式开发人员对高性能c o r b a 的要求啪1 。在缓冲区优化方向,sw a g n e r , zt a r i 提出一种缓冲区方法能优化远程对象请求调用瞳;r k o r d a l e 和m a h a m a d 等人在1 9 9 6 年通过描述和设计一个具有对象缓冲功能的f l e x 系统,提出对象缓冲功能必须实现在c o r b a 规范中口2 1 ;s t e p h e nw a g n e r 与z a h i rt a f t 提出了一个优化默认的远程c o r b a 客户端的调用行为的缓冲方法,该方法用于缓冲区存储、基于对象的数据传送和复制管理,随后,z a h i rt a r i 与h e r r yh a m i d j a j a 等人发布了一个用于c o r b a 系统的缓冲方法,该方法包括一个采用优化的最近使用算法( l r u + ) 通过一个排序进程减少系统开销心4 i ;他们又在2 0 0 2 年提出一种缓冲方法用于解决对象移除和路由两个问题,并在j a c o r b系统中实现了该方法业引。因为在分布式计算的实际应用中不完全是异构环境,因此出现了关于有限异构对性能影响的研究。i h i a iy u j i 与s a e k it o s h i a k i 在c r i s p o r b 中使用一个带有智能函数系统区域网络( s a n ) 进行有效的数据转换,相l t i i o p ,能同时在s a n幂f l t c p 间自动选择网络心6 。;i m r a na h m a d 和s h i k h a r e s hm a j u m d a r 采用“立交桥模式”,通过截取器注入代码实现有限异构以达到高性能比引;w a i k e u n gw u 与s h i k h a r e s hm a j u m d a r 提出一种立交桥原型,无需修改源代码就可达到有限异构的目的啪3 ;s h i v a k a n tm i s h r a 与n i j as h i 设计了一个“即需即用c o r b a 技术,预先检测c o r b a 方式操作是否必须,否则就跳过c o r b a 调用以节约丌销比引。针对不同的中间件体系结构框架,a b d u l f a t a h ,i m a j u m d a r , s 比较了三种客户代理服务器架构的性能。州;e k a is h e n 等人根据h a n d l e d r i v e n 模式与f o r w a r d i n g 模式的不同提出了一种自适应中间件原型,能够根据情况重发引用或将整个请求转发给服务器以发挥两种模式各自的优点。伽;i s t a b r a ka b d u l f m a h l h较了三种架构“h a n d l e d r i v e no r b ,f o r w a r d i n go r b ,p r o c e s sp l a n n e r ,提出性能比较原型和一个自适应中间件。珏1 ;d i o n i s s i sv a s s i l o p o u l o s 等人比较了c o r b a系统与当今流行的j a v a b e a n s $ 1 w e b j j 艮务的性能差异盼3 。;多核c p u 技术的普遍应用使得在普通企业中采用并行计算的可能,m i n gh u o 等人采用并行架构,通过使用并行服务器调用以提高性能口4 1 。近几年来,负载均衡功能在平衡服务器间负荷时已成为常规配置,因为可增加的服务器数目不受限制,能从根本上解决单个c o i 也a 服务器对越来越多的网络请求流量的不堪承受的负荷。f 5 公司的t m o s ,提出了四层网络负载均衡技术,取得了巨大成功并成为负载均衡领域的领导者。o s s a m ao t h m a n 与c a r l o so r y a n描述了c o r b a 负载均衡的一些策略和架构,设计了一个c o r b a 负载均衡的服硕士学位论文第一章绪论务,提供了一些性能基准;西北工业大学的杨刚等人分析了传统的基于c o r b a的负载均衡设计模式,提出了一种基于c o r b a 白适应的负载均衡服务设计模式m 3 ,而潘慧芳等人分析了现有的基于c o r b a 的负载均衡技术,研究了一个基于c o r b a 的可靠的负载均衡服务( r l b s ) 口7 1 。另外,g u i j u nw a n g 与r i c h a r dr o b i n s o n 用命名服务和事件服务实现了轻量级的高性能c o r b a n 刚;中国矿业大学的李方与张虹针对服务器端对编码解码的低效率,在编码时不使用边界对齐或边界对齐长度可设定以及字节流压缩后再发送汹1 :i r f a np y a r a l i 和e a s t m a nk o d a kc o m p a n y 设计了一个将c o r b a 中间件与低层s o c k e t 通信无缝整合的框架用于医院中高质量数据的传送们。在o o s 、事物管理方面的改进h h 2 儿4 3 1 对提高c o r b a 性能也有不少有用的提示。在通信行业中c o r b a 的应用已十分普遍,因为通信行业的业务种类繁多且业务升级日新月异,c o r b a 中间件能满足在不影响原有业务的情况下对新业务进行服务开通,通信行业的客户端平台也是五花八门,比如开通业务可以通过短信营业厅、网上营业厅、客服系统、实体营业厅等多种渠道办理,异构性较强,用中间件平台作为通信技术无疑是一种合适的选择。1 3 本文的工作与组织结构解决c o r b a 对并发请求的处理瓶颈方向有两个:一是采用负载均衡的方式增加服务器,将并发请求均匀地转发到各个服务器上,这是面对不断增长的网络流量的终极解决方案;二是从根本上提高每个c o r b a 服务器的处理性能,这样在负载均衡时能实现性能的线性级提升,对c o r b a 在协议层进行数据编码、发送和接收方解码时的低效率盯的改进为本文的主要研究方向。在低速网、低负载下c o r b a 的性能表现良好,因为c p u 能及时处理客户机传送过来的网络请求,为提高实验结果的灵敏度,本文将搭建一个高负荷的分布式中间件平台,可采用软件测试中关于压力测试的理论,通过逐渐增加并发用户数负载,直到系统的瓶颈或者不能接收的性能点,在此时进行优化设计和实现以期获得有效的结果。目前在字节序转换方面的研究非常少,华盛顿大学的嵌入式o r b 中间件t a o 针对不同的平台和编译器对字节序交换进行优化,比如对v c 使用汇编语言进行交换,由于汇编语言具有平台依赖性,如果在分布式平台上使用该方法将使软件不具有平台无关性,违背了o m g 组织制定c o r b a 规范的初衷。由客户端进行字节序转换,使服务器c o r b a 摆脱了这一负担,而对单个客户机来说对c p u 带来的影响也几乎可以忽略。实验中由客户机进行字节序转换需做到两点,首先,在服务器取消字节序转换;其次,通过修改i i o p 协议客户端请求标准位4硕+ 学位论文第一章绪论让服务器返回i i o p 应答消息,而服务器通过i i o p 应答消息将本机的字节序顺序传递给客户端;最后客户端根据i i o p 应答消息中的字节序顺序与本机的异同决定是否进行转换。另外,在g i o p 请求消息头中有不少冗余信息,在每次打包传递消息时都需要传递相同的冗余信息,这增加了打包次数和t p d u ( t r a n s p o r tp r o t o c o ld a t au n i t ,简称传送协议数据单元) 在系统缓冲区之间的复制次数,浪费了宝贵的c p u 和i o 资源,将这些冗余信息删除,能对服务器端性能优化起到一定的效果。本文中主要做了以下几个工作:( 1 ) 采用压力测试原理,通过设定s q l 查询条数和逐渐增加并发用户数负载,直到系统的瓶颈或者不能接收的性能点,确定该临界点后将其作为后面实验的负载入参。通过在高负荷的分布式环境下进行优化并对比优化前后的延迟结果,减少了在低负荷下因为c p u 分时进行其他操作带来的干扰,提高了实验结果的敏感性;( 2 ) 以往的字节序转换均由作为服务器的接收方来处理,当并发请求量增多、次数异常频繁时,服务器需要花费不少c p u 时间在字节序转换上。在字节序优化时,创新性提出在字节序不一致时由客户端进行字节序转换,从根本上消除服务器端字节序转换的负担,分析了该策略的可行性、提出了实施步骤并在实验中验证该策略的效果。( 3 ) 客户端需要得到服务器主机的字节序顺序以决定是否进行转换。根据i i o p 协议基于t c p i p 协议的原理,在t c p i p 协议建立连接后在接收方应答消息体的指定位置增加字节序顺序标志位,无需修改t c p i p 即达到确认双方字节序顺序的目的。( 4 ) 对客户和服务器双方的g i o p 消息头内容进行压缩并重新编译,在对比实验中比较了两者的性能差异,g i o p 消息头压缩的效果从对比实验中得到了验证。本文从协议层层次着手,结构组织如下:第一章:介绍研究背景,国内外研究现状及本文的工作;第二章:介绍g i o p 协议、相关概念与g i o p 编码原理、网络性能优化通用规则,为后面的进一步分析提供理论基础;第三章:根据压力测试原理设计了一个高负荷的分布式模拟环境,对多客户并发请求进行了模拟,在优化策略1 中提出了在建立t c p i p 连接后如何在i i o p消息中传递字节序顺序标识位,设计了一个由客户端进行字节序转换的实验模型,在优化策略2 中分析g i o p 消息头的含义和作用并对消息头的冗余信息进行压缩:硕+ 学位论文第一章绪论第四章:先在本地搭建c o r b a 客户端服务器端平台,然后通过不断增加并发数测试系统压力测试的瓶颈,以系统性能瓶颈时的输入参数为基础,进行字节序优化、压缩消息冗余字节实验并对实验结果进行分析;第五章:课题总结并展望,提出一些理论基础的不足实验中待改进的方向以及进一步的研究方向。6硕士学位论文第一二章协议层优化相关理论第二章协议层优化相关理论协议是同等网络层实体问通信时有关通信规则和约定的集合,是对数据格式和计算机之间交换数据时必须遵守的规则的统一描述。在于不同的水平存在着不同的协议,它们各自的分工不同。例如在最关键的传输层是唯一负责总体的数据传输和数据控制的一层,它提供端到端的交换数据的机制,对会话层等三层提供可靠的传输服务器,对网络层提供可靠的目的站点信息。每层协议都建立在下一层协议的基础上,为其上一层协议提供服务器,协议间清晰的层次关系保证了模块间的松耦合,实现了良好的可扩展性。2 1g i o p 协议c o r b a 规范将g i o p 定义为它的基础互操作框架。g i o p 不是一个让不同o r b 间互相通信的具体协议,它只是描述了特定协议如何能在满足g i o p 框架的条件下被实现。g i o p 协议具有以下特点:( 1 ) 最广泛的可用性。i i o p 协议是g i o p 基于目前使用最广泛的通信传输机制t c p i p 的一种映射协议,它定义了在o r b 间传递c o r b a 请求必须的最少的附加协议层;( 2 ) 可缩放性。g i o p 是一种协议层的抽象定义,因此能在因特网的规模甚至更大的规模上支持多个o r b 和桥接o r b 的网络;( 3 ) 低代价。在一个已存在的或新的o r b 中追加对g i o p i i o p 的支持只需很少的工程投入;( 4 ) 通用性。尽管i i o p 最初是为t c p i p 设计的,但g i o p 的消息格式可以被设计成用于满足最少的一套假设的传输层的的格式,而且g i o p 也可在其他面向连接的传输协议上实现;( 5 ) 体系结构的独立性。g i o p 规范对支持它的代理的体系结构只做了最少的假设,g i o p 规范把o r b 视为未知的不透明实体。g i o p 协议是符合c o r b a 规范的不同o r b 之间通信的基础,在c o r b a 规范中,该协议只是一个满足一系列最少假设的面向连接的传输协议的框架,给用户在具体实现中留下了充足的空间。g i o p 协议以一种通用的、低代价的方式支持协议级的o r b 互操作。o m gi d l ( 接口定义语言) 是用于描述产生对象调用的客户方和提供对象实现的服务方之间接口的语言,采用o m gi d l 定义的接口能完整给出该接口的7硕士学位论文第二章协议层优化相关理论定义并详细给出每个操作要求的参数。客户程序不是用o m gi d l 语言开发,而是使用由i d l 语言编写的接口映射后的具体编程语言进行开发,它遵从c + + 规定的词法规则,也完全支持标准c + + 的预处理特征,包含o m gi d l 描述的源文件扩展名必须为i d l ,文件o r b i d l 包含了o m gi d l 的类型定义,可为任何o r b实现所使用。一个o m gi d l 描述由一个或多个类型定义、常量定义、异常定义或模块定义所组成,其语法如图2 1 所示。图2 - 1o m gi d l 语法定义其中t y p ed c l 为类型声明,基本类型有整数类型、浮点类型、字符类型、超大字符类型、布尔类型、八进制类型,构造类型则包含结构、联合、枚举等复杂类型;c o n s td c l 为常量声明,常量类型必须是一个已定义的整型、字符型、宽字符型、布尔型等常量中的一种;e x c e p td c l 为异常声明,规范中提供了3 1 种标准异常;接口声明的接口标头由接口名和可选的继承描述组成;m o d u l e 为模块声明,用于限制o m gi d l 标识符的作用域;v a l u e 为值声明,包括常规值类型、盒类型、抽象值类型和预声明。公共数据表示( c d r ) 转移语法是g i o p 用字节流表示o m gi d l 数据类型的格式,它将o m gi d l 定义的数据类型映射为低级的二进制表示,然后在代理间传递。c d r 具有可变的字节排序,当通信机器具有不同的字节序时,由消息的产生者决定字节的顺序,接收者负责交换字节序来与本地的字节序相匹配。每条g i o p 消息都包含一个指示字节序的标识;在g i o p 消息中,基本o m gi d l数据类型在它们的自然边界对齐,这样内存中执行数据对齐的体系结构就可以更有效地处理数据。字节流是网络传输的基本单位,字节流可以是任意长度的字节( o c t e t ) 序列,它有完全定义的开头,字节在流中的数字位置为字节的索引,字节索引用来计算对齐边界。g i o p 定义了两种不同类型的字节流,分别为消息和封装,消息是g i o p 中消息转换的基本单位,不同的消息格式用于定义发送方与接收方相互通信时的连接管理;封装是除消息外,o m gi d l 数据结果可以独立打包的字节流,数据结果一旦被封装,此字节流就可表示为o m gi d l 不透明的数据类型s e q u e n c e 8硕士学位论文第二章协议层优化相关理论g i o p 使用七种消息即可支持o r b 间全部c o r b a 功能,在通常情况下,客户建立连接后可以立即向对象发送请求,g i o p 消息提供对象定位和迁移的支持。g i o p 规范可在任何支持面向连接的传输协议上操作,只要此协议满足一系列最少的假设。2 2g i o p 编码解码原理g i o p 协议是其他协议的一个抽象定义,需要映射到具有的协议上才能运行,因此需要对其他协议的消息( 比如t c p i p 协议头) 进行编码封装后再发送。g i o p 在发送客户请求前必须按照g i o p 协议规定将客户请求封装成一条g i o p 消息。一个g i o p 消息由三部分组成,依次是g i o p 消息头、g i o p 请求消息头、g i o p 请求消息体。请求消息头和请求消息体一起构成了g i o p 体。请求消息体就是客户应用进行方法调用的参数。将一个客户请求封装成一个g i o p 的请求消息的过程就是将g i o p 消息头、请求头以及参数按照c d r 格式编码成字节流的过程。消息编码模块提供了所有必须的方法完成对一个请求消息进行编码的方法,其他模块通过调用这些方法完成编码工作。将客户请求封装成一条g i o p 请求消息需要s t u b 、g i o pc l i e n t 以及事件处理器共同完成。首先,g i o p 的连接管理机制从服务对象的对象引用i o r中获取有关服务对象的信息如服务对象的o b j e c tk e y 等信息,同时,通过s t u b传递进来的请求的操作名、是否返回应答等信息,形成g i o p 消息的请求头;其次,由s t u b 调用消息编码模块的c d r 方法,将请求参数封装到g i o p 请求体中;最后,事件处理器计算已封装好的消息的长度,完成消息头的封装。从发出请求到完成编码解码的步骤如下:第一步,客户端向命名服务器查询需要调用的对象引用;第二步,命名服务器若已注册该引用,则返回对象引用给客户端,若未注册,则通过对象激活进程o a d 自动激活该对象供客户端调用;第三步,客户端通过发出调用请求来调用远程对象的方法;第四步,客户端的桩程序截取调用,将调用的名字、参数等编码,通过o r b网络传到服务器方;第五步,服务器端的o r b 将参数传给服务器端的桩程序;第六步,服务器的桩程序在另一端将参数解码,传给正确的对象;第七步,服务器调用对象实现方法,将结果返回给服务器的桩程序;第八步,服务器的桩程序将返回参数编码,通过o r b 传到客户方;第九步,客户端的o r b 将参数传给客户端的桩程序;第十步,客户端的桩程序将参数解码,得到结果;9硕士学位论文第二章协议层优化相关理论第十一步,应用层界面显示返回结果。整个编码解码过程如图2 2 所示。图2 - 2 编码解码流程图由图2 2 可见,在通信过程中需要进行两次数据转换,一次是客户端的编码与服务器的解码,一次是服务器端的解码和客户端的编码,两次编码解码对c o r b a 服务器的负载造成了不小的压力。2 3 影响网络性能的因素一些性能问题,如拥塞,是由于暂时的资源过载而引起的。如果很多的信息突然到达路由器,从而超过了路由器的处理能力时,将会引起拥塞并使性能下降。当存在资源组织不合理时,也会引起网络性能的下降。例如,如果一条gb i t级的通信线路连到一台低档的p c 上,由于c p u 速度很慢而不能处理快速到达的分组,从而导致了一些分组丢失。这些分组最后还需要重发,这样便增加了延迟,损失了带宽,从而降低了性能。即使不出现同步过载并且有足够的可用资源时,由于系统缺乏相互协调也会出现性能变差的现象。例如,如果某台机器有功能强大的c p u 和足够的内存,但分配作为缓冲区空间的内存不足,也会出现过载而丢失t p d u 。类似的,如果1 0硕+ 学位论文第二章协议层优化相关理论调度手法没有以足够高的优先级来处理到达的t p d u ,也会导致某些t p d u 丢失。以下是一些从很多网络所获得的经验性的规则。这些规则是关于系统设计的,而不是关于网络设计,因为软件和操作系统一般要比路由器和接口卡更重要。其中多数规则对熟练的设计者来说是常识,是经历了一代又一代传下来的。规则l :c p u 速度比网络的速度更重要长期的经验表明:在几乎所有的网络中,操作系统和协议的丌销比在传输线路上所花费的时间多得多。例如,以太网上最短的r p c 时间理论上等于1 0 2l as ,它对应于一个最小长度的请求( 6 4 字节) 和一个最小长度的应答( 6 4 字节) 。而实际上,使r p c 时间低于1 5 0 0 1 1s 就相当不错了。注意,1 5 0 0 i ls 比理论上的最小值差了1 5 倍。几乎所有开销都出自于软件。类似地,以1 g b s 进行工作的最大问题是让来自用户缓冲区的数据尽可能快地发送到光纤上,而且接收方的c p u 能按数据到达的速度处理它们。简而言之,如果将c p u 速度加倍,那么就可以获得近乎加倍的数据吞吐量。而使网络容量加倍常常没有效果,因为瓶颈一般是在主机上。规则2 :减少分组数以便减少软件开销处理一个t p d u ( t r a n s p o r tp r o t o c o ld a t au n i t ,传送协议数据单元) 包括每个t p d u 的定量开销( 如头部处理) 和处理每个字节的定量丌销( 如计算检验和) 。当发送1 m b 数据时,无论t p d u 的大小如何,每个字节的丌销都是相同的。但是采用1 2 8 字节的t p d u 意味着每个t p d u 的丌销与采用4 k bt p d u 的丌销一样多,即增加3 2 倍。这种开销将急剧增加。除了对t p d u 的丌销,还要考虑在较低层的丌销。每个分组的到达都要引起一个中断。对于现代的r i s c 处理器,每个中断都会打断流水线处理,涉及到高速缓存的内容、请求改变内存管理的环境,以及保存许多的c p u 内部寄存器的内容。如果发送的t p d u 减少几倍,就会使中断和分组的开销相应地减少几倍。由此,建议在传输之前最好收集大量的数据以便减少对方的中断次数。n a g l e算法和c l a c k 对傻瓜窗口症状的解决方法j 下是对此所做的尝试。规则3 :使环境切换次数最少环境切换( 如从内核模式到用户模式) 对网络性能是很有害的。它们象中断一样有许多不大好的特点,最糟的是导致大量的缓存不命中。通过使发送数据的库例程进行内部缓存,直到它缓存大量的数据再进行发送的方法可以减少环境切换次数。类似地,在接收方,应该将到达的少量t p d u 收集起来,一并交给用户,而不是单个转交,以便使环境切换次数最小。最好的情况是,一个到达的分组导致从当前的用户到内核的切换,接着又切硕+ 学位论文第二章协议层优化相关理论换到接收进程以处理新到的数据。不幸的是,很多操作系统会发生额外的环境切换。例如,如果网络管理程序作为一个特殊进程运行于用户空间,一个分组的到达可能会导致从当前用户进程到内核的切换,接着是从内核切换到网络管理程序,再下面又切换到内核,最后从内核切换到接收进程。这一序列如图2 3 所示。每个分组的所有这些环境切换是很浪费c p u 时间的,并进而对网络性能产生毁灭性的效果。+ 朵兵肛忒 歹编用户空问内核空间图2 - 3 在用户空间运行网络管理程序时,处理一个分组需要进行4 次环境切换规则4 :使复制次数最少比多次进行环境切换更糟的是复制多个副本。对于到达的分组,在将其中包含的t p d u 传送给应用程序之前通常要被复制( 3 4 ) 次。当一个分组被网络接口接收并存放于特殊的卡上的硬件缓冲区后,一般要被复制到内核的缓冲区。从那儿再复制到网络层的缓冲区,接着到传输层的缓冲区,最后是接收的应用程序。设计精巧的操作系统每次复制一个字,但每个字一般需要约5 条指令( 加载、存储、变址寄存器加l 、测试数据是否结束以及条件分支) 。对于5 0 m i p s 的机器,以每复制3 2 位字用5 条指令的方式对每个分组做3 个副本,则每个到达的字节需要7 5 n s 。这样的机器可以以大约1 0 7 m b s 的最高速率接收数据。当考虑了头部处理、中断控制和环境切换后,可能还能达到5 0 m b s ,而且这里还没有考虑到数据的实际处理。显然,处理1 g b s 的线路是绝对做不到的。规则5 :可以买到更宽的带宽但不会降低延迟下面的三条是有关通信的,而不是关于协议处理的。第五条规则表明如果想要买到更宽的带宽,尽管买。挨着第一条光纤铺设第二条,可以使带宽加倍,但丝毫不能降低延迟。要想使延迟更短,需要改善协议软件、操作系统或网络接口。即使这些都得到改善,但如果瓶颈是传输时间,那么延迟也不会减小。规则6 :避免出现拥塞,而不是从捐j 塞中恢复“一分预防抵得上十二分治疗这句古老的格言十分适用于网络拥塞。当网络出现拥塞时,会造成分组丢失、带宽浪费、无益的延迟以及其他问题。从拥塞1 2硕士学位论文第二章协议层优化相关理论中进行恢复需要时间和耐心。最好开始就避免发生拥塞。规则7 :避免使用更多的超时机制定时器是网络中所必需的,但是要尽量少用,并且应使超时机制用得最少。当定时器超时后,一般需要重复某个动作。如果确实有必要重复该动作,那无可非议,但不必要的重复就是一种浪费了。避免额外工作的方法是使定时器被设置为保留时间超过一点儿。定时器经过很长时间还未超时,只是对一个未必可能发生t p d u 丢失事件的连接增加了少量额外的延迟,而定时器在它还没有用尽宝贵的c p u 时间就超时了,不仅浪费了带宽,而且还会无故给很多路由器增加额外负担。2 4 本章小结本章对g i o p 协议的主要元素c d r 、g i o p 消息进行描述,详细阐述了g i o p消息请求的编码解码原理,对g i o p 消息从编码到发送、从接收到解码的流程进行了描绘;对影响网络性能的主要因素进行了总结,为后续章节对c o r b a 处理网络数据的优化提供了理论基础。硕士学位论文第三章c o r b a 协议层优化设计第三章c o r b a 协议层优化设计由上一章关于影响网络性能的总结可知,影响网络性能速度的主要因素不在于网络的带宽、路由器的性能,而在于客户端和服务器端主机对到达t p d u 的接收处理速度。而本文提出的对协议层的优化j 下是为了提高两端主机对到达t p d u 的处理能力,减少c p u 和i o 的负荷。3 1 高负荷的分布式环境模拟3 1 1 多线程模拟多个客户端请求线程是进程的执行体,是对处理机的抽象,是进一步分离操作与数据的产物在线程模型中,进程是资源管理的最小单位,线程是程序执行的最小单位,同一进程内所有线程共享进程的内存资源。多线程技术最早出现于用户程序设计技术中,多线程把一个进程分成很多可执行线程,每一个线程都独立运行。因为多线程可以独立运行,用多线程编程主要有以下作用:( 1 ) 提高应用程序响应;( 2 ) 使多c p u 系统更加有效;( 3 ) 改善程序结构;( 4 ) 占用更少的系统资源。利用多线程进行程序设计,就是将一个程序( 进程) 的任务划分为执行的多个部分( 线程) ,每一个线程为一个顺序的单控制流,而所有线程都是并发执行的,这样,多线程程序就可以实现并行计算,高效利用多处理器。线程可分为用户级线程和内核级线程两种基本类型。用户级线程不需要内核支持,可以在用户程序中实现。c o r b a 的应用场景中通常面对的是多个客户端对同一服务器的并发请求,为最大程度地模拟分布式程序中的并发请求效果,实验中拟采取启动多个线程,为每个数据库查询指令生成单独的线程,并行对数据库进行操作当线程间间隔时间足够短的情况下,可以近似认为是并发请求。j a v a 的多线程可谓是j a v a 编程的精华之一,运用得当可以极大地改善程序的响应时间,提高程序的并行性。在服务器程序中,由于往往要接收不同客户机的同时请求或命令,因此可以对每个客户机的请求生成一个命令处理线程,同时对各用户的指令作出反应。在一些较复杂的系统中,我们还可以为每个数据库查询1 4硕+ 学位论文第二章c o r b a 协议层优化设计指令生成单独的线程,并行对数据库进行操作。实践证明,采用多线程设计可以很好的改善系统的响应,并保证用户指令执行的独立性。由于j a v a 本身是”线程安全”的,因此有一条编程原则是能够独立在一个线程中完成的操作就应该开辟一个新的线程。j a v a 中实现线程的方式有两种,一是生成t h r e a d 类的子类,并定义该子类自己的r u n 方法,线程的操作在方法r u n 中实现。但我们定义的类一般是其他类的子类,而j a v a 又不允许多重继承,因此第二种实现线程的方法是实现r u n n a b l e 接口。通过覆盖r u n n a b l e 接1 3 中的r u n ( ) 方法实现该线程的功能。本文例子采用第一种方法实现线程。多线程编程中需要用到以下几个函数:( 1 ) r u n ( ) 矛1 s t a r t ( ) , 把需要并行处理的代码放在r u n ( ) 方法中,s t a r t ( ) 方法启动线程将自动调用r u n ( ) 方法,这是由j a v a 的内存机制规定的。( 2 ) 关键字s y n c h r o n i z e d 这个关键字用于保护共享数据,当然前提是要分清哪些数据是共享数据。每个对象都有一个锁标志,当一个线程访问该对象时,被s y n c h r o n i z e d 修饰的数据将被“上锁9 99 阻止其他线程访问。( 3 ) s l e e p ( ) :使当前线程( 即调用该方法的线程) 暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。( 4 ) i o i n 0 :该方法使调用该方法的线程在此之

温馨提示

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

评论

0/150

提交评论