(计算机应用技术专业论文)基于service+broker的分布式系统的设计与实现.pdf_第1页
(计算机应用技术专业论文)基于service+broker的分布式系统的设计与实现.pdf_第2页
(计算机应用技术专业论文)基于service+broker的分布式系统的设计与实现.pdf_第3页
(计算机应用技术专业论文)基于service+broker的分布式系统的设计与实现.pdf_第4页
(计算机应用技术专业论文)基于service+broker的分布式系统的设计与实现.pdf_第5页
已阅读5页,还剩69页未读 继续免费阅读

(计算机应用技术专业论文)基于service+broker的分布式系统的设计与实现.pdf.pdf 免费下载

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

文档简介

摘要 基于s e r v i c eb r o k e r 的分布式系统的设计与实现 摘要 构建一个分布式程序是件十分复杂的事,尤其是不同应用程序问的通 信。企业的平台需要一个异步的,可靠的消息通讯机制。s q ls e r v e r2 0 0 5 中集成的一个全新的组件一s e r v i c eb r o k e r ,它可以在s q ls e r v e r 实例之 间提供可靠的消息传递服务,因而提供了一个以异步方式操作与协调各方 的平台,提供了跨越进程、应用、服务器甚至是网络的分布式处理能力。 本文首先讨论了分布式技术,以及应用于分布式技术的异步消息通信 机制和消息队列技术,并简要介绍了本设计的创新点。 其次,本文全面深入的研究了微软全新的数据库消息队列技术 s e r v i c eb r o k e r ,对其如何解决当前异步消息通信方面的难题进行了阐述。 在了解s q l s e r v e r 2 0 0 5 最新提出的面向服务的数据库结构的理念后,重点 研究了s e r v i c eb r o k e r 体系结构和编程实现。 然后本文对分布式系统中负载均衡技术进行了研究,了解负载平衡的 原理和常用算法。并结合本设计特点,设计了一套适用于本设计的负载均 衡算法,并讨论了其实现。 接下来本文详细介绍了本文设计的异步分布式处理系统。系统采用面 向服务的数据库设计理念,以s q ls e r v i c eb r o k e r 作为分布节点间异步通 信的载体,实现了松耦合的通信接口。使用n ts e r v i c e 作为逻辑处理单元, 实现了业务逻辑的通用处理接口。由w e bs e r v i c e 进行发布实现外界访问 北京化工人学硕一l j 学位论文 接口,从而可构建基于i n t e m e t 分布式系统。 最后,通过在订单系统中的应用讨论了该模型在微软n e t 平台下的具 体设计与实现,给出了该应用的部分具体实现,验证了应用模型的可行性。 本文提出的应用模型,探讨了系统对反馈实时性要求不高时,如何使 用s q l s e r v i c eb r o k e r 组件设计一个具有分布式处理能力,异步的,良好 扩展性的系统,把计算单元扩展在互联网的每一个角落。本文为解决这类 系统面临的问题做出的探索,具有重要的参考价值和实际意义。 关键词:s e r v i c eb r o k e r ,异步消息,分布式 a b s t r a c t - l 1r 、1h a1 1 i s t r l l 3 u t e di r a m e w 0 r kd a s e d0 ns e r v i c eb r 0 k e r a b s t r a c t i t i s v e r yc o m p l i c a t e dt om a k ed i s t r i b u t e ds y s t e m s ,e s p e c i a l l yw h i c h c o m m u n i c a t eb 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 e n t e r p r i s ep l a t f o r mn e e d sa n a s y n c h r o n o u s ,r e l i a b l em e s s a g e c o m m u n i c a t i o nm e c h a n i s m an e w c o m p o n e n ti sc a l l e ds e r v i c eb r o k e r , i n t e g r a t e di n t os q ls e r v e r2 0 0 5 i tc o u l d m a k er e l i a b l em e s s a g i n gb e t w e e ni n s t a n c e so fs q ls e r v e r2 0 0 5a n dt h u s p r o v i d e sa na s y n c h r o n o u so p e r a t i n ga n dc o o r d i n a t i n gp l a t f o r mw h i c hh a s d i s t r i b u t e dp r o c e s s i n g a b i l i t y b e t w e e n p r o c e s s e r s ,a p p l i c a t i o n s a n de v e n s e r v e r s f i r s t l y ,t h i sp a p e ri n v e s t i g a t e sd i s t r i b u t e dt e c h n o l o g y , t h ea s y n c h r o n o u s m e s s a g ec o m m u n i c a t i o nm e c h a n i s mo nd i s t r i b u t e dt e c h n o l o g ya n dm e s s a g e q u e u et e c h n o l o g y s e c o n d l y ,t h i sp a p e ri n v e s t i g a t e san e wt e c h n o l o g yf r o mm i c r o s o f t , w h i c hi sa b o u td a t a b a s em e s s a g eq u e u e ,n a m e da ss q ls e r v i c eb r o k e r a n d t h e na ne l a b o r a t i o ni sm a d ea b o u th o wt om e e tt h ec h a l l e n g eo fa s y n c h r o n o u s m e s s a g i n g a f t e ru n d e r s t a n d i n gt h ec o n c e p to fs e r v i c e - o r i e n t e d d a t a b a s e a r c h i t e c t u r ei ns q ls e r v e r2 0 0 5 ,ad e e p l yi n v e s t i g a t i o ni sm a d ef o r t h e a r c h i t e c t u r ea n dp r o g r a m m i n go fs e r v i c eb r o k e r t h e nt h i sp a p e rm a k e sar e s e a r c ha b o u tt h et e c h n o l o g yo fl o a db a l a n c e i i i 北京化丁人学硕。l :学位论文 a n di n v e s t i g a t i o no nt h ep r i n c i p l eo fl o a db a l a n c ea n dc o m m o na l g o r i t h m i n l i n ew i t ht h ed e s i g no ft h i sp a p e r , an e wl o a db a l a n c ea l g o r i t h mi sd e s i g n e d a n di m p l e m e n t e d a n dt h ed e s i g no fa s y n c h r o n o u sd i s t r i b u t e ds y s t e mo ft h i sp a p e ri s e l a b o r a t e d a n ds e r v i c e o r i e n t e dd a t a b a s ea r c h i t e c t u r ei su s e di ns y s t e m d e s i g n ,i nw h i c hs e r v i c eb r o k e rq u e u ei su s e da sc o m m u n i c a t i o nc a r t i e rb a s e d o nw h i c hl o o s e l yc o u p l e dc o m m u n i c a t i n gi n t e r f a c e sa r ei m p l e m e n t e d a n dn t s e r v i c ei su s e da sl o g i cp r o c e s s i n gu n i t ,o nw h i c hb u s i n e s sl o g i cp r o c e s s i n g i n t e r f a c e sa r ed e s i g n e d a n dw e bs e r v i c e sa r ep u b l i s h e da se x t e r n a li n t e r f a c e a l lt h e s em a k e a s y n c h r o n o u sd i s t r i b u t e ds y s t e mp r a c t i c a l a tl a s t ,a no r d e rs y s t e mi sd e s i g n e da n di m p l e m e n t e du s i n g n e t f r a m e w o r kt om a k et h i sm o d e lp r a c t i c a l t h i s p a p e rs h o w ss o m ed e t a i l i m p l e m e n t s ,w h i c hv e r i f yt h ea p p l i c a t i o nf e a s i b i l i t yo ft h em o d e l a p p l i c a t i o nm o d e lp r e s e n t e di nt h i sp a p e rs h o w sas o l u t i o nf o rt h ea b o v e , w h i c hi sf o rl e s sd e m a n d i n gr e a l - t i m ef e e d b a c k i tu s es q ls e r v i c eb r o k e r c o m p o n e n t t om a k et h e s y s t e m d i s t r i b u t e d c o m p u t i n g ,a s y n c h r o n o u s , e a s y - s c a l a b l e ,a n de x t e n dc o m p u t i n gu n i t t oe v e r yc o r n e ro fi n t e r n e t t h e e x p l o r a t i o n ,a d d r e s s i n gp r o b l e m sf o r t h i sk i n do fs y s t e m ,h a si m p o r t a n t r e f e r r a lv a l u ea n dp r a c t i c a ls i g n i f i c a n c e k e yw o r d s :s e r v i c eb r o k e r ,a s y n c h r o n o u sm e s s a g e ,d i s t r i b u t e ds y s t e m 北京化工大学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下, 独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本 论文不含任何其他个人或集体己经发表或撰写过的作品成果。对本文 的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本 人完全意识到本声明的法律结果由本人承担。 作者签名:燧日期: 关于论文使用授权的说明 学位论文作者完全了解北京化工大学有关保留和使用学位论文 的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属北 京化工大学。学校有权保留并向国家有关部门或机构送交论文的复印 件和磁盘,允许学位论文被查阅和借阅;学校可以公布学位论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存、汇编 学位论文。 非保密论文注释:本学位论文不属于保密范围,适用本授权书。 作者签名:墅垄日期: 导师签名: 第一章绪论 1 1 课题的研究背景和意义 1 1 1 课题的提出 第一章绪论 企业级的电子商务平台目前面对着诸多挑战,比如海量的访问请求,复杂多变的 业务逻辑处理等。典型的应用系统如以视频为载体的邮件系统,客户众多的票务订购 系统。处理一个请求需要检索不同的海量数据库,并进行大量的数据计算。在无法购 置具有超强计算能力大型机的情况下,利用个人计算机群进行分布式数据检索,计算 处理,以及汇总成为合理的选择。本文阐述了当系统对反馈的实时性要求不高时,如 何基于s q ls e r v i c eb r o k e r 通信技术设计一个具有分布式处理能力,异步的,良好扩 展性的系统,能把计算单元扩展在互联网的每一个角落,为解决这类系统面临的问题做 些探索,以期做出一点绵薄的贡献。 1 1 2 研究背景和意义 上世纪8 0 年代到现在,随着大规模集成电路的发展,个人计算机以极快的速度 得到普及。随着网络技术的发展,可用带宽的不断提高,应用程序从最初只在一台计 算机上进行处理,发展到分布在互联网上的网络计算机模式。计算机的计算能力得到 大大加强。同时,计算的含义相比传统意义也有了更多的内涵。电子商务政务,数据 查询等,大量的应用程序需要处理海量的数据或复杂的计算,这对现代应用程序信息 处理和计算的要求大大提高。而传统的c s 模式或以单一服务器为中心的应用程序难 以满足这样的要求。假如资源放在一台服务器上,有几千个用户同时访问,那么对服 务器的硬盘、c p u 处理能力、下行带宽的要求非常高,即使巨型机也难以处理。这时, 应用程序采用资源分散的方式,成为某种意义上的分布式应用,就可以有效的绕开服务 器或c s 模式等集中式计算的性能瓶颈。这时,分布式计算就成了一个很好的选择。 然而构建一个分布式程序是件十分复杂的事,尤其是不同应用程序间的通信。对 大部分商业应用来说,一个典型的商业过程不会是一个独立的操作,而往往要涉及多 个合作伙伴间交换信息。而且这些应用分布在不同计算机上,甚至跨系统,跨网络, 跨平台,我们需要在这些应用之间互传信息,保持良好的通讯。同时信息交换需要的 时间也许是即时的,但也许很长。而且通讯的双方不一定同时在线。这种情况下,让 客户同步等待服务端的响应,是不现实的【l 】。 最好的解决方式就是异步通信。并且由于网络,尤其是广域互联网,并不总是可 靠和可用的。如果消息通信的双方不能保证消息交换的准确完成的话,很多业务问题 北京化工人学硕二l 二学位论文 就不能安全有效的解决。因此,企业的平台需要一个可用的,可靠的的消息通讯机制 【2 】 o 要解决这些问题,单纯依赖传统的系统软件或工具已经不能满足要求,并且对分 布式和异步通信的实现使得应用程序的开发也变得十分复杂。 为屏蔽系统的异构性,支持多种应用软件的信息交互和协同工作,使企业分布式 应用的开发和维护更加轻松,中间件f 3 】应运而生,并且在过去十多年里成为增长最快 的软件发展方向。中间件是一种独立的系统软件或服务程序,分布式应用系统借助这 种软件在不同的平台之间共享资源,管理计算资源和网络通讯。消息中间件独立于平 台、编程语言,能在异构的网络协议和操作系统之间提供异步的、可靠的和可恢复的 消息传送,为企业提供了一个统一的、健壮的通讯平台,大大地缩短了应用开发周期。 然而中间件产品价格不菲,为了购买中间件完成这些平台支持,企业需要付出高 昂的代价。s q ls e r v e r2 0 0 5 中集成了一个全新的组件 4 l s e r v i c eb r o k e r ,它可以在 s q ls e r v e r 实例之间提供可靠的消息传递服务,因而提供了一个以异步方式操作与协 调各方的平台,其本身提供了扩展性、安全性、事务性的很多支持。s e r v i c eb r o k e r 提供了跨越进程、应用、服务器甚至是网络的分布式处理能力【5 】。 利用s e r v i c eb r o k e r 做为异步可靠消息通信的载体,应用程序开发人员无需编写 复杂的内部通信和消息,可以轻松地创建使用数据库引擎组件在完全不同的数据库之 间进行通信的复杂应用程序,从而轻松生成可靠的分布式应用程序。 本论文即旨在利用s e r v i c eb r o k e r 作为异步可靠消息通信的载体,按照目前流行 的面向服务的设计理念,结合现有w e b 服务,n t 服务等技术,提出一个可实现异步 分布式计算的系统的解决方案,可以应对海量数据处理,瞬间并发请求等需要高吞吐 量的场景。 1 2 本课题相关领域的历史、现状和前沿发展情况 1 2 1 分布式技术 自1 9 8 2 年起,微机开始在全球范围内普及,大量进入学校和家庭。计算机也发 展为以大规模集成电路为主要功能部件的第四代计算机,同时,随着网络技术的发展, 计算机技术进入了网络计算机时代。在系统结构方面,新兴的并行处理技术、分布式 计算机系统和计算机网络等迅速发展;在软件方面,数据库系统、分布式操作系统、 软件工程标准化等成为软件发展的主流趋势。 自从计算机网络问世,c s 模式一直占据着主流的地位。c s 是集中式计算 6 1 的一 种方式,这在八十年代,很好的满足了当时的需求,同时具备结构清晰,架设简单便 捷等诸多优点。然而九十年代以来,随着网络技术的飞速发展和微机在全球范围内的 2 第一章绪论 普及,网络应用面临着信息的爆炸式增长,对于应用程序的计算量也过度膨胀,给集 中式计算带来了严峻的挑战。信息时代庞大的信息量,动辄百万的海量数据处理,即 使性能领先的巨型机也无法单独完成。集中式计算模式确实越来越难以适应网络的飞 速发展,也越来越难以承载日益复杂的网络应用。此时,分布式应运而生。将应用程 序设计成分布式的结构,有效的利用网络,整合和利用分散的计算机资源,既可以完 成单机无法完成的任务,同时具有更好的性能价格比。 从上世纪八十年代至今,分布式应用已经越来越多的进入到我们的生活,流媒体, 网络游戏,i p t v 等,越来越多的应用被设计为分布式的结构。利用分布式计算解决 目前商业应用面临的海量数据处理和复杂的业务逻辑的挑战,已经成为网络应用的一 种趋势。 然而由于原有系统间的异构性与网络的不可靠性,分布式应用的实现十分复杂。 人们开始使用中间件来解决这一问题。中间件构筑于现有操作系统,网络和数据库之 上,屏蔽下层,同时对上层应用程序提供开发与运行的环境等必要支持。i s g 把现有 的中间件产品主要分为五类叽 ( 1 ) 基于远程过程调用( i 冲c ) 的中间件,应用程序可以调用分布式系统中任 何一个物理平台上的对象。如s u n 的o n c 。 ( 2 ) 面向对象的中间件,如大名鼎鼎的c o b r a ,微软的d o m ,s u n 公司的 e j b 等。 ( 3 ) 数据库中间件,适用于与数据源之间的互操作模型,可以直接访问和更新 服务器的数据源。如b e a w e b l o g i c 等。 ( 4 ) 面向消息的中间件,使得不同的异构应用程序间可以基于消息进行通信, 以松耦合的方式集成应用程序。 ( 5 ) 事务中间件,通过添加事务的支持,为系统提供可靠的运行环境。 其中面向对象的中间件技术一度成为中间件领域的主流。 近几年来兴起w e b 服务与面向服务体系结构s o a 十分火热。w e b 服务是一种新 的分布式程序,通过一组通用的协议,实现跨平台,跨应用程序和跨语言的服务,呈 现在网络上。s o a 基于消息的,松耦合的软件体系架构,为分布式架构提供了新的思 路。s o a 所倡导的理念使得我们可以设计出最为灵活和优雅的系统架构。一种新的面 向服务的分布式w 曲计算架构开始兴起。现在w 曲服务和s o a 已经深入人心,并在 逐步走向成剥8 1 。 网格技术也是构筑在互联网上的一组新兴的分布式计算技术。与之同期的,还出 现了对等计算,公用计算等新的计算模型,代表了分布式计算的最新潮流。现代信息 技术应用又迈向了一个更新更高的阶段【9 】。 1 2 2 异步消息通信 3 北京化t 大学硕上学位论文 目前应用程序的通信分为两种,同步通信和异步通信【lo 】。同步通信简单而且容易 实现,在过去的几十年内是一种常见的廉价通信方式。发送方发送信息后,在系统中 等待接收方响应,以实现发送确认,从而避免传输失败。但是,随着应用软件越来越 具开放性和协作性,同步通信已经难以满足需求。对于许多商业应用来说,通信的双 方未必同时在线,一方不在则不能进行通信。而有些业务处理比较复杂,等待时间也 许会很长,让客户端等待服务端的响应是不现实的。比如订票系统,当顾客通过w e b s e r v i c e 发出订票请求后,系统要对顾客进行身份和权限识别,要查询库存,要进行 账务处理等,有时如果需要与第三方进行交互的话,交互时间也许要等待几天才能得 到处理结果,这种情况下,顾客是不能期待订票后马上得到结果的。对于这种应用, 异步通信的优点就得以充分发挥。异步通信模式使得开发人员方便的建立松耦合,可 扩展的软件系统。 异步松耦合模式是开放协同环境中的一种重要的软件应用形态【i 。异步,顾名思 义,参与双方不必同时在场。异步消息处理是指在等待接收方处理并回复消息时,发 送方仍可以继续进行其他工作。异步处理采用非阻塞的调用特性,发送和接收是异步 的,通信双方不必同时在线,一方不在仍可发送信息,并且发送者无需等待。 发送邮件是常见的异步消息处理的形式。发送人只需点击“发送“按钮,邮件即 可被发送。发送人不需要等待邮件真正被送达目的地,同时,发送人可以着手处理手 头其他工作。 即使通信一方出现问题,业务仍然能够得以继续进行,而且一旦通信连接恢复, 中断的消息会立即快速地传递到通信的另一方,不会丢失。而异步处理模式使得支持 异步消息的中间件得以发挥作用,保证可靠的消息传递,从而保证即使网络环境出现 问题,消息也能够正确传递到目的地。消息能够不重复的被发送,并能够安全及时的 到达,而不会丢失,对异步通信双方是非常重要的,这是对分布式应用数据完整性的 保证,并能够大大提高程序的性能、可扩展性及健壮性。这使得异步处理模型在分布 式应用上比起同步处理模型更具有吸引力【i 羽。 异步消息处理对于持续时间长的商业处理的客户端解耦十分有用。客户端仅 仅捕获用户的必要输入,并将输入信息封装为消息,将其发送给目标接收方,由接收 方异步的进行真正的业务处理【1 3 】。这种设计的好处是,客户端应用可以更快的响应用 户,用户即可立即执行其他操作,该设计可能由多个目标方组成,并实现负载平衡,以 便可以分布式处理或并行处理消息【1 4 】。 异步处理机制得以快速的发展起来。目前,几乎没有一种编程语言不支持异步处 理机制,而异步实现模式,也成为很多网络标准和应用程序的重要实现方式。异步处 理通信是面向服务架构( s o a ) 的重要部分,因为企业中的许多系统通信,尤其是跟 外部系统通信本来就是异步的。 当利用基于消息的解决方案时,发送的消息被异步传送到接收方,异步消息并不 4 第一章绪论 知道何时被处理。这种方式最大的好处是,消息在服务端处理时,用户可以继续其他 工作,后续处理并不需要用户参与,客户端只需将消息放到一个队列里,这使得应用程 序更容易扩展【1 5 】。 1 2 3 消息队列技术 为了实现可靠的异步消息传递,更好的支持分布式应用,需要一种异步消息传递 框架,这种框架必须能够在一组应用和资源之间进行异步消息通信,并且该框架必须 保证这一任务快速可靠地完成。中间件技术问世后成为支持分布式的一种很好的解决 方案,继c o b r a 等面向对象的中问件之后,异步的消息中间件成为目前最热门的中 间件技术【1 6 】。 目前世界各大巨头公司也都推出了各自的消息队列技术和消息中间件。 i b m 的消息传送中间件产品w e b s p h e r em q t r 7 1 ,也叫做m q s e r i e s , 功能强大, 技术成熟,是世界领先的产品,在消息类中间件市场上占有统治地位,已经成为事实 上的行业标准。 b e am e s s a g e q 是一个易用,可靠的消息软件,可使应用程序通过行业领先的消 息队列总线技术进行通信,也是用于构建分布式系统的中间件,目前已被广泛使用。 此外,还有很多支持异步消息的技术,并也得到了广泛的应用。例如c o m + ,j m s , b i z t a l ks e r v e r ,x m lw r e bs e r v i c e s 等。 作为计算机业巨头的微软也不甘示弱的推出了自己的消息队列产品m s m q 。现在 m s m q 已经发展为一种成熟的消息技术,所有w i n d o w s 消息队列版本都包含m s m q 。 由于m s m q 集成于w i n d o w s ,因此不需要额外付费。这是m s m q 的优势之一。 s q ls e r v e r 2 0 0 5 对于国内的开发者来说一定不陌生,但是对于它提供的消息队列 的支持,在国内却很少被提到。s q l s e r v e r 2 0 0 5 版本中提供了一个全新的组件s e r v i c e b r o k e r ,作为支持异步消息处理,是微软消息队列技术中,除了m s m q 的另一种选择。 由于s e r v i c eb r o k e r 集成在s q ls e r v e r 2 0 0 5 引擎中,二者绑定十分紧密,因此,s e r v i c e b r o k e r 在和数据关联非常紧密的队列操作中比m s m q 更有效率【i 引。 1 3 课题主要创新点 基于消息的中间件从上世纪八十年代就引起了人们的注意,而分布式系统的实现 也越来越趋于复杂。m q 、s o a 、w 曲s e r v i c e 等一系列支持基于消息的分布式系统实 现的技术兴起。但是这些技术都面临着各种各样的问题。 在此情况下,本课题旨在利用s e r v i c eb r o k e r 这一新兴的消息通信工具,在以下 方面进行创新的研究: 5 北京化工大学顾十学位论文 ( 1 ) 针对目前海量数据处理所面临的难题,设计了一个新的分布式系统应用模 型,该模型采用s q ls e r v i c eb r o k e r 作为分布节点间通信的载体实现异步消息通信, 采用面向服务的数据库设计理念,使用n ts e r v i c e 作为逻辑处理单元,由w e bs e r v i c e 进行发布,从而可构建基于i n t e r n e t 的分布式应用系统。 ( 2 ) 针对本分靠式系统模型,依托加权最小连接数算法思想,设计了适用于本 系统的负载平衡算法。 ( 3 ) 对业务逻辑处理采用了高度可插拔的设计,使得业务逻辑处理较传统应用 程序更具扩展性和通用性,使系统具有高度的松耦合性。 1 4 本论文的研究内容与组织结构 本论文针对基于s e r v i c e sb r o k e r 的分布式应用模型做了一系列的应用研究,具体 工作如下: ( 一) 研究了分布式系统的历史发展与现状,分析目前消息技术的趋势与面临的问 题。 ( 二) 深入研究了分布式系统设计中所用的关键技术,如通信组件和负载平衡技术。 通信组件为面向服务的消息队列技术s q ls e r v i c eb r o k e r ,在探讨了s e r v i c e b r o k e r 设计理念后,研究了s e r v i c eb r o k e r 的体系结构与编程实现。 ( 三) 对影响系统性能的关键技术,即负载平衡相关问题进行了研究和总结,并设 计了由加权最小连接数改进得到的负载平衡算法。 ( 四) 为解决目前电子商务平台普遍面临的海量请求等问题,设计了基于s e r v i c e b r o k e r 的分布式应用模型;并就系统的通信处理,业务逻辑松耦合分别进行 了具体设计。 ( 五) 通过应用模型在订单系统中的应用,给出了应用模型的具体实现,从而验证 了应用模型的可实现。 本篇论文的主要内容如下: 第一章绪论主要介绍了目前分布式和异步消息的基本概念和发展、现状。 第二章全面介绍了本课题采用的面向服务的消息组件s q ls e r v i c eb r o k e r 。 第三章研究并设计了分布式系统中对性能极其关键的负载平衡算法。 第四章详述了本课题的系统设计,即异步消息通信的分布式应用模型的设计。 第五章详细介绍了系统模型的具体实现,即订单系统。 第六章对整个论文进行了总结。 6 第二章s q ls e r v i c eb r o k e r 概述 第二章s q ls e r v i c eb r o k e r 概述 2 1s e r v i c eb r o k e r 简介 s q ls e r v i c eb r o k e r 是s q ls e r v e r 2 0 0 5 企业级数据库引擎的一部分,为s q l s e r v e r 数据库提供了消息和队列应用程序的本机支持【1 8 】。这使开发人员可以轻松地创 建使用数据库引擎组件在同一个数据库实例内或者完全不同的数据库之间进行通信 的复杂应用程序,而无需编写复杂的内部通信和消息,即可跨多个数据库分发数据工 作负荷。开发人员可以使用s e r v i c eb r o k e r 生成可靠的分布式应用程序,可以大大减 少开发和测试的工作量,同时还能调高性能【1 9 1 。 作为一个功能强大的消息处理平台,s e r v i c eb r o k e r 解决了很多消息处理尤其是异 步消息方面的难题【2 0 1 。 ( 1 ) 异步队列难于实现 ( 2 ) 消息完整性问题【2 1 】 ( 3 ) 容错 ( 4 ) 对分布式系统的支持 ( 5 ) 多读取器队列【冽 m s m q 与i b mw e b s p h e r em q 一样,都是比较成熟的消息技术。而s q ls e r v i c e b r o k e r 则是一项非常新的技术,对于国内用户甚至还有些陌生。为此,本文对二者的 不同之处进行了研究,以便于在构建应用程序时做出j 下确的选择。 这两种消息队列很类似,他们都提供了异步消息处理机制,消息队列都使用了 f i f o 的队列优先算法【2 3 1 ,并且都提供了多编程语言的支持。并且对于开发人员来说, 由于许多复杂的消息处理操作都已经被封装起来,很多操作都是透明的,比如开发者 不需要在s q ls e r v e r 中直接手动建立数据表和队列,这对于程序开发提供了便捷的支 持。二者都是微软产品,因此都可以在几乎所有w i n d o w s 平台使用,尤其对于s e r v i c e b r o k e r 来说,客户端只需要能连接s q ls e r v e r 2 0 0 5 即可【2 4 】。 但是二者也有很多不同点,表2 1 中列举了二者主要的不同之处。 表2 - 1s e r v i c eb r o k e r 和m s m q 的若异 t a b l e2 - 1d i f f e r e n c eb e t w e e ns e r v i c eb r o k e ra n dm s m 7 北京化t 大学硕上学位论文 s e r v i c eb r o k e r 和m s m q 的最大差别是事务性处理。 s e r v i c eb r o k e r 不需要分布 式事务。s e r v i c eb r o k e r 队列以数据库表的形式存储在数据库中。所以消息在处理过 程中直至最终从队列中移除,并不需要分布式事判2 5 j 。 利用m s m q 数据处理逻辑是在数据内实现的。但问题是m s m q 的消息存储在 文件系统中,而数据处理在数据库中。由于二者分离,必须在消息处理过程中协调这 两种资源。 当数据库事务失败时不能将消息从m s m q 中移除,并且在消息不能从队 列中移除时不能提交事务。这两种情形下将导致队列与数据库中数据不一致。 2 2s e r v i c eb r o k e r 设计理念s o d a s o a 是由预先定义好的服务约定,将一组服务以松耦合的方式组合起来实现应用 程序。应用程序可以操作一个声明某种格式的服务请求与服务交互,服务的请求与响 应交互都由传递“消息”来完成,而不需要知道服务具体实现。服务可以采用任何平 台或工具实现,只要符合特定的服务约定即可。这种松耦合的服务实现使得扩展极为 方便。 支持s o a 的数据库必须满足如下要求【2 6 】: 1 、必须提供j 下确的服务端点,这可以用t c p 的s o c k e t ,h t r p 方法,或者s o a p 端点来实现。 2 、必须有一种通用的格式使得各方都能识别和处理。一般采用x m l 。 3 、必须提供简单高效的编程逻辑支持。 微软的专家基于s o a 提出了一个最新的概念s o d a ( s e r v i c eo r i e n t e dd a t a b a s e a r c h i t e c t u r e ) ,即面向服务的数据库结构,即在数据内实现s o a 。s q ls e r v e r 2 0 0 5 对 此架构提供了必要的组件,以满足建立s o a 应用程序的需求。其中s e r v i c eb r o k e r 就 是其中最重要的组件之一。s q ls e r v e r 中的这些组件和功能被叫做面向服务的数据库 架构,即s o d a 。s e r v i c eb r o k e r 就是这些组件之一。 2 3s e r v i c eb r o k e r 体系结构 s e r v i c eb r o k e r 应用程序由s e r v i c eb r o k e r 数据库对象和一个或多个使用这些对 象的应用程序所组成。 有三种类型的s e r v i c eb r o k e r 组件网: 1 会话体系结构。会话的运行时结构。包括消息、会话和会话组对象。所有 s e r v i c eb r o k e r 应用程序都通过“会话”( 即可靠的、长时间运行的异步消息交换) 进行 通信,并将消息作为会话的一部分进行交换。 2 服务体系结构,包括消息类型、约定、队列、服务等服务定义对象。它们是 8 第_ 二章s q ls e r v i c eb r o k e r 概述 进行应用程序基本设计时的组件。这些组件用于应用程序的数据库存储、通信的消息 类型、应用程序的会话等。 3 路由和安全组件,包括远程服务绑定、路由和端点对象。这些组件定义用于 交换s q ls e r v e r 实例外部的消息的基础结构,管理路由和建立会话安全模式的功能。 如下是对s e r v i c eb r o k e r 内部的每个通信对象的简单描述。 消息( m e s s a g e ) :s e r v i c eb r o k e r 应用程序之间通过“消息来交换信息。消息 是信息交换最基本的单元。消息中包含业务信息的实体。每个消息都是会话的一部分。 每个消息由以下三部分构成: 1 信封( e n v e l o p e ) 2 消息头( h e a d e r ) 3 消息体( b o d y ) 信封将消息头和消息体封装2 8 1 。消息可包含路由信息和商业数据等。h e a d e r 是 可以扩展的。消息体b o d y 保存有效负荷,即发送者与接受者传递的信息。每个消息 有特定的类型,由用户在创建服务时定义。 会话( c o n v e r s a t i o n ) :会话是两个服务之间的会话。会话是保证两个s e r v i c e b r o k e r 服务进行双向通信的机制。会话包含多个消息,其本质就是两个服务之间可靠 的、持久性双向消息流。s q l s e r v e r 把消息放在对话的队列中,由应用程序对队列中 的消息进行处理。“发起方”是指发起会话的服务。“目标”接受发起方发起的会话的服 务。 图2 1 显示对话的消息流: 图2 - 1s e r v i c eb r o k e r 会话消息流 f i g 2 1s e r v i c eb r o k e rd i a l o gm e s s a g ef l o w 会话组( c o n v e r s a t i o ng r o u p ) :一个会话组标识共同完成同一项任务的多个相关 会话,并允许s e r v i c eb r o k e r 应用程序能够轻松地协调特定的业务任务所涉及的多个 会话。每个会话组都面向一个特定的服务,一个会话组可以包含任意数量的会话,并 且组中所有会话均是该服务的。 9 北京化t 人学硕i j 学位论文 消息类型( m e s s a g et y p e ) :使用s e r v i c eb r o k e r 的应用程序之间通过消息进行 通信,那么会话参与各方必须对能够理解每个消息的格式和内容。“消息类型“对象 定义了一个消息包含的数据类型,定义该类型的名称。每个参与会话的消息的类型都 必须在数据中定义。每个消息类型指定s e r v i c eb r o k e r 将对消息进行何种验证。目前, s e r v i c eb r o k e r 支持以下验证: 1 通过x m ls c h e m a 验证消息是否符合格式 2 消息是否包含x m l 内容 3 不进行验证( 例如二进制数据) 4 空消息体 当目标服务收到消息时,s e r v i c eb r o k e r 按该消息类型的定义开始执行验证。如果 消息的内容没有通过验证,则s e r v i c eb r o k e r 会向消息的发送方返回一个错误消息。 约定( c o n t r a c t ) :约定用于指定给定会话双方各自使用的消息和类型。约定是 两个服务通信时的协议,规定每个服务该发送哪些消息。数据库中的每一个会话都必 须有一个约定,并且会话双方必须有同样的约定,以知道分别要发送和接收哪些类型 的消息。 s e r v i c eb r o k e r 确保只有在约定中定义的消息类型才能被处理。如果服务发送了一 个未被定义的消息类型,那么这条消息将被阻止并响应一条错误消息。 队列( q u e u e ) :队列即指消息队列,用于保留服务的传入消息,并以数据库表的 形式存储消息。队列在消息发送方服务和消息接收方服务之间提供松散耦合。每个服 务都与一个队列绑定。 服务( s e r v i c e ) :“服务”是指某个特定业务任务或一组业务任务的名称。“目标服 务”表示用来接受对约定( 由服务指定) 所标识的任务的请求的地址。“起始服务”表示 与目标服务的会话的返回地址。s e r v i c eb r o k e r 使用服务名称将消息传递到数据库中 的正确队列、路由消息、执行会话的约定并确定新会话的远程安全性。 每个服务指定一个队列用来存储消息。这些在服务相关的约定中定义,目标服务 指定与服务进行的会话必须遵循的一个或多个约定。 路由( r o u t e r ) :路由是服务与物理网络地址之间的映射。路由说明如何指定服 务及包含服务的数据库的位置。s e r v i c eb r o k e r 传递消息时需要路由。s q ls e r v e r 使 用路由来确定将接收该消息的服务。默认情况下,每个数据库都包含一个默认路由, 该路由指定没有显式路由的任何服务将在当前实例中传递。 远程服务绑定( r e m o t es e r v i c eb i n d i n g ) :远程服务绑定用于建立本地数据库用 户与远程服务的名称之间的关系,为以远程服务为目标的会话提供对话安全模式,说 明如何设置b r o k e r 用于建立对话安全模式的证书。对话安全模式为到特定服务的会 话提供端到端的加密和远程授权。 s e r v i c eb r o k e r 端点( e n d p o i n t ) :默认情况下s e r v i c eb r o k e r 不通过网络发送或 1 0 第二章s q ls e r v i c eb r o k e r 概述 接收消息。必须通过c r e a t ee n d p o i n t 语法创建。 端点是一个数据库对象,它能够使s q ls e r v e r 在网络中通信2 9 1 。一个数据库实 例只维持一个“端点“,因此多个s e r v i c eb r o k e r 服务共享这一个端点。例如,h t t p 端点使s q ls e r v e r 可以处理特定的s o a p 请求。s e r v i c eb r o k e r 端点将s q l s e r v e r 配置为通过网络发送和接收s e r v i c eb r o k e r 消息。s e r v i c eb r o k e r 端点侦听特定的 t c p 端口号。 创建一个s e r v i c eb r o k e r 程序通常有如下步骤【3 0 j : 1 定义所需的消息类型和对应的验证方法。 2 定义约定。 3 定义双方队列。 4 定义服务,并与各自的队列进行绑定。 5 服务发起方创建发起会话,传递消

温馨提示

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

评论

0/150

提交评论