程序设计方法-第五讲中间件技术_第1页
程序设计方法-第五讲中间件技术_第2页
程序设计方法-第五讲中间件技术_第3页
程序设计方法-第五讲中间件技术_第4页
程序设计方法-第五讲中间件技术_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、1中间件技术中间件技术21.李华飚等李华飚等. java中间件技术及其应用开发中间件技术及其应用开发. 水利水利水电出版社、水电出版社、 2007-92.杨放春等杨放春等. 异构网络中间件与开放式异构网络中间件与开放式api技术技术. 北京邮电大学出版社北京邮电大学出版社. 2007-33. 廖洪涛廖洪涛. 数字电视交互系统:中间件数字电视交互系统:中间件. 中国广播中国广播电视出版社电视出版社 . 2005-14.邹国平、黄铮邹国平、黄铮. 高速公路机电工程软件开发技高速公路机电工程软件开发技术术. 电子工业出版社电子工业出版社, 2008-105.宁焕生、张彦宁焕生、张彦. rfid与物联

2、网射频、中间件、与物联网射频、中间件、解析与服务解析与服务. 电子工业出版社电子工业出版社, 2008-4 6.成际镇、林晓勇成际镇、林晓勇. 计算机电信集成技术及应用计算机电信集成技术及应用. 人民邮电出版社人民邮电出版社, 2007-12 3分布分布: 任务已不只是在单机上运行,而是由网任务已不只是在单机上运行,而是由网络中多台计算机上的相关应用共同协作完成,络中多台计算机上的相关应用共同协作完成,需考虑网络传输、数据安全、数据一致性、同需考虑网络传输、数据安全、数据一致性、同步等诸多问题;步等诸多问题;异构异构: 计算机硬件、操作系统、网络协议、数计算机硬件、操作系统、网络协议、数据库系

3、统以及开发工具种类繁多,需考虑据库系统以及开发工具种类繁多,需考虑数据数据表示、调用接口、处理方式表示、调用接口、处理方式等诸多问题;等诸多问题;动态协作动态协作: 参与协作的应用允许位置透明性、参与协作的应用允许位置透明性、迁移透明性、负载平衡性等需求。迁移透明性、负载平衡性等需求。4应用应用1应用应用2应用应用3服务器服务器1服务器服务器2服务器服务器35应用应用1应用应用2应用应用3服务器服务器1服务器服务器2服务器服务器3中间件中间件图图2 现代应用系统结构现代应用系统结构6应用软件中间件网络软件操作系统应用软件中间件网络软件操作系统利用中间件进行协同工作的系统可协同工作7 中间件中间

4、件(middleware)是一种软件,处于系是一种软件,处于系统软件统软件(操作系统和网络软件操作系统和网络软件)与应用软件之间与应用软件之间,它能使应用软件之间进行跨网络的协同工作,它能使应用软件之间进行跨网络的协同工作(也就是互操作也就是互操作),这时允许各应用软件之下所涉,这时允许各应用软件之下所涉及的及的“系统结构、操作系统、通信协议、数据系统结构、操作系统、通信协议、数据库和其它应用服务库和其它应用服务”各不相同各不相同。 中间件的出现使计算机软件设计真正进入中间件的出现使计算机软件设计真正进入如平台无关的阶段。如平台无关的阶段。8 如果一个网络的各个节点上安装了如果一个网络的各个节

5、点上安装了ee软件,软件,各节点上的应用软件之间就可以实现各节点上的应用软件之间就可以实现相互合作相互合作。这时允许这时允许各节点可为不同的机器和操作系统各节点可为不同的机器和操作系统。 即即ee软件使各节点下层的设备对应用软件来软件使各节点下层的设备对应用软件来说变成了说变成了透明的透明的。所以。所以ee软件是实现可互操作功软件是实现可互操作功能的关键,是中间件中的能的关键,是中间件中的主体部分主体部分。执行环境执行环境(execution environment)软件软件9应用开发应用开发(application development)工具工具 应用软件要能透明地使用远程的资源,该软应用

6、软件要能透明地使用远程的资源,该软件中应有作出此种透明操作的相应指示。为此必件中应有作出此种透明操作的相应指示。为此必定要有定要有一组工具一组工具,它可以用来,它可以用来开发含开发含“透明操作透明操作远程资源远程资源”成份的应用软件成份的应用软件,或,或改造原有的无透改造原有的无透明操作能力的应用软件明操作能力的应用软件。这组。这组ad工具含有一些工具含有一些专用语言专用语言(如界面描述语言和界面调整语言等如界面描述语言和界面调整语言等)和和有关的有关的编译器编译器,使用户,使用户(特别是应用软件开发人特别是应用软件开发人员员)更方便设计网络应用软件,所以更方便设计网络应用软件,所以ad工具是

