(计算机软件与理论专业论文)基于分布式消息中间件的工作流平台.pdf_第1页
(计算机软件与理论专业论文)基于分布式消息中间件的工作流平台.pdf_第2页
(计算机软件与理论专业论文)基于分布式消息中间件的工作流平台.pdf_第3页
(计算机软件与理论专业论文)基于分布式消息中间件的工作流平台.pdf_第4页
(计算机软件与理论专业论文)基于分布式消息中间件的工作流平台.pdf_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

摘要 摘要 为了支持跨企业的异构计算环境下大规模工作流管理,现有工作流管理系统 ( w t m s ) 的能力必须从多个不同的方面由以扩展,以提高系统的可靠健、可伸缩性 及容错能力等。因此本文在深入研究了当前工作流技术的基础上,提出了一种利 用分布式消息中问件来实现工作流机的分布执行的新思路,并详细讨论了这种分 布式消息中间件的设计框架和工作原理。在此基础上,再通过有向活动图的方法 提出了一种简单而有效的工作流模型设计方案,并给出了这种模型工作引擎相关 的实现细节。通过以上所述的工作,来搭建自己的工作流平台。并使该工作流平 台具备支持大规模应用、伸缩性良好、高可用性及方便的扩展性等重要特点。最 后本文还讨论了目前:【作流模型中有待完善和进一步需要研究的问题及解决的初 步设想。 关键字:并发处理模式分布式消息中间件工作流模型工作流引擎 a b s t r a c t a b s t r a c t i no r d e rt o s u p p o r tl a r g e s c a l e w o r k f l o wm a n a g e m e n tu n d e rt h ei n t e r e n t e r p r i s e i s o m e r o u sc o m p u t i n ge n v i r o n m e n t ,t h ec a p a b i l i t yo fc u r r e n tw o r k f l o wm a n a g e m e n t s y s t e ms h o u l db ee x t e n d e di nd i f f e r e n ta s p e c t st oi m p r o v es y s t e mr e l i a b i l i t y , r e t r a c t i l i t y a n ds e c u r i t y o nt h eb a s i so fd e e ps t u d yt h ec u r r e n tt e c h n o l o g yo fw o r k f l o w , an e w m e t h o di sp r o p o s e di nt h i sp a p e r , w h i c hi st ou t i l i z ead i s t r i b u t e dm e s s a g em i d d l e w a r e t o i m p l e m e n t d i s t r i b u t e d r u n n i n g o fw o r k f l o w e n g i n e s t h e n t h ef r a m e w o r ka n d p r i n c i p l e so ft h ed i s t r i b u t e dm e s s a g e m i d d l e w a r ea r ed i s c u s s e di nd e t a i l f u r t h e r m o r e ,a n e w ,s i m p l ea n de f f e c t i v ed e s i g n o fw o r k f l o wm o d e lw h i c hi su s e df o rt h em o d e l i n go f b u s i n e s sf l o w si s p r o p o s e db yu s i n gd i r e c t e da c t i v i t yg r a p hi n t h i s p a p e r a n dt h e i m p l e m e n t d e t a i l so ft h ew o r k f l o we n g i n eb a s e dt h em o d e l a r ea l s od e s c r i b e d w i t ht h e h e l po ft h e a b o v ew o r k ,o u rw o r k f l o wp l a t f o r mc a nb en a t u r a l l yc o n s t r u c t e d o u r p l a t f o r mh a sa na d v a n t a g eo v e rt h eo t h e r w o r k f l o wm a n a g e m e n ts y s t e m si nt h ea s p e c t s o fs u p p o r t i n gl a r g e s c a l ea p p l i c a t i o n s ,r e t r a c t i l i t yu s a b i l i t ya n de x p a n s i b i l i t y f i n a l l y , t h ep a p e rd i s c u s s e st h ef u r t h e rp r o b l e m st os t u d ya n dt h ei m p r o v e m e n t so ft h em o d e l a n dt h ef r a m e w o r k k e y w o r d s :c o n c u r r e n tp r o c e s s i n gp a t t e r n d i s t r i b u t e dm e s s a g em i d d l e w a r e w o r l d l o wm o d e lw o r k f l o we n g i n e y5 8 3 3 9 8 创新性声明 本人声明所呈交的论文是我个人在导师的指导下迸行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容外,论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其他教育机构的学位或证书而使用过的材料。与我同工作的同志对本研究所做 的任何贡献均已在论文中做了明确地说明并表示了谢意。 本人签名垒王室艺 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:学校 有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或 部分内容,可以允许采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后遵守此规定) 本人签名盘塾玉龟眨 日期 导师签名 沁f 6 日期五壁竺主: 第一章绪论 第一章绪论 1 1 引言 自从九十年代以来,由于企业之间竞争日趋激烈,越来越多的企业不得不利 用信息技术去支持它们的业务过程处理以适应快速变化的商业环境以提高企业的 工作效率和工作质量。与此同时,随着计算机网络及通信技术的发展,各种面向 组织机构的信息系统也得以广泛地使用。 作流管理系统逐渐从信息系统独立出来, 在面向企业的信息系统发展过程中,工 作为一个通用的支撑工具提供给应用系 统,因此,工作流管理系统为信息系统的开发提供了一种新的范式。当前,工作 流管理系统被应用于企业等组织的办公自动化,并和业务过程重组b p r ( b u s i d e s s p r o c e s sr e e n g i n e e r i n g ) 、电子商务、虚拟企业、其他群件等结合在一起被称为 组织计算( o r g a n i z a t i o nc o m p u t i n g ) 。现在对工作流技术的研究引起了来自研究 机构和产业界学者们的极大关注,而且经过多年的研究和开发,越来越多的具有 工作流管理功能的商业产品逐渐走向市场。 1 1 1 工作流的产生背景 在现代企业经营过程中,流程的概念也几乎充斥着各行各业的业务逻辑。而所 谓流程,简单讲就是一系列有着先后执行顺序的活动任务集合;同时信息在活动 间不断地共享或流动。但由于信息需要一定的载体和方法才能实现有效的传递, 因此就有必要先研究一下信息在活动间的传递方式。 传统方式是采取纸张作为媒介,利用通知、文件、信函、传真、报告等形式在 不同的业务部门或人员之间进行信息传递。这种处方式虽然比较直观,但信息传 递和处理方式的效率太低,需要花费相当的人力、物力来完成信息的处理、组织、 储存以及查询检索,同时这种方式也降低了对客户需求的响应速度,给企业的经 营管理带来不利的影响。 随着计算机在企业中应用越来越广泛,传统方式被一种新兴的无纸化、采用电 子文档作为载体的方式所替代。这种方式不仅带来了处理速度指数级的增长,且 带来了思想观念的转变:即如何使活动集合构成的流程自动化起来,并能对流程 的运转情况进行监管,从而能不断的对流程进行优化和完善,为客户提供更优质 的服务。 而且在实际业务环境中,不同的企业对业务有不同的规则定义,即使是同一个 企业在不同条件下业务规则也可能会发生变化。业务规则的多样性和多变性决定 了企业工作流程的多样性与多变性。这样,若企业采取工作流管理,不但能减少 基于分布式消息中间件的工作流平台 在业务执行过程中由于人为因素造成业务流程与预先规定的不一致,而且能快熟 灵活的制作或更改业务流程,以适应激烈的市场竞争。 因此,工作流,即w o r k f l o w ,是起源于生产组织管理和办公自动化领域,是 针对工作中具有固定程序的常规活动而提出的一个概念。通过将工作活动分解成 定义良好的任务、角色、规则和过程来进行执行和监控,达到提高生产组织水平 和工作效率的目的,从而为企业更好地实现经营目标提供了先进的手段。 1 1 2 工作流定义及w f m c 参考模型 由于工作流技术发展各异,为了给其制定相关规范,实现不同工作流产品的互 操作,1 9 9 3 年,工作流管理联盟( w o r k f l o wm a n a g e m e n tc o a l i t i o n ,w f m c ) 成立 了。w f m c 作为工作流领域官方标准组织,给出的工作流定义是:工作流是一类完 全或部分自动执行的经营过程,它根据一系列的过程规则,文档、信息或任务能 够在不同的执行者间传递与执行。在实际情况中可以更广泛地把凡是由计算机软 件系统( 工作流管理系统) 控制其执行的过程都称为工作流。 我们认为:工作流是业务过程的计算模型,即将相应的业务逻辑和业务规则在 计算机中以恰当的模型进行表示并对其实施计算。业务过程是若干业务活动的集 合,这些业务活动按照一定的规则前后链接在一起,相互协作,以便达到一个共 同的目标。业务活动则是能够完成特定的功能的一个实际环节,它在信息系统中 通常针对具体的应用逻辑。因此,一个工作流包括一组活动及它们的相互顺序关 系,还包括过程和活动的起始和终止条件,以及对每个活动的描述。而工作流管 理系统是指运行在一个或多个工作流引擎上,用于定义、实现和管理工作流运行 的一套软件系统。它负责与工作流的执彳亍者交互。推进工作流实例的运行,并监 控工作流的运行状态。 为了对工作流管理系统的开发起到一个指导作用,工作流管理联盟( w f m c ) 给 出了工作流系统的一个通用框架一一工作流参考模型。在工作流参考模型中,工 作流引擎是工作流管理系统的核心。工作流引擎是为工作流管理系统在定义提供 支持、同时在运行时提供解释和执行服务的一组数据模型和软件。 下图为w f 参考模型的体系结构图。 第一章绪论 雷 营姜氅 下面对上图中出现的一些名词作出详细解释。 工作流控制数据:工作流机通过工作流控制数据来辨别每个过程或活动实例的 状态,由工作流机来进行控制。用户、应用程序都不可对其直接进行读写操作, 但可通过发送消息请求来获得工作流控制数据的内容。 工作流相关数据:工作流管理系统通过工作流相关数据来确定过程实例状态转 换的条件,并选择下一个将要执行的活动。这些数据可被应用程序访问并修改。 工作流应用数据:是企业完成具体业务功能所需要的数据。应用程序可直接操 作该数据。 任务表是工作流机为用户分配的任务项队列表;任务表管理器则对用户和任务 表之间的交互进行管理。管理器要完成的功能有:支持用户在任务表中选取一个 工作项;重新分配工作项;通报工作项的完成;在工作项被处理的过程中调用相 应的应用程序等。 由图1 - 1 我们可以得到:工作流系统在实际的实施中大致可以分为三个阶段: 即模型的建立阶段、模型的实例化阶段和模型的执行阶段。在模型的建立阶段主 要利用过程建模工具,将企业实际的经营过程转化为计算机可处理的工作流模型; 在模型实例化阶段完成每个过程设定运行所需的参数,并分配每个活动所需的资 基于分布式消息中间 牛的工作流平台 源;在模型执行阶段主要完成经营过程的执行,如人机交互和应用的执行,并对 过程与活动的执行情况进行监控与跟踪。 我们现在知道工柞流管理的最大优点是实现了应用逻辑和过程逻辑的分离。因 此我们可以在不修改具体功能实现的情况下,通过修改过程模型来改变系统功能, 完成对经营过程部分或全部过程的集成管理,有效地把人、信息和工具合理的组 织在一起,发挥系统最大的效能,即在适当的时间内把适当的消息传给适当人的 要求。 i i 3 工作流的应用领域和优点 工作流技术的应用领域非常广泛,包括政府机关( 检察院、海关、税务、专 利审查、基金管理等) 的电子政务、工厂、保险索赔处理、投资管理、贷款申请等。 由于信息技术的发展和日趋激烈的商业竞争,人们不再满足于独立、零散的 办公自动化和计算机应用,而是需要综合的、集成化的解决方案。作为一种对常 规性事务进行管理、集成的技术,工作流技术的出现是必然的。它可以带来以下 收益: 1 ) 提供方便灵活的流程定义工具: 2 ) 按照既定的业务规则管理和监督业务的运行; 3 ) 及时发现业务瓶颈,并进行有效疏导或改善业务流程; 4 ) 提高工作效率,有效缩短业务处理周期; 5 ) 避免传统处理方式中的随意性造成业务流程混乱; 6 ) 减少或避免人为因素造成的原则性错误及由此带来的损失; 7 ) 增强业务各环节的协作能力,使业务运傲更加顺畅; 8 ) 有利于业务的评估和业绩考核; 9 ) 新员工可以迅速适应本职工作; 1 0 ) 离效率的业务处理有助予提高客户服务水平和企业竞争& 力: 1 1 ) 由于业务处理主要由业务人员自行处理,并且业务的管理由工作流服务器承 担,各业务主管将从以前大量的事务中解放出来,将主要精力用于更重要的 事情; 1 2 ) 为帮助企业适应新形势而进行业务流程重组提供有效的分析手段和技术支持; 1 3 ) 与e r p 的业务功能进行有效地集成,使e r p 的应用具有更强的灵活性。 第一章绪论 1 2 国内外研究应用现状 1 2 1 工作流技术的研究 在工作流的技术研究中,比较有名的是i b m 公司a l m a d e n 研究中心的e x o t i c i 项目,以及佐治亚大学计算机系的m e t e o r 项目、w i d e 项目和m e n t o r 研究项目。 其中e x o t i c a 和m e t e o r 都是完全分布的工作流管理系统,w i d e 和m e n t o r 则采用 c s 结构,活动间的导航、活动执行情况的管理、异常情况的处理等都是由处于服 务器端的工作流机来完成。 1 2 2 工作流产品的分类 a 根据实现的业务过程分类: 1 ) 管理型工作流:在这类工作流中活动可以预定义,并且有一套简单的任务 协调规则; 2 ) 设定型工作流:一般用来处理异常或发生概率比较小的情况: 3 ) 协作型工作流:参与者和协作的次数较多,在某个步骤上可能反复发生几 次直至得到某种结果,甚至返回到前一步骤; 4 ) 生产型工作流:实现重要业务过程的工作流: b 根据底层实现技术分类: 1 ) 以通讯为中心:这种工作流通常以电子邮件或某种消息传递为底层的通信 机制; 2 ) 以文档为中心:这种工作流基于文档路由,同外界应用的交互能力有限; 3 ) 以过程为中,t h , :这种工作流对应生产型工作流,般建立在数据库之上, 由自己专用的通信机制并且提供了同外部交互的接口: c 根据采用的任务项传递机制分类: i ) 基于文件的工作流系统:以共享文件的方式来完成任务项的传递; 2 ) 基于消息的工作流系统:通过用户的电子邮件系统来传递任务项信息; 3 ) 基于w e b 的工作流系统:通过浏览不同页面来实现任务的协作: 4 ) 群件与套件系统:需要依赖于自己系统的应用基础结构,包括消息传递、 目录服务、安全管理、数据库与文档管理服务等,本身构成了一个较完整 的应用开发环境:典型产品有i b m 公司的l o t u sn o t e s ; 12 3 典型工作流产品介绍 1 ) i b m 的m q s e r i e sw o r k f l o w m q s e r i e sw o r k f l o w 将经营流程从应用逻辑中分离出来,以使在最少的时 基于分布式消息中间件的工作流平台 间内用最快的速度集成复杂的应用与资源,实现降低成本、减少错误、提 高生产力,从而根据市场需求灵活的改变经营过程的目标。它主要以i g m 的消息队列产品m q s e r e s 为底层通信支持,将分布在一个异构平台内不同 的活动、系统和应用程序有机的集成起来,为i n t e r n e t 环境下实现电子商 务提供了保障。该系统具备的特点有:支持异构系统;可以根据模型定义 自动分配任务:图形化界面定义过程:帮助用户定义和优化过程。m q s e r i e s w o r k f l o w 由工作流服务器、管理功能模块、程序执行代理、审查监视功能 模块等组成。 2 ) a c t i o nt e c h n o l o g i e s 公司的m e t r o r m e t r o 是一套基于w e b 的工作流管理软件。它不仅能够管理确定的过程, 而且对过程中不可预见的问题、要求和机遇也可进行控制,还为用户提供 了管理不确定的任务和协作的工具。它的数据模型是基于对话行为的模型, 在活动的请求者和活动的执行者之间对要完成的活动达成协议,基于对话 机制的模型强调用户满意,而不仅是完成某一项的任务。其中共分四个阶 段来完成一个任务:请求完成某项任务;双方就要完成的活动达成协议: 执行者完成活动:请求者评价完成情况。m e t r o 系统具备的特点是:实时 提供状态信息;瞬间智能的分配任务到用户的电子信箱;提供过程一致性 服务;提供功能强大的图形化过程编辑器;可以时刻跟踪过程,并对过程 模型评估和改进:支持w e b 技术; 3 ) 西安协同公司的s y n c h r o f l o w 工作流管理系统 s y n c h r o f l o w 符合w f m c 的参考模型标准,并以流行的j 2 e e 作为底层通信 支持。引擎不仅支持顺序流程的流转,而且还支持分支、并发、循环、子 过程、同步、异步、竞争、多工作流、活动组、静态活动等,在分支上可 以定义条件,实现按条件自动流转,条件转移之间还可设置逻辑关系;在 并发流转中,多个活动节点可以同时激活;在某些活动节点上,也可以通 过创建子过程来完成任务。并以图形化的方式完成过程定义工作:以树状 结构图形化方式由系统管理员统一定义和维护组织机构信息:同时,系统 亦提供有关工作过程的统计数据和报表,动态改变过程的状态,协调各个 部分的关系,并进两提升经营管理的效率。另外还有负载平糖提高工作流 的工作效率。 1 2 4 现有工作流产品存在的不足和平台设计的目的。 工作流管理系统的开发由于最初阶段缺乏统一的普遍遵循的标准,以及采用的 第一章绪论 支撑技术、接口上的不同,导致存在种种不足。具体分析起来,主要有以下几点: 1 ) 工作流必须有底层的通信基础结构的支持。即工作流必须建立在适当的底 层通信基础结构之上,以便实现执行工作流所需要的分布式计算环境,比如: c o r b a 、d c o m 、5 2 e e 等都可以选择。但就目前能够实现分布式计算环境的产品来看, 在实际的应用过程中仍然显得不够成熟,在安全性、容错性、可靠性等方面均不 能满足企业的需求,而且在价格上也给企业造成一定的负担,使企业必须花费额 外的经费和精力去构筑底层环境。 2 ) 缺乏标准不同的产品具备自己的一套工作流模型、工作流定义语言和a p i 函数。在缺乏标准的情况下,用户一旦选定一种产品后,就很难过渡到同类的其 他产品上。即在不同的系统间缺乏互操作的接口,使得用户有很多的后顾之忧。 3 ) 实现的复杂性一工作流在企业的应用是一个复杂的实施过程。需要完成的 任务包括:对外部的应用系统进行包装以便工作流机在必要的时候能够激活它; 建立工作流机所必需的分布式计算环境:设计开发相应的用户界面:制定相应的 管理规程和用户操作规范等。 4 ) 系统的安全性目前的工作流管理系统对系统运行中出现的并发访问和异 常错误缺乏正确和可靠的支持。对出现多个活动同时访问共享资源的情况,为了 保证系统能够正常运行,必须要进行并发控制,以防止出现脏数据:对工作流在 执行过程中出现非正常中断时,必须要注意恢复数据并保持数据的一致性。 5 ) 性能问题目前大多数的工作流无法满足企业对每天处理几万个,甚至每 小时处理几千个业务的需求,即对大规模业务的负荷无法胜任。 6 ) 缺乏对工作流进行分析、仿真和纠错的工具; 当然,随着工作流技术的发展和工作流新产品的不断问世,上述不足大部分 都得到改善,甚至消失。然而,关于工作流性能的问题却始终存在,即般的产 品在应付有限的并发处理基本没什么问题,但面对日益不可控的大规模的用户需 求,往往表现不佳,对用户的请求不能及时响应等。同时,许多产品在工作流建 模上处理得过于复杂,需要专门的技术人员辅助建模等。还有国内各种企事业单 位在执行业务流程方面并不十分规范,许多情况下需要根据现实进行人工干预, 但这种情况在开始的建模过程中并不好充分估计,从而使得流程模型不能充分满 足中国企事业的实际需求。针对上述几种问题,我们不得不重新审视用什么来作 为工作流的底层通信基础,用什么工作流模型才能更为简单的建模和满足国内实 际的不规范流程。 基于分布式消息中间件的工作流平台 1 3 论文主要内容 提高工作流管理系统整体性能的一个重要策略是工作流机的分布,各分布式 工作流机的协作将使系统从结构上变得更加合理,是提高工作流管理系统可靠性、 灵活性和扩展性的关键。 决定工作流管理系统整体性能的另一个重要策略是工作流模型的保存方式。 通常工作流的保存方式有基于文件和基于数据库两种。在基于文件的1 5 f f 烬中,所 有的数据都保存在文件中,过程的执行时就从文件中解析模型放到共享内存中, 再对数据进行查询与处理;在基于数据库的w f m s 中,所有的数据都保存在某种类 型的d b m s 中,过程的执行实际上就是用d b m s 的s q l 机制对这些数据的查询与处理。 显然在大规模应用的系统中,采用基于数据库w f m s ,将能自然获得数据库系统提 供的大规模数据并行处理的优势。 因此,为提高工作流管理系统的整体性能,就应该设计一种基于数据库的分 布式的工作流管理系统。至于底层使用的通讯结构,可以从t u x e d o 中间件在并发 性能要求非常高的行业里的广泛应用中得到启示,可用一个功能上类似于t u x e d o 的消息中间件来支持通信,以适应我们在性能上对大规模并发处理的苛求。因而 我们的最终解决思路是:基于分布式消息中间件和利用数据库并发处理的工作流 平台解决方案。 本文的贡献在于:首先提出了一种分布式的消息中间件模型;来作为工作流 的底层通信结构,并实现工作流机的分布执行;而后又通过采用有向活动图的方 法,来提出了一种简单而有效的工作流模型设计方案,并给出了这种模型的实现 原理和相关细节,因而使设计的工作流管理平台能够适应日益增长的大规模的负 荷冲击,并能够自由的扩充。 当然,为了使我们的系统平台具有较好的功能性、开放性,还需要按造w f m c 参考模型的标准来设计自己的平台框架,及选择由w f m c 定义的一系列系统结构、 模型和应用编程接口作为我们设计和实施的依据。 论文的内容安排如下:第二章:介绍分布式消息中间件的设计方案:第三章: 介绍工作流模型的设计:第四章:从实现角度,讲述工作流引擎的工作原理:最 后是致谢和参考文献 第二章分布式消息中间件的设计方案 第二章分布式消息中间件的设计方案 2 1 两层与三层结构 圊 厘甄厘轧垣垦 图2 - 1 传统的c s 系统结构图 具体而言,传统的c s 两层结构系统有如下不足: 1 ) 网络数据通信量大:由于d b s ( d a t a b a s es e r v e r ) 的特长是数据的存取, 并不擅长计算,因此,几乎所有的业务功能都在客户端应用程序中实现( 基 于此,我们一般将c s 系统称为“胖客户”系统) 。为了实现某项业务功 能,客户端应用程序需要将所需数据从d s s 下载到本地,然后计算得出结 果,因此大大增加了网络中的数据通信量。由于c s 系统对网络带宽要求 比较大,并且对带宽的要求随客户端应用的数目线性增长,因此不利于系 1 0 基于分布式消息中间件的工作流平台 统的远程分布式部署。 2 ) d b s 对客户端应用程序不透明:客户端直接连接到d b s 上,因此,d b s 的 任何改变,如i p 地址被更改了都会影响客户端应用程序。当客户数目多, 物理位置比较分散时,将为系统的部署和管理带来诸多麻烦。 3 ) 系统规模不易扩充。系统资源不能得到充分利用:通常情况下,为了提高 系统的性能,客户端应用在启动时同d b s 建立一条数据库连接,在客户端 应用运行的过程中,此数据库连接一直保持。我们称这种方式为“永久连 接”方式。当采用“永久连接”方式时,会消耗大量的系统资源,如果要 扩充系统的规模,就必须增加软硬件资源,而实际上现有的或者新增的软 硬件资源并没有得到充分利用,形成很大的投资浪费。 4 ) 业务逻辑和数据逻辑不能分离:这是存在于c s 系统中最大的个问题。 由于此,当我们需要某项功能时,虽然此功能模块在现有的某个系统内已 经实现,但是我们在新的应用中若要提供此功能模块,还是要重新实现, 这就带来了许多重复投资。在任何一个企业中,数据和业务都是相对稳定 的,只有数据显示的方式( 如报表) 和业务的流程会在一定程度内灵活变 化,因此业务逻辑的可重用性是非常高的但是c s 结构同企业的这种内 在特性( 指“数据和业务是相对稳定的”) 相违背,因此,使用c s 结构 的系统将会给企业带来诸多后续麻烦。 由于c s 系统存在诸多不足,计算机工业界在长期的理论和实践后,引入三 层乃至多层体系构架,即将业务逻辑从客户机和数据库服务器中抽象出来形成独 立的应用服务器。由应用逻辑服务器负责建立数据库连接,访问并修改数据:同 时,作为表示层的客户端并不直接与数据库连接,而只与应用逻辑服务器建立消 息通道,传递数据处理的请求。下面是典型的三层系统结构图。 数据层 业务( 应用) 逻辑 5 蓟l 圄照虱 睦剥遮剥坛刺 秀芦霞芹芎蒂碴芹萨嚆蓐 图2 - 2 典型的三层系统结构图 表示层 第二章分布式消息中间件的设计方案 将原有的c s 结构中的客户端( c ) 的业务( 应用) 逻辑部分分开,作为一个 单独的实体( 应用服务器) ,客户端仅仅提供业务表现功能,如数据的显示,报表 的定制等等。 相比c l s 系统,三层系统在传统的c ( e l i e n t ) 和s ( d a t a b a s es e r v e r ) 之 间加入了a s ( 应用服务器,a p p l i c a t i o ns e r v e r ) ,c 不再直接同d b s 相连,而是 连接到a s 上,同数据库的连接由a s 控制,所有同数据库有关的信息对客户端应 用透明。a s 的主要特点或功能如下: a ) 所有的同业务有关的应用逻辑都在a s 上实现,a s 负责数据库中数据的存取; b ) a s 以服务( 如t u x e d o ) 或对象( 如w e bs p h e r e 或w e bl o g i c ) 的方式为客 户提供服务,每一项服务或每一个对象实现了特定的应用功能。 采用三层结构的系统克服了c s 两层结构系统的诸多不足: 1 ) 减少了网络数据通信量:在三层结构系统中,客户端应用向a s 发送请求, a s 将请求的结果返回给客户端应用( 基于此,三层结构系统般也称为“瘦 客户”系统) ;不像c s 系统,d b s 将所有参与计算的数据都返回给客户端 应用。因此大大减少了网络数据通信量。另外,a s 和d b s 一般处于同一服 务器上,或者他们处于个单独的子网内,子网内部采用高速线路相连, 因此也大大提高了系统的处理性能。 2 ) d b s 对客户端应用透明:这是显而易见的,因此d b s 的任何改变不会导致 客户端应用的重新部署或更改。 3 ) 系统规模易于扩充,系统资源得到充分利用,有效保护和利用了用户的投 资:相比于c s 系统,客户端应用和d b s 之间采取数据库连接,三层结构 系统的客户端应用和a s 之间一般采取t c p 或u d p 连接,同数据库连接相 比,t c p 或u d p 连接占用的系统资源要小得多。a s 同样采用“永久连接” 的方式同d b s 相连,但是在保证系统性能的原则下,a s 可以自动调节同 d b s 建立的数据库连接数,因此不再需要“客户端应用同数据库连接具备 一一对应关系”,比如,5 个客户端应用程序可以共享2 条数据库连接。 这样在保证系统性能的前提下大大节省系统资源。 4 ) 应用服务器上的业务功能模块可以被所有的应用所使用( 只要权限许可) , 因此可以最大限度的实现业务模块共享,避免了重复投资1 5 ) 系统更安全,a s 可以提供比数据库系统更高的安全性。对外接口以“服务” 或“对象”的方式提供,系统的数据库部署的位置和数据库中表的结构并 不对外部系统开放,因此可以有效的保护信息系统中最重要的资源一一数 据库,有效的防止了客户端的误操作而导致的数据不一致。 6 ) 跨平台,a s 一般具备跨平台特性。 7 ) 由于a s 使用将系统资源进行“p o o l i n g ”的机制,因此系统运行更平滑, 基于分布式消息中间件的工作流平台 可以有效防止由于突发性峰值而导致系统性能急剧下降的情形出现。 8 ) 容错处理。当a s 中的某个模块由于意外宕机( 如内存非法访问) 。a s 可以 启动一个全新的模块取代它,因此可阻增加系统的容错能力。 逸迦趣遮、j 耋鼹驺瀚k 呻咖邮 1 4 基于分布式消息中间件的工作流平台 无法通行。 客户之间无法通信。如果两个客户最终连接到不同的服务进程上,那么这 两个客户之间如果要通信,就必须通过共享内存或者分派进程,客户的信 息必须记录在共享内存中。 分派算法不好设计,无法实现请求负载平循。很显然,如果有两个客户是 不同级别的,它们发出的请求数有很大差异的话,这些差异不能在两者之 间进行有效的平衡或折衷。 采用路径分派的典型案例是o r a c l e ,d b 2 等商业数据库,t u x e d o 中也引入 了路径分派机制。 多进程并发程序中路径分派通常依靠u n i x 域流套接口来实现。具体说就是当 分派进程监听到客户端的t c p 连接时,就通过s o c k e t p a i r 函数创建的一对流套接 字,把监听到的客户端t c p 套接字传送给处理数据的服务进程,从而达到客户与 服务进程直接通信的目的。 2 2 2 数据分派( d a t ad i s p a t c h i n g ,d d ) 所谓“数据”就是客户发送的请求,采用d d 模式的系统结构如下图所示: 分 ,i 服务进程l il 派 i 7 进 程 叫服务进程n 图2 - 4 使用d d 的系统结构 数据分派分为如下几个步骤: 1 ) “客户”同“分派进程”建立一条通信路径,比如t c ps o c k e t : 2 )“分派进程”从该路径上接收客户的请求,并将接收到的请求发送给某个合适 的服务进程; 3 ) 服务进程对该请求进行处理 d d 模式最大的特点是可以根据某种算法。分派进程将客户传送过来的数据发 送给不同的服务进程去处理,故而可以消除p d 模式的一些缺点。但是由于客户不 是直接同服务进程通信,因此i o 性能会差一些;同时由于所有的数据都要经由分 派进程,故很容易在分派进程处形成性能瓶颈。 多进程并发程序中数据分派通常有两种方式。一种是直接方式,分派进程直接 将数据传给服务进程去处理;更为常见的是间接方式,依靠消息队列来中转,具 第二章分布式消息中间件的设计方案1 5 体说就是每个服务进程通常都有唯一的对应消息队列来与分派进程建立消息通 道,即分派进程通常只往服务进程对应的消息队列中发送数据,从而达到与服务 进程通信的目的。 采取数据分派的如一些典型的集群系统,如m o s i x 。 2 2 3 主动竞争( a c t i v ec o m p e t i n g ,a c ) 主动竞争用得十分巧妙,也十分简单。主动竞争模式物理上没有消息分派器, 但多个对等的服务进程主动“互斥地”访问某个固定的消息队列或请求接入点, 以获取消息或请求。处理完该消息或请求后,又去拿下一个请求。 主动竞争机制可以使得每个服务进程“自然而然”的出于最大负荷状态,这些 服务进程就好像一些永远不知疲惫的机器人,任劳任怨,自觉工作! 虽然主动竞 争模式效率相当高,但由于物理上没有消息分派器,因此通常不能单独与分布的 客户直接通信,即在应用时往往要结合路径分派或数据分派一块使用。采取主动 竞争的典型案例是a p a c h e ,这个世界上最流行的w e bs e r v e r 。 基于分布式消息中间传的工作流平台 2 3 消息中间件的框架 下面结合上述三种典型的并发处理模式,讲述一下我们消息中间件的设计思路 和框架。 作为构建三层体系结构的消息中间件,由于涉及到日益增长的大规模商业应 用,对服务器系统资源的要求是无限扩增的,而硬件又决定了系统资源是有限的, 那么我们该如何处理这对矛盾呢? 比如在应用时通常都需要与数据库打交道,这 就需要与数据库建立连接,而一个数据库的连接是极消耗系统资源的:倘若每个 客户端的应用都与数据库建立一个连接,那么系统资源很快就会被大量的同一时 刻的客户应用给吞噎掉。同时一个客户应用的整个阶段通常只有部分阶段需要调 用数据库,故对这样一个满负荷的系统,其实大量的时间数据库仍是处于闲置状 态。也就是说系统资源没有得到充分的利用。因此通常采用的改进方式是同时让 多个相关的客户应用共享一条数据库连接。那么如何去实现同时让多个相关的客 户应用( 表现为客户端t c p 连接) 共享一条数据库连接昵? 一种思路是:由商业 服务进程管理( 建立和关闭) 数据库连接,这些商业服务进程形成一个进程池,进 程池中每个商业服务进程不停的从对应的消息队列中取出数据,去处理一组相关 的商业服务( 主动竞争并发模式) ;另一方面来自于客户端t c p 连接传送的数据需 要按业务的类型,分配给进程池中不同的商业服务进程去处理( 数据分派并发模 式) 。这样圊时的多个客户端应用就与一个商业服务进程联系到一块,也即共享 一条数据库连接。 但由于前述数据分派模式的缺陷,为了提高效率和性能,尚可进一步改进: 把路径分派和数据分派结合到一块,即采用先路径分派再数据分派的双重并发模 式。这种双重并发模式具备了路径分派和数据分派模式的所有优点,同时又基本 上互榻抵消了各自的缺陷。也就是说既有数据分派将某种类型的客户应用分给相 关的商业服务去处理,让它们共享该商业服务的数据库连接的优点,又有路径分 派所具备的很高效率和性能。据统计,倘若争对相同的系统硬件,若采取改进方 式可以同时满足是原来方式九倍的客户端应用,由此可见,改进方式性能上的优 点。 笙三童坌塑蔓型星! ! ! ! 塑望生查塞! ! 该消息中间件体系结构图如上图。在这个系统中主要存在三组进程: 监听器1 i s t e n e r 进程:监听客户端t e p 连接; w s h 进程:在c 1 l e n t 和s e r v e r 之间传递消息的工作进程; s e r v e r 进程:提供特定服务的进程: 另外k e r n e l 进程是监控与调节进程池中各个s e r v e r 进程的状态与信息; k e r n e ld b 是一块共享内存,存放关键的信息,用于进程问数据通信。 客户发送消息时存在的并发模式有: c 1i e n t ,监听器和w s h 之间采取路径分派: w s h 和消息队列a 之间采取数据分派; 消息队列a 和s e r v e r 之间采取主动竞争; 服务提交处理结果存在的并发模式有: s e r v e r 和消息队列b 之间采取数据分派( 要沿原路返回,找到上一步发送消 息的对应w s h ) ; w s h 和消息队列b 之间采取主动竞争; w s h 和c l i e n t 之间采取路径分派( 要沿原路返回,找到发送消息的客户) ; 该消息中间件的整个消息扭转过程可简化为: c 1 i e n t 一 w s h 一 消息队列a 一 s e r v e r 处理一 s e r v e r 提交结果一 消息队列b 一 w s h 一 c 1 i e n t 1 8基于分布式消息中间件的工作流平台 2 4 负载均衡 网络的各个核心部分随着业务量的提高、访问量和数据流量的快速增长,其 处理能力和计算强度也相应增大,使得单一设备根本无法承担。在此情况下,如 果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再 面临下一次业务量的提升,这又将导致再一次硬件升级的高额成本投入,甚至性 能再卓越的设备也不能满足当前业务量的需求。于是,负载均衡机制应运而生。 2 4 1 负载均衡定义 服务器必须具备处理大量并发访问服务的能力,其处理能力和i o ( 输入输 出) 能力已经成为提供服务质量好坏的重要因素。负载均衡( s e r v e rl o a db a l a n c e ) 是建立在现有网络结构之上,作为一种策略,能够让多台服务器或多条链路基同 承担繁重的计算或i o 任务,从而以较低成本消除网络瓶颈、扩展网络设备和服 务器的带宽、增加吞吐量、加强网络数据处理能力、加快服务器的响应速度、提 高网络的灵活性和可靠性。 负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节 点设备上分别处理,减少用户等待响应的时间:其次,单个重负载的运算分担到 多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用 户,系统处理能力得到大幅度提高。 2 4 2 目前比较常用的负载均衡技术 1 基于d n s 的负载均衡 通过d n s 服务中的随机名字解析来实现负载均衡,在d n s 服务器中,可以为 多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名 字时得到其中一个地址。因此,对于同一个名字,不同的客户机会得到不同的地 址,他们也就访问不同地址上的w e b 服务器,从而达到负载均衡的目的。 d n s 负载均衡的优点是简单、易行,并且服务器可以位置透明。然而它也存在 不少缺点,一个缺点是为了保证d n s 数据及时更新,一般都要将d n s 的刷新时间 设置的较小,但太小就会造成太大的额外网络流量,并且更改了d n s 数据之也不 能立即生效;第二点是d n s 负载均衡无法得知服务器之间的差异,它不能做到为 性能较好的服务器多分配请求,也不能了解到服务器的当前状态,即无法较好的 做到均衡。 2 反向代理负载均衡 使用代理服务器可以将请求转发给内部的服务器,让代理服务器将请求均匀 地转发给多台内部服务器之一上,从而达到负载均衡的目的。这种代理方式与普 第二章分布式消息中问件的设计方案 通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部服务器,而 这种代理方式是多个客户使用它访问内部服务器,因此也被称为反向代理模式。 使用反向代理的好处是,可以将负载均衡和代理服务器的高速缓存技术结合 在一起,提供有益的性能,具备额外的安全性,外部客户不能直接访问真实的服 务器。但是每针对一次代理,代理服务器就必须打开两个连接,个为对外的连 接,一个为对内的连接,因此对连接请求数量非常大的时候,代理服务器的负载 也就非常之大了,因此在反向代理服务器处会成为服务的瓶颈。 3 ,基于n a t 的负载均衡技术 网络地址转换为在内部地址和外部地址之间进行转换,以便具备内部地址的 计算机能访问外部网络,而当外部网络中的计算机访问地址转换网关拥有的某一 外部地址时,地址转换网关能将其转发到一个映射的内部地址上。因此如果地址 转换网关能将每个连接均匀转换为不同的内部服务器地址,此后外部网络中的计 算机就各自与自己转换得到的地址上服务器进行通信,从而达到负载分担的目的。 2 ,4 3 常用的负载均衡算法 负载均衡策略的优劣及其实现的难易程度有两个关键因素:负载均衡算法和 对网络系统状况的检测方式与能力。即考虑到服务请求的不同类型、服务器的不 同处理能力以及随机选择造成的负载分配不均匀等问题,为了更加合理的把负载 分配给内部的多个服务器,就需要采用合适的能够正确反映各个服务器处理能力 及网络状态的负载均衡算法。通常在实际的系统中使用的负载均衡算法有: 轮循均衡( r o u n dr o b i n ) :每一次来自网络的请求轮流分配给内部中的服务 器,从1 至n 然后重新开始。此种均衡算法适合于服务器组中的所有服务器都有 相同的软硬件配置并且平均服务请求相对均衡的情况。 响应速度均衡( r e s p o n s et i m e ) :负载均衡设备对内部各服务器发出一个探 测请求( 例如p i n g ) ,然后根据内部中各服务器对探测请求的最快响应时间来决定 哪一台服务器来响应客户端的服务请求。此种均衡算法能较好的反映服务器的当 前运行状态,但这最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应 时间,而不是客户端与服务器间的最快响应时间。 最少连接数均衡( l e a s tc o n n e c t i o n ) :客户端的每一次请求服务在服务器停 留的时间可能会有较大的差异,随着工作时间加长,如果采用简单的轮循或随机 均衡算

温馨提示

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

评论

0/150

提交评论