7、一工具是一个完善的中间件所必备的部分。个完善的中间件所必备的部分。10下层设备透明设施 t2平台网络网络平台平台合作方 c合作方 b合作方 a合作对象透明设施 t1图图4 具有中间件的网络系统结构具有中间件的网络系统结构11 提供了合作对象透明设施提供了合作对象透明设施t1:有了它,合有了它,合作一方不必知道合作的另一方为谁和它在何处作一方不必知道合作的另一方为谁和它在何处,只要说明自己需要怎样的服务,只要说明自己需要怎样的服务,t1就能为其就能为其物色到一个合适的合作方。物色到一个合适的合作方。 提供了下层设备透明设施提供了下层设备透明设施t2:有了它,合有了它,合作一方不必关心合作的另一方

8、所用的节点设备作一方不必关心合作的另一方所用的节点设备(机器和操作系统机器和操作系统)与本节点的差异。与本节点的差异。12按照按照idc的分类方法,中间件分为:的分类方法,中间件分为:远程过程调用中间件远程过程调用中间件分布式对象中间件分布式对象中间件数据库访问中间件数据库访问中间件事务处理中间件事务处理中间件消息中间件消息中间件13 本地过程调用的扩展,可透明地调本地过程调用的扩展,可透明地调用远程提供的服务。用远程提供的服务。 需要解决数据表示、可靠传递、服需要解决数据表示、可靠传递、服务定位等问题务定位等问题 应用实例:分布式计算环境,应用实例:分布式计算环境,dce14 对象中间件就是

9、用面向对象技术实现的、支对象中间件就是用面向对象技术实现的、支持面向对象开发和集成应用的中间件。持面向对象开发和集成应用的中间件。 对象技术的封装、继承及多态性提供了良好对象技术的封装、继承及多态性提供了良好的代码重用功能,并且对象的对外透明性也符合的代码重用功能,并且对象的对外透明性也符合中间件技术的要求。中间件技术的要求。 面向对象的中间件技术基本思想是提供一种面向对象的中间件技术基本思想是提供一种统一的接口使对象之间的调用和数据共享不再统一的接口使对象之间的调用和数据共享不再关心对象的位置、实现语言及所驻留的软硬件系关心对象的位置、实现语言及所驻留的软硬件系统。统。 omg组织的组织的c

10、orba、microsoft的的com/dcom、sun的的j2ee等等 15 连接应用程序和数据库的软件,允许通过连接应用程序和数据库的软件,允许通过单一的、定义良好的接口访问网络中来自不同单一的、定义良好的接口访问网络中来自不同厂商的数据库产品。厂商的数据库产品。(1)通用网关接口通用网关接口cgi(驻留在驻留在webserver上上)(2)专用专用api:dll形式形式 nsapi(netscape)、 isapi(microsoft)(3)通用数据库接口通用数据库接口 jdbc(sun)、odbc(microsoft)16 tpm又称分布式事务处理中间件又称分布式事务处理中间件。专门针

11、专门针对联机交易处理系统而设计。对联机交易处理系统而设计。 事务是对共享的系统资源所完成的一件工事务是对共享的系统资源所完成的一件工作,它通常是由一些列操作所组成。作,它通常是由一些列操作所组成。 事务必须具有事务必须具有acid(原子原子atomicity,一致一致consistency,隔离隔离isolation和耐用和耐用durability)属属性。性。17原子性原子性(atomicity)指的是:事务要么完整地执指的是:事务要么完整地执行行(即做完上述系列操作中的每一个即做完上述系列操作中的每一个),要么根,要么根本不执行,而绝不会出现只执行一部分操作的本不执行,而绝不会出现只执行一

12、部分操作的情况。情况。 一致性一致性(consistency)指的是:一个事务执行完指的是:一个事务执行完成,必定进入某个稳定状态;若进入的是另一成,必定进入某个稳定状态;若进入的是另一个不一致的状态,则这一事务将被丢弃而不予个不一致的状态,则这一事务将被丢弃而不予执行。执行。 18隔离隔离(isolation)指的是:一个事务与其它事指的是:一个事务与其它事务并行作用于一共享资源上时,前者的进务并行作用于一共享资源上时,前者的进行是与后者之间完全隔离开的。行是与后者之间完全隔离开的。 耐用性耐用性(durability)指的是:当一个事务完指的是:当一个事务完成时,即使系统或者共享资源发生故

13、障,成时,即使系统或者共享资源发生故障,该事务的执行结果也不会因此而丢失。该事务的执行结果也不会因此而丢失。 19 联机交易处理系统需要处理大量的分布式联机交易处理系统需要处理大量的分布式事务。事务。 分布式事务涉及到多个数据库,且允许这分布式事务涉及到多个数据库,且允许这些数据库异构,如在不同的银行间进行资金转些数据库异构,如在不同的银行间进行资金转账。账。 分布式事务需要处理大量并发进程,涉及分布式事务需要处理大量并发进程,涉及到操作系统、文件系统、编程语言、数据通讯到操作系统、文件系统、编程语言、数据通讯、数据库系统、系统管理及应用软件,是一个、数据库系统、系统管理及应用软件,是一个相当

14、艰巨的任务。相当艰巨的任务。 通过事务处理中间件简化应用开发。由它通过事务处理中间件简化应用开发。由它来负责处理联机交易过程中分布式交易的完整来负责处理联机交易过程中分布式交易的完整性、并发控制、负载均衡以及出错恢复等。性、并发控制、负载均衡以及出错恢复等。20x/open dtp模型包括模型包括3个组成部分:个组成部分: 应用程序应用程序(application program,ap)是事是事务的使用者,它是开始务的使用者,它是开始(begin)、提交提交(commit)和卷回和卷回(rollback)事务的发出者。它规定一个事事务的发出者。它规定一个事务的界限,并给出事务所包含的操作。务的

15、界限,并给出事务所包含的操作。 资源管理器资源管理器(resource manager,rm):提提供对共享资源的访问,数据库管理系统供对共享资源的访问,数据库管理系统(dbms)或文件访问系统都可以成为或文件访问系统都可以成为rm。 事务管理器事务管理器(transaction manager,tm):是是ap与与rm之间的协调员,它给每个事务分配之间的协调员,它给每个事务分配标示符,监视其进展,保证事务处理的顺利进标示符,监视其进展,保证事务处理的顺利进行,并负责事务在失败情况下的恢复。行,并负责事务在失败情况下的恢复。21图图5 tmp系统结构示意系统结构示意22 分布式事务涉及到多个结

16、点的数据的更新分布式事务涉及到多个结点的数据的更新,任何一个结点或结点间通信的失效都可能导,任何一个结点或结点间通信的失效都可能导致分布式事务的失败。因此,为了保证事务的致分布式事务的失败。因此,为了保证事务的完整性,分布式事务通常采用两阶段提交协议完整性,分布式事务通常采用两阶段提交协议(two phase commitment protocol,简称简称2pc)来提交。来提交。 两阶段提交协议的思路是两阶段提交协议的思路是tm向所有向所有rm发发出正式提交请求之前,先询问所有出正式提交请求之前,先询问所有rm是否已是否已准备好提交,仅当所有的准备好提交,仅当所有的rm都给出肯定的回都给出肯

17、定的回答时,答时,tm才发出提交的请求;如果其中有一才发出提交的请求;如果其中有一个个rm给出否定地回答,给出否定地回答,tm就指示所有的就指示所有的rm进行回卷进行回卷23阶段阶段1(准备阶段准备阶段) tm询问所有的询问所有的rm是否已准备提交。是否已准备提交。阶段阶段2(提交阶段提交阶段) tm检查所有检查所有rm的回答,只要有一个的回答,只要有一个rm给出否定的回答,给出否定的回答,tm指示所有的指示所有的rm进行回进行回滚。否则,滚。否则, tm指示所有的指示所有的rm进行提交。进行提交。24 在两阶段提交中,一个主节点被指派为事在两阶段提交中,一个主节点被指派为事务协调者务协调者(

18、coordiantor),其他节点称为事务参其他节点称为事务参与者与者(participants)。 协调者掌握提交或撤消事务的决定权,而协调者掌握提交或撤消事务的决定权,而其它参与者则各自负责本地数据的更新,并向其它参与者则各自负责本地数据的更新,并向协调者提出撤消或提交子事务的意向。一般一协调者提出撤消或提交子事务的意向。一般一个结点对应一个子事务。个结点对应一个子事务。25写begin commit到日志等待参与者返回意见有要求撤消?写commit到日志写abort到日志提交撤消写end transaction到日志准备提交?处理本地事务写abort到日志 建议撤消写ready到日志 同

19、意提交写commit到日志,并提交本地撤消本地提交等待提交全局撤消?写abort到本地日志全局撤消ack全局提交参与者协调者26事务协调者事务协调者调用接口调用接口交易监控器交易监控器客户客户转出帐户对象转出帐户对象转入帐户对象转入帐户对象1.begin()2.调用方法调用方法debit()3.登记资源登记资源4.credit()5.登记资源登记资源mit()7.prepare()mit()27应用服务交易监控器资源管理1数据库1数据库2客户begincall servicessqlsqlcommitprepare1xa_prepareprepare2xa_preparexa_commitco

20、mmit2xa_commitcommit1资源管理228常见的常见的tpm产品有产品有bea的的tuxedo microsoft的的mtssun的的jtsomg的的ots东方通的东方通的tonglink/tongeasy29消息中间件消息中间件(message-oriented middleware,mom) 原由:原由:rpc调用的缺点调用的缺点(1)客户端与服务器端需要同时在线;客户端与服务器端需要同时在线;(2)客户端需要知道服务器端的调用接口,若调客户端需要知道服务器端的调用接口,若调用接口发生改变,客户端需要做相应变化,如用接口发生改变,客户端需要做相应变化,如通过通过odbc连接访

21、问数据库,客户端需要知道连接访问数据库,客户端需要知道远程数据库的类型,若类型发生改变,还需要远程数据库的类型,若类型发生改变,还需要重新装载相应的驱动程序。重新装载相应的驱动程序。30(3)操作过程中需要一直保持与服务器端的连接操作过程中需要一直保持与服务器端的连接,直到操作结束。因而,直到操作结束。因而, (a)一旦连接中断,就意味着操作失败或数一旦连接中断,就意味着操作失败或数据丢失;据丢失; (b)通常判断连接中断的时间较长,若信道通常判断连接中断的时间较长,若信道的可靠性较差,容易造成连接中断,那么应用的可靠性较差,容易造成连接中断,那么应用效率将严重低下;效率将严重低下; (c)服

22、务器端在执行操作的过程中,并不涉服务器端在执行操作的过程中,并不涉及网上数据传输,但连接的保持占用信道,容及网上数据传输,但连接的保持占用信道,容易造成网络堵塞。易造成网络堵塞。31 这个问题可用消息中间件来解决,应用间这个问题可用消息中间件来解决,应用间通过传递消息来进行协作,是一种异步通信模通过传递消息来进行协作,是一种异步通信模式。式。 主要功能是在不同的网络协议、不同的操主要功能是在不同的网络协议、不同的操作系统和不同的应用程序之间提供可靠的和可作系统和不同的应用程序之间提供可靠的和可恢复的恢复的(若发生意外若发生意外)消息传送。这时应用系统消息传送。这时应用系统并不需要消息即时即刻传

23、递到达对方。并不需要消息即时即刻传递到达对方。32工作原理:工作原理: 应用之间以一系列消息的方式进行通信。应用之间以一系列消息的方式进行通信。 在消息传递过程中,为了避免消息被丢失,在消息传递过程中,为了避免消息被丢失,消息被保存在消息队列中。消息被保存在消息队列中。 应用把消息发送到与接收者有关的队列中。应用把消息发送到与接收者有关的队列中。消息传递机制保证将消息传送到目的地且只传送消息传递机制保证将消息传送到目的地且只传送一次一次。 消息传递过程中,应用之间不必建立联系,消息传递过程中,应用之间不必建立联系,发送者仅需将消息放入到与接收者有关的队列中发送者仅需将消息放入到与接收者有关的队

24、列中,而不必关心接收者是否在线。,而不必关心接收者是否在线。 接收者仅需从自己的队列中提取消息即可。接收者仅需从自己的队列中提取消息即可。33队列队列 缓存消息并负责消息的传递,允许程序无缓存消息并负责消息的传递,允许程序无需建立连接即可发送和接受消息。需建立连接即可发送和接受消息。 队列具有名字,队列具有名字,队列名队列名队列管理器名队列管理器名 队列具有属性。属性包含消息的发送次序队列具有属性。属性包含消息的发送次序(先进先出或带优先级的先进先出先进先出或带优先级的先进先出)、消息访问方、消息访问方式式(共享或独占共享或独占)、队列的长度和队列触发机制、队列的长度和队列触发机制等。等。 队

25、列的属性由队列管理器进行管理。队列的属性由队列管理器进行管理。34消息消息 由消息头和消息体组成。由消息头和消息体组成。 消息头是对消息结构的描述,对整条消息消息头是对消息结构的描述,对整条消息起控制作用,含有消息的属性及与消息相关的起控制作用,含有消息的属性及与消息相关的系统信息,如消息标志、消息类型、目的队列系统信息,如消息标志、消息类型、目的队列名、日期时间等。名、日期时间等。 消息体对应消息的应用数据,具体语义由消息体对应消息的应用数据,具体语义由通信双方事先约定。通信双方事先约定。35消息类型分为消息类型分为3种种: 请求消息请求消息(request):除了发送数据,该消除了发送数据

26、,该消息要求对方一定要应答。息要求对方一定要应答。 应答消息应答消息(reply):用于请求消息的回应。用于请求消息的回应。 通知消息通知消息(report):单向而不需要应答的单向而不需要应答的消息。消息。有两种基本的有两种基本的mom工作模型,分别是工作模型,分别是 消息队列消息队列(message queuing) 发表和预定发表和预定(publish-and-subscribe)。 36一对一方式:一对一方式: 消息发送到一个目的队列里,接收方可以在消息发送到一个目的队列里,接收方可以在任何时候查看该队列提取消息。任何时候查看该队列提取消息。一对多方式:一对多方式: 应用对其感兴趣的主

27、题进行登记,一旦一个应用对其感兴趣的主题进行登记,一旦一个主题被一个应用登记,那么该应用将会收到与该主题被一个应用登记,那么该应用将会收到与该主题有关的任何消息。主题有关的任何消息。 发送程序只需将消息以主题的形式发送出去发送程序只需将消息以主题的形式发送出去,由中间件来负责将消息传递给所有订阅该主题,由中间件来负责将消息传递给所有订阅该主题的应用。的应用。 消息发送到一个特定队列,客户机可以随时消息发送到一个特定队列,客户机可以随时预定该队列,并从中取得消息。预定该队列,并从中取得消息。 37本地应用程序本地应用程序消息队列接口消息队列接口消息路由和排队消息路由和排队消息通道代理消息通道代理

28、网络网络系系统统管管理理队队列列管管理理器器中中间间件件消息中间件的结构消息中间件的结构38队列管理器队列管理器负责创建和删除队列并控制队列的属性。负责创建和删除队列并控制队列的属性。 由由消息路由和排队消息路由和排队模块、模块、消息通道代消息通道代理理模块和模块和系统管理系统管理模块三部分组成。模块三部分组成。39消息路由和排队模块消息路由和排队模块负责消息传递的方向负责消息传递的方向(1)通过消息队列接口接受消息;通过消息队列接口接受消息;(2)检查消息目的队列名中的队列管理器名是否检查消息目的队列名中的队列管理器名是否是本地的。如果是,则将该消息放入对应队列是本地的。如果是,则将该消息放

29、入对应队列名的本地应用队列中,然后转到名的本地应用队列中,然后转到(5)。否则,将。否则,将该消息放入对应队列管理器名的传输队列中;该消息放入对应队列管理器名的传输队列中;(3)消息通道代理模块负责将该消息传递给远程消息通道代理模块负责将该消息传递给远程中间件系统的队列管理器;中间件系统的队列管理器;(4)远程中间件系统的队列管理器将该消息放入远程中间件系统的队列管理器将该消息放入对应队列名的应用队列中;对应队列名的应用队列中;(5)应用程序通过消息队列接口从应用队列中获应用程序通过消息队列接口从应用队列中获取该消息取该消息40消息通道代理消息通道代理(mca)模块模块负责消息的底层传递和网络

30、通道的故障恢复负责消息的底层传递和网络通道的故障恢复 mac使用底层网络协议使用底层网络协议(如如tcp或或udp等等),并采用握手方式来传送消息,即接收方的,并采用握手方式来传送消息,即接收方的mca收到消息后向发送方的收到消息后向发送方的mca发应答消息发应答消息进行确认进行确认 mac通过对网络通道的探测来获得网络中通过对网络通道的探测来获得网络中发生的故障,并负责故障的恢复,即发送消息发生的故障,并负责故障的恢复,即发送消息失败时,失败时,mca暂时代为存储此消息。当网络连暂时代为存储此消息。当网络连接再次建立后,接再次建立后,mca自动重发这条消息,无需自动重发这条消息,无需应用程序

31、干涉。应用程序干涉。41系统管理模块系统管理模块管理和维护中间件系统,包括:管理和维护中间件系统,包括:建立和删除队列通道建立和删除队列通道生成和维护队列路由表生成和维护队列路由表查询通道的状态和处理查询通道的状态和处理处理各种异常情况处理各种异常情况日志所有重要事件日志所有重要事件42触发机制触发机制 用于当消息的到达后激发处于休眠状态的用于当消息的到达后激发处于休眠状态的应用程序应用程序工作过程工作过程:消息队列消息队列启动队列启动队列队列管理器队列管理器 触发监控器触发监控器 应用程序应用程序 12345643(1)一条消息到达需被触发的应用消息队列一条消息到达需被触发的应用消息队列消息队列消息队列启动队列启动队列

温馨提示

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

评论

0/150

提交评论