(计算机应用技术专业论文)jms消息中间件的设计与实现.pdf_第1页
(计算机应用技术专业论文)jms消息中间件的设计与实现.pdf_第2页
(计算机应用技术专业论文)jms消息中间件的设计与实现.pdf_第3页
(计算机应用技术专业论文)jms消息中间件的设计与实现.pdf_第4页
(计算机应用技术专业论文)jms消息中间件的设计与实现.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

(计算机应用技术专业论文)jms消息中间件的设计与实现.pdf.pdf 免费下载

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

文档简介

浙江工业大学硕士学位论文 j m s 消息中间件的设计与实现 摘要 j a v a 消息服务( j a v am e s s a g es e r v i c e ,j m s ) 的消息中间件为应 用程序提供了创建、发送、接收消息的通用方法,从而大大简化了企 业应用的开发。论文的主要工作是设计与实现基于j m s 的消息中间 件。首先,对j m s 消息中间件的系统功能模型、总体体系结构以及架 构模型进行设计。系统的客户端设计引入中介模式以降低类之间的耦 合度,通讯层的可扩展框架设计支持多种具体通讯协议的加入,服务 器端引入拦截器的概念实现对安全可靠服务的支持。然后,针对在j m s 消息中间件的发布订阅模式下,消息选择器的匹配效率较低的问题, 在分析了几种常用的匹配算法的基础上,提出了一种新的索引计数匹 配算法,并通过实验对比,证明该算法具有良好的性能表现。最后, 论文给出系统中一些主要模块的具体实现,并把系统同一些其他j m s 产品进行横向性能比较,测试结果表明系统在性能上存在一定的优势。 关键词:中间件,消息中间件,j m s ,发布订阅,事件匹配算法 浙江工业大学硕士学位论文 d e s i g na n di m p l e m e n t a t i o no fj m s b a s e dm 匝s s a g e o i u e n t e d d d l e 、) l 硝衄 j a v am e s s a g es e r v i c e ( j m s ) p r o v i d e st h eg e n e r a lw a yt oc r e a t e ,s e n d a n dr e c e i v em e s s a g e sf o rj a v aa p p l i c a t i o n s ,a sar e s u l t ,t h ed e v e l o p m e n t so f e n t e r p r i s ea p p l i c a t i o n s a r e s i m p l i f i e d t oal a r g ee x t e m d e s i g na n d i m p l e m e n t a t i o no fj m sb a s e dm e s s a g e - o r i e n t e dm i d d l e w a r ea r et h em a i n w o r ko ft h i sp a p e r f i r s t l y ,t h ep a p e rf o c u s e so nt h ed e s i g no ft h es y s t e m f u n c t i o n m o d e l ,s y s t e m f r a m e w o r ka n da r c h i t e c t u r e sm o d e l i nt h e c l i e n t - s i d em e d i a t o rm o d ei s a d o p t e dt ol o w e rt h ec o u p l i n gc o e f f i c i e n t b e t w e e nd i f f e r e n tc l a s s e s o nc o m m u n i c a t i o n l a y e r a ne x t e n d a b l e 丘a m e w o r kd e s i g nw i l ls u p p o r tm u l t ip r a c t i c a lc o m m u n i c a t i o np r o t o c o l s i n s e r v e r - s i d es a f ea n dt r u s t e ds e r v i c e sw o u l db es u p p o g e db e ca u s eo ft h e a d o p t i o no fi n t e r c e p t o r s e c o n d l y ,r e g a r d i n g t ot h e p r o b l e mt h a t t h e s e l e c t o ri si n e f f i c i e n ti nm e s s a g e sm a t c h i n gu n d e rt h ep u b l i s h s u b s c r i b e m o d e lo fj m s ,t h ep a p e rp r e s e n t san e wi n d e xc o u n t i n gm a t c h i n ga l g o r i t h m a f t e ra n a l y z i n gs e v e r a lc o m m o nu s e dm a t c h i n ga l g o r i t h ma n de x p e r i m e n t p r o v e st h a tt h i sa l g o r i t h mi sm o t ee f f i c i e n t l a s t l y ,t h i sp a p e rp r e s e n t si n d e t a i lt h ei m p l e m e n to fs o m em a j o rm o d u l e si nt h i s s y s t e ma n dt h e c o m p a r i s o nb e t w e e nt h i ss y s t e ma n do t h e rj m sp r o d u c t si np e r f o r m a n c e i n d i c a t e st h a tt h i ss y s t e mh a sc e r t a i na d v a n t a g eo v e ro t h e rp r o d u c t s k e yw o r d s :m i d d l e w a r e ,m o m ,j m s ,p u b l i s h s u b s c r i b e ,e v e n t m a t c h i n ga l g o r i t h m 浙江工业大学 学位论文原创性声明 本人郑重声明:所提交的学位论文是本人在导师的指导下,独立进行 研究工作所取得的研究成果。除文中已经加以标注引用的内容外,本论文 不包含其他个人或集体已经发表或撰写过的研究成果,也不含为获得浙江 工业大学或其它教育机构的学位证书而使用过的材料。对本文的研究作出 重要贡献的个人和集体,均已在文中以明确方式标明。本人承担本声明的 法律责任。 名:p 牛 日期:烨妇引日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意 学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文 被查阅和借阅。本人授权浙江工业大学可以将本学位论文的全部或部分内 容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存 和汇编本学位论文。 本学位论文属于 1 、保密口,在年解密后适用本授权书。 2 、不保密叮。 ( 请在以上相应方框内打“妒) 作者签名: 导师签名: 日期:谚产厂月;f 日 日期:年月日 浙江工业大学硕士学位论文 1 1 研究背景 第一章绪论 计算机技术和网络技术的不断发展使得客户机服务器体系结构得到蓬勃发 展,但是随着应用水平的不断提高以及企业应用的不断扩大,构建在两层客户机 服务器之上的计算机应用系统的局限性就愈发地暴露出来。而且在分布式计算模 式环境中,无论是硬件平台还是软件平台都不可能做到统一。而大规模的应用软 件通常要求在软硬件各不相同的分布式网络上运行。所以为了克服这种局限性, 更好地开发和应用能够运行在这种异构平台上的软件,迫切需要一种基于标准的、 独立于计算机硬件以及操作系统的开发和运行环境,中间件技术就此应运而生。 当前,c o r b a l l l ,d c o m t z ,r m i p l 等r p c 中间件技术己广泛应用于各个领 域。但是面对规模和复杂度都越来越高的分布式系统,这些技术也显示出其局限 性,如同步通信、客户和服务对象的生命周期紧密耦合和只有点对点通信等问题。 而面向消息的中间件则较好的解决了以上问题。 从上个世纪九十年代初,随着各种不同厂商的消息中间件大量上市,消息中 间件技术得到了较大的发展。这些产品均为企业提供了良好的数据集成服务,但 是它们之间不存在一个统一标准,产品的实现和提供给应用系统的接口互异,使 得企业在选择消息中间件产品时很难做出选择。因为企业一旦选择了某一消息中 间件产品,在此基础上进行企业应用集成的开发,所开发的企业应用系统就依赖 于特定消息中间件产品的实现和接e l ,很难再与其他消息中间件产品实行可重用 无缝连接。 s u n 公司于1 9 9 8 年所提出的j m s 规范 4 1 ,改变了消息中间件接口互异、互操 作困难的局面。j a v a 消息服务是访问企业消息系统的标准a p i ,它便于消息系统 中的j a v a 应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的 接口简化企业应用的开发,为企业应用程序问进行消息服务提供一个可运行于不 浙江工业大学硕士学位论文 同平台的、可靠安全的和高效的解决方案1 5 】。 消息中间件的定位、功能及稳定性非常出色,在需要数据可靠传输的系统中 牢牢占据一席之地。同时,在各行业的单一应用系统建立起来以后,应用整合已 成为新一轮应用系统建设的热点,其中消息中间件扮演了重要的角色。 1 2j m s 消息中间件发展现状 s u n 于1 9 9 8 年提出j m s 规范之后,很多厂商都为j m s 提供了实现。自从 j 2 e e l 3 规范推出之后,j m sa p l 6 已经成为j 2 e e 平台的一部分。目前对应于 j 2 e e l 4 规范的j m s 规范版本是1 1 ,同时e j b 2 1 版本的实现也要依附于j m s l 1 。 j m s1 0 2 版本把点对点和发布订阅两种通信模型当作完全独立的域来对待,只 提供很有限的支持。j m s l 1 统一了这两种域,使得它们可以结合在一起很好的工 作,j m s 客户机代码只需访问并使用消息目的地而无须分清哪些是队列,哪些是 主题,极大地提高了代码的可重用性。 目前已经有很多商业和开源产品实现了j m s 规范,不过j m s 规范及产品始 终存在着一些不足之处: 1 性能有待提高:实现j m s 规范的消息中间件都是基于j a v a 实现的系统, 效率是一个问题,虽然j a v a 已经在这方面做了很多改进,但在性能上仍有较大提 升的必要。 2 缺乏对集群支持:集群环境不仅要求高性能,高可靠性,还要在系统资源 管理方面作许多研究。目前j m s 规范还没有定义对集群的支持,各商业产品对集 群的处理方式也有所不同,较难互操作。 3 消息匹配效率较低:由于j m s 规范中没有对消息匹配机制进行具体说明, 而传统的j m s 消息中间件的消息匹配效率较低,需要对消息的匹配算法加以改 进。 4 安全机制不完善:安全是消息中间件的重要特性。然而j m s 规范里没有 定义安全模型和保障消息完整性、保密性的接口,也没有描述如何进行数字签名 和传递密钥。安全机制完全由中问件产品提供商来设计。对j m s 而言,如何传输 敏感信息,如何在服务器端存储敏感信息,如何确保只有经过授权的用户才能访 问j m s 资源,如何使安全架构和商业应用代码相分离,都属于安全要考虑的范畴。 2 浙江工业大学硕士学位论文 1 3 论文的课题背景及研究内容 论文所涉及的课题背景为课题组所承担的浙江省重大科技攻关项目一“基础 中间件平台的研制及其产业化”课题,其总体目标是:面向我省制造业信息化工 程、服务业电子化工程、电子商务、电子政务等信息化工程,突破制约我省信息 化发展的瓶颈,力求为浙江省信息化应用系统的开发、集成和实施提供一套完备、 具有特色、拥有自主知识产权的中间件平台。具体目标为:完成具有自主知识产 权的轻量级j 2 e e 应用服务器钱塘应用服务器( j t a n g a p p l i c a t i o ns e v c e r ) 。在轻量级 j 2 e e 应用服务器中间件的基础上,提供一系列的上层服务,包括工作流管理服务、 表单管理服务、单点登录服务、安全认证服务、文件管理服务等。钱塘消息队列 服务( j t a n g m q ) 是一个符合j m s 规范的面向i n t e r a c t 的消息中间件,是钱塘应用 服务器的主要服务之一。 论文主要研究j m s 消息中间件的体系结构、消息匹配算法、通信协议、流量 控制、持久化等问题,设计实现j m s 消息中间件j t a n g m q 。 1 。4 论文的组织结构 论文的组织结构如下: 第一章介绍j m s 消息中间件技术产生的背景及发展现状,指出了j m s 消息 中间件中的不足之处,并指出本文的研究工作。 第二章介绍了中间件和消息中间件的基本概况,然后详细描述了j m s 规范, 包括j m s 实体、j m s 消息服务模式、j m s 应用程序组成、j m s 主要接口、j m sa p i 编程模型以及j m s 消息种类,最后列举了一些典型的j m s 消息中间件产品。 第三章对系统的功能模型、总体体系结构和系统架构模型进行了设计,并深 入阐述了各个模块对应的架构模型:客户端中介模型降低客户端源码的耦合度, 通讯层可扩展模型可以使系统支持多种通讯协议,服务器服务提供模型又由可信 任服务提供模型、消息流程控制模型和扩展通用服务模型三个方面构成,为客户 端提供安全可靠的消息服务保证。 第四章对基于内容的的发布订阅系统做了较深入的分析,提出了一个事件 模型,在这个事件模型的基础上,对几种典型的匹配算法进行了分析,并结合j m s 3 浙江工业大学硕士学位论文 中发布订阅模式的特点,提出了索引计数匹配算法,并通过实验分析对比,证明 了索引计数匹配算法具有较高的匹配效率。 第五章提出了j t a n g m q 中通讯协议、流量控制和文件存储的实现方案,描 述了整个系统,包括客户端模块、通讯层模块、服务器模块的详细设计实现。并 对系统性能的进行了测试。 第六章总结本文的工作,指出系统下一步需要从安全机制和集群策略两个方 面进行进一步的改进。 4 浙江工业大学硕士学位论文 第二章d e 相关介绍 j m s 是由s u n 公司提出的基于j a v a 技术的消息中间件的规范。它有效地屏蔽 了网络协议、应用实现的具体技术、操作系统和数据库的细节,目前己被各大软 件公司和开源组织所接受,成为了工业界的事实标准。 2 1 中间件技术 中间件1 7 j l 是介于应用系统和系统软件之间的一类软件,它使用系统软件所提 供的基础服务( 功能) ,衔接网络上应用系统的各个部分或不同的应用,能够达 到资源共享、功能共享的目的。目前,它并没有很严格的定义,但是普遍接受国 际数据集团( i d c ) 的定义:中间件是一种独立的系统软件或服务程序,分布式 应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的 操作系统之上,管理计算资源和网络通信。从中间件的定义可以看出,中间件是 一类软件,而非一种软件。中间件不仅仅实现互连,还要实现应用之间的互操作。 中间件是基于分布式处理的软件,定义中特别强调了其网络通信功能。针对不同 的应用领域,对中间件又有各种不同的要求。由于实际的应用千差万别,不能指 望有一种包罗万象的中间件解决所有的问题【9 l 。 2 1 1 中间件的作用 中间件的作用简单来说就是试图通过屏蔽各种复杂的技术细节使技术问题简 单化。具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一 个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务 上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上 的负担。所以说中间件带给应用系统的,不只是开发的简便、开发周期的缩短, 同时也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投 入。其次,中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操 5 浙江工业大学硕士学位论文 作系统上开发的应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是 操作系统、数据库管理系统本身傲不了的1 1 1 。 2 1 2 中问件的分类 目前。针对不同的应用涌现出各具特色的中间件产品。从不同的角度和层次 对中间件有不同的分类。根据中间件在系统中所起的作用和采用的技术不同,可 以把中间件大致划分为以下几种1 1 2 l ,】: 1 数据访问中间件 在分布式系统中,重要的数据都集中存放在数据服务器中,它们可以是关系 型、复合文档型、具有各种存放格式的多媒体型,或者是经过加密或压缩存放的, 数据访问中间件是在这种系统中建立数据应用资源互操作的模式,实现异构环境 下的数据库联接或文件系统联接的中间件,从而为在网络上虚拟缓冲存取、格式 转换、解压等带来方便。数据访问中间件在所有的中间件中是应用最广泛、技术 最成熟的一种。 2 远程过程调用中间件 远程过程调用( r p c ) 是另外一种形式的中间件,它在客户服务器计算方面, 比数据库中间件又迈进了一步。通过这种远程过程调用机制,程序员编写客户方 的应用,需要时可以调用位于远端服务器上的过程【“】。r p c 的灵活特性使得它有 比数据库中间件更广泛的应用,它可以应用在更复杂的客户,服务器计算环境中。 远程过程调用的灵活性还体现在它的跨平台性方面,它不仅可以调用远端的子程 序,而且这种调用是可以跨不同操作系统平台的,而程序员在编程时并不需要考 虑这些细节。 3 消息中间件 消息中间件能在不同平台之间通信,实现分布式系统中可靠的、高效的、实 时的跨平台数据传输,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用 程序之间的协同。其优点在于能够在客户和服务器之间提供同步和异步的连接, 并且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用 更进一步的原因。另外消息中问件不会占用大量的网络带宽,可以跟踪事务,并 且通过将事务存储到磁盘上实现网络故障时系统的恢复。当然和远程过程调用相 6 浙江工业大学硕士学位论文 比,消息中间件不支持程序控制的传递。 4 面向对象的中间件 当前开发大型应用软件通常采用基于组件技术,在分布系统中,还需要集成 各节点上的不同系统平台上的组件或新老版本的组件。组件的含义通常指的是一 组对象的集成,其种类有数百万种,但这些组件面临着缺乏标准而不能相互操作, 各厂家的组件只能在各自的平台上运行【1 5 1 。为此,连接这些组件环境的面向对象 的中间件便应运而生。面向对象的中间件是对象技术和分布式计算发展的产物, 它提供一种通讯机制,透明地在异构的分布计算环境中传递对象请求,而这些对 象可以位于本地或者远程机器。 5 事务处理中间件 事务处理中间件是在分布、异构环境下提供保证交易完整性和数据完整性的 一种环境平刽“。它是针对复杂环境下分布式应用的速度和可靠性要求而实现 的。它给程序员提供了一个事务处理的a p i ,程序员可以使用这个程序接口编写 高速而且可靠的分布式应用程序。事务处理中间件向用户提供一系列的服务,如 应用管理、管理控制、已经应用于程序问的消息传递等。常见的功能包括全局事 务协调、事务的分布式两段提交【1 7 1 ( 准备阶段和完成阶段) 、资源管理器支持、 故障恢复、高可靠性、网络负载平衡等等。 6 网络中间件 它包括网管、接入、网络测试、虚拟社区、虚拟缓冲等,也是当前研究的热 点。 7 终端仿真屏幕转换中间件 它的作用在于实现客户机图形用户接口与已有的字符接口方式的服务器应用 程序之闻的互操作。 2 2 消息中间件 消息中间件( m o m ) 1 8 - 2 2 是利用可靠高效的消息递送机制帮助分布式应用进 行数据交流的系统软件。消息中间件独立于操作系统和网络,屏蔽底层异构操作 系统、网络平台、通讯协议、消息格式的差异,为应用提供一致的通讯标准。原 理是基于消息队列的存储转发机制和特有的异步传输机制,能够基于消息传输和 7 浙江工业大学硕士学位论文 异步事务处理实现应用整合与数据交换。 话,消息发送者把消息放在消息队列中, 使用消息中问件的应用之间不需直接对 接受者从队列中取出消息,有时间的时 候再处理。应用程序无需涉及网络通讯的复杂性,维护消息队列、在网络中传递 消息等与通讯有关的活动都由消息中间件负责。应用之间通过消息中间件对话, 降低了耦合性。消息中间件支持通讯程序之间一对多和多对一方式,甚至是多种 方式组合的对话。消息中间件主要应用于应用程序的集成,如图2 - 1 所示: 2 2 i 消息中间件的作用 图2 - 1 消息中间件的位置和作用 消息中间件主要提供应用集成所必须的数据的递送、收集、翻译、过滤、映 射和路由等功能,屏蔽不同的硬件平台、操作系统、消息格式、通信协议之间的 差异,提供应用到应用之间的高效、便捷的通信能力。消息中间件简化了应用之 间的复杂交互,将变得越来越重要。 消息中间件最典型的应用环境矧包括: ( 1 ) 企业内部或企业之间多个复杂应用之间的通信; 犯) 多个应用采用不同的计算机语言编写; ( 3 ) 设计阶段就希望系统能使用很长时间,要求扩展性高; ( 4 ) 系统需要处理高吞吐量的信息; ( 5 ) 多个应用使用的硬件平台、数据库、操作系统是异构的,有多个数据源; ( 6 ) 存在老的旧的系统,新系统需要与这些系统融合。 2 2 2 消息中问件的特点 消息中间件- j - 以既支持同步方式,又支持异步方式e 2 4 】,可以很好地适用于面 向对象的编程方式。中间领域目前最热门的技术是异步的消息中间件,异步中问 8 浙江工业大学硕士学位论文 件技术比同步中间件技术具有更强的容错性,在系统故障时可以保证消息的正常 传输。 消息中间件具有以下一些基本特点: ( 1 ) 可靠消息发送。应用程序发送消息时,消息发送者和接收者不一定要求 同时在线,消息中间件可以确保消息接收者在掉线的情况下消息不会丢失。 异步通信。消息中间件允许消息发送者发送消息后继续进行其它工作,而不必等 待接收者的响应。 ( 2 ) 一次发送,依次接收。消息中间件确保消息可以发送且仅发送一次,接 收者可以按照消息发送的顺序依次接收。 ( 3 ) 一对多通信。不仅提供一对一通信,还可以进行一对多通信:对于一个 消息可以有多个接收者。 ( 4 ) 消息路由服务。消息通过该服务可以经过最短路径( 或最低代价) 到达消息 目的地。系统管理员只需要定义每条路径的代价,消息中间件就可以为消息计算 出最低代价的路径。而且,消息路由服务可以避免单点失效,因此非常适合用于 不可靠的网络环境中。 2 3j n s 消息中间件 2 3 。1 d m s 规范 j m s 是一组j a v a 应用程序接n ( j a v aa p z ) ,它提供创建、发送,接收、读取 消息的服务。j m s a p i 定义了一组公共的应用程序接口和相应语法,使得j a v a 程 序能够和其他消息组件进行通信。 j m sa p i 最大限度的减少了程序员学习使用消息产品的概念,但是却提供了 足够功能支持复杂的消息应用。通过j m s 提供者内相同的消息域,它最大限度的 加大了消息应用的可移植性嘲。 j m s 规范并不指定消息节点间所使用的底层通讯协议,以保证应用开发人员 不与通讯细节打交道,一个特定的j m s 实现可能提供基于t c p i p ,h t r p ,s s l , e m a i l 或者其他通讯协议陋】。 9 浙江工业大学硕士学位论文 1 j m s 实体 j m s 中存在以下三类实体: ( 1 ) j m s 提供者( j m sp r o v i d e r ) 对一于一个消息应用来说,j m s 提供者是实现j m s 最核心的部分。理想状态 下,j m s 提供者使用纯j a v a 编写,安装简单,并可以跨平台使用。j m s 一个最重 要的目标就是最小化实现一个j m s 提供者所需要做的工作。 ( 2 ) j m s 消息( j m sm e s s a g e s ) j m s 定义了一套消息接口。客户端所使用的消息都是j m s 提供者提供的。j m s 一个最主要的目标就是客户端不依靠j m s 提供者,使用自己的a p i 来创建和使 用消息。 ( 3 ) j m s 域( j m sd o m a i n s ) j m s 规范提供两种最普通的消息模式:点x c 点, ( p o i n tt op o i n t ,p t p ) 矛- i 发布 订阅( p u b l i s h s u b s c r m e ,p s ) 。 j m s 为j a v a 程序提供了一种创建、发送、接收和读取企业级消息系统消息的 一般方法,其目的是提供给消息系统客户一个固定的接口而且与底层的消息提供 者无关,这样,客户端的应用程序可以在不同的机器和操作系统中移植,而且能 在不同的消息系统产品之间转移。j m s 客户端都是建立在j a v a 技术上的,从而也 能使用其它j a v aa p i ,如j d b c 数据库连接,使用j a v a b e a n 组件模型,j d n l 名 字服务,j t a 客户端交易处理控制以及j 2 s e 和j 2 e ea p i 来实现企业级应用服务 程序。用j m s 编写的程序能够在任何实现了j m s 标准的消息中间件上运行,图 2 - 2 简单描述了这一通信模型。 图2 - 2j a v a 消息服务体系结构图 l o 浙江工业大学硕士学位论文 2 j m s 消息服务模式 j m s 规范中有两种消息服务模式: ( 1 ) 点对点消息服务模式 j m s 点对点模式建立在消息队列的基础上,每个客户端对应一个消息队列, 客户端发送消息到对方的消息队列中,从自己的消息队列读取消息。队列将发送 给它们的消息一直保留,直到消息被消费或消息到期。 图2 - 3 点对点消息服务 如图2 - 3 所示,点对点消息服务具有以下特点: a ) 在队列中的每一条消息只有一个消费者。 消息的发送者和接收者之问不存在时间依赖。 c ) 消费者必须确认对消息的接收。消费者确认了一次接收之后,相应的消息 就会被从队列中删除。 m 点对点消息服务中,每条发送的消息必须成功处理一次,并且只成功处理 一次。 ( 2 ) 发布,订阅消息服务模式 j m s 发布订阅模式中客户将消息提交给某个主题,发布者和订阅者通常是匿 名的并能够动态发布或订阅消息,系统必须保证某个主题的所有发布者发布的消 息准确无误地发送到这个主题的所有消息订阅者。主题把消息分发给当前的调用 者之后就不再保留这些消息。 如图2 _ 4 所示,发布订阅消息服务具有以下特点: a 1 每条消息可以有多个接收者。 m 消息的发布者和订阅者存在时间依赖。可通过创建持久订阅,使未处于激 活状态的订阅者接受系统发送的消息 c ) 发布订阅消息服务中,每条消息可能被零个、一个或多个消费者消费。 1 1 浙江工业大学硕士学位论文 图2 - 4 发布订阅消息服务 3 j m s 应用程序组成 如j m s 规范所述,一个j m s 应用程序可以由如下元素组成: ( 1 ) j m s 客户机o m sc l i e n t s ) :使用j m sa p i 发送和接收消息的j a v a 程序。 ( 2 ) 非j m s 客户机( n o n j m sc l i e n t s ) :使用由消息中间件提供的本地 a p l ( n a t i v ec l i e n ta p i ) 访问消息中间件的客户端程序。 ( 3 ) 消息( m e s s a g e ) 客户机之间所交换的消息。在设计j m s 应用程序时必须 定义消息的格式和内容。 ( 4 ) j m s 提供者o m sp r o v i d e o :由j m s 定义、消息中间件产品供应器提供具 体实现的一组最小界面。 ( 5 ) 受管对象( a d m i n i s t r a t e do b j e c t s ) :由消息中间件产品管理员预先创建给客 户机使用的对象,它独立于供应器专有的技术。 消息中间件产品提供者在其底层消息传递机制和技术上有显著差异,为了保 持j m s 客户机的可移植性,实现j m s 接口的对象必须独立于提供者专有的技术。 实现这一点的机制就是受管对象。这些对象由供应器的消息传递系统管理员通过 供应器专有技术创建,并被置于j n d l 名称空间里供可移植的j m s 程序检索与访 问。 j m s 规范中定义了两类受管对象f 8 】; ( 1 ) c o n n e c t i o n f a c t o r y ( j 奎接工厂1 :用于创建到消息中间件底层消息系统的连 接。 ( 2 ) d e s t i n a t i o n ( 目的地对象) :由j m s 客户机使用以指定正在发送的消息目标 或正在接收的消息来源。 j m s 管理对象需要被管理员预先配置放入j n d i 命名空间中。图2 - 5 表明了 浙江工业大学硕士学位论文 j m s 管理对象是如何工作的。 图2 5 j m s 对象管理 4 j m s 主要接口 j m s 定义了一组基于各种消息传递概念的公共接口,而p t p 和p 偈这两个消 息传递域又分别定义了这套接口的相应扩展接口,表2 - 1 列举了所有这些接口。 除了表中列出的接口外,为了与x “分布式) 事务兼容,j m s 还提供了另外一 组接口。除了上表所示的1 8 个接口之外,j m s 还另外有9 个接口( 生成器、连接 和会话类型的x a 版本、。至少在编写客户机代码来说,开发者最多需要6 个公共 接口和3 个x a 兼容接n ( x a c o n n e c t i o n f a c t o r y 、x a c o n n e c t i o n 以及x a s e s s i o n ) 。 表2 1j m s 主要接口关系 j m s 公共接口p t p 域接口p u b s u b 域接口 c o n n e c t i o n f a c t o r yq u e u e c o a n e c t i o n f a c t o r yt o p i c c o n n e c t i o n f a c t o r y c o n n e c t i o n o u e u e c o n n e c t i o n t o p i c c o n n e c t i o n d e s t i a t o n o u e u e t o p i c s e s s i o nq u e u e s e s s i o n t o p i c s e s s i o n m e s s a g e p r o d u o e r o u e u e s e n d e r t o p i c p u b l i s h e r m e s s a g e c o n s u m e rq u e u e r e c e i v e r ,q u e u e b r o w s e r t o p i c s u b s c r i b e r 下面介绍6 个公共接口。 ( 1 ) c o n n e c t i o n f a c t o r y :一种用于创建c o n n e c t i o n 的受管对象。 ( 2 ) c o n n e c t i o n :到服务器的活动连接。 ( 3 ) d e s t i n a t i o n :一种受管对象,它封装消息目标的标识,如消息发送到何处 或接收自何处。 ( 4 ) s e s s i o n :一个单线程的用于发送或接收消息的上下文。多个s e s s i o n 可以 用于多线程应用程序。 ( 5 ) m e s s a g e p r o d u c e r :由s e s s i o n 对象创建的用来发送消息的对象。 浙江工业大学硕士学位论文 ( 6 ) m e s s a g e c o n s u m e r :由s e s s i o n 对象创建的用来接收消息的对象。 5 j m s a l l 编程模型 j m s 应用程序是由一个或多个交换消息的客户端组成,可以包含非j m s 的客 户端。对于一个j m s 应用程序,j m s 客户端可以不断增加。消息的定义可以在 j m s 部分中,也可以在非j m s 的部分中。 图2 - 6 显示开发一个j m s 客户端应用程序的过程: ( 1 ) 通过j n d i 查找得到c o n n e c t i o nf a c t o r y 对象; ( 2 ) 通过j n d i 查找得到d e s t i n a t i o n 对象; ( 3 ) 通过c o n n e c t i o nf a c t o r y 创建c o n n e c t i o n ; ( 4 ) 通过c o n n e c t i o n 创建一个或多个s e s s i o n s ; ( 5 ) 通过s e s s i o n s 和d e s t i n a t i o n 创建m e s s a g g e p r o d u c e r 和m e s s a g e c o n s u m e r ; ( 6 1 通过c o n n e c t i o n 发送,接收消息。 图2 - 6 j m s a p i 编程模型图 6 j m s 消息 消息中间件系统的中心就是消息,j m s 为不同类型的消息提供了它们各自的 消息类型,但所有消息都扩展自m e s s a g e 接1 3 。j m s 中,消息由消息头、属性和 消息主体三部分组成: ( 1 ) 消息头( h e a d e r ) :消息头包含消息的识别信息和路由信息,消息头包含一 些标准的属性如:j m s d e s t i n a t i o n ,j m s m e s s a g e i d 等。 ( 2 ) 属性( p r o p e r t i e s ) :除了标准的消息头字段外,消息还通过内建的属性机制 1 4 浙江工业大学硕士学位论文 支持向消息中加入可选头字段。定义可选属性必须遵循一定的规则,属性的类型 可以是b o o l e a n ,b y t e ,s h o r t ,i n t ,l o n g ,f l o a t ,d o u b l e 和s t r i n g 。 ( 3 ) 消息体( b o d y ) - j m sa p i 定义了5 种消息体格式,也叫消息类型,你可以 使用不同形式发送接收数据并可以兼容现有的消息格式,下面表2 - 2 描述这5 种 类型 表2 - 2 j m s 消息类型 消息类型消息体 t e x t m e s s a g e j a v a 1 a n g s t f i n g 对象,如x m l 文件内容 名,值对的集合,名是s t r i n g 对象,值类型可 m a p m e s s a g e 以是j a v a 任何基本类型 b y l e s m e s s a g e 字节流 s t r e a m m e s s a g e j a v a 中的输入输出流 o b j e c l m e s s a g e j a v a 中的可序列化对象 m e s s a g e 没有消息体,只有消息头和属性 2 3 2 典型j 髂产品 目前有非常多的消息中间件产品实现了j m s 规范,如商用产品有w e b l o g i c m q i z t 、w e b s p h e r em q l 2 s 、f i o r a n o m q z g l 、s o n i c m q 3 0 等,开源产品有o p e n j m s 3 q 、 j o r a m l 3 2 1 、j b o s s m q l 3 3 】等。在此选择几个比较典型的开源产品进行更进一步的分析: 1 o p e n j m s :o p e n j m s 是一个开源的j a v am e s s a g es e r v i c ea p i1 0 2 规范的 实现。o p e n j m s 的主要实现特点包括: a ) 支持点到点和发布订阅两种消息传递模式;支持同步与异步消息发送; j d b c 持久性管理使用数据库表来存储消息;可视化管理界面;能够与j a k a r t a t o m c a t 这样的s e r v l e t 容器结合;提供可靠消息传输、事务和消息过滤; b ) 支持r m i ,t c p ,h t r p 与s s l 协议; 不支持集群功能。 2 j o r a m :j o r a m 是o b j e c t w e b 组织对j m s1 1 规范实现的一个开源项目。 目前在诸多j m s 规范的开源实现中算是比较优秀的一个。j o r a m 的主要实现特点 包括: a ) 支持点对点,发布,订阅两种消息传递模式;提供分布式系统之间的松散 耦合;在可用性,可靠性方面表现良好;提供了一个丰富的配置界面,使j o r a m 服务器可以针对具体的物理环境对自身做出适当调整,以提高性能; 浙江工业大学硕士学位论文 b ) 支持t c p i p ,h t r p ,x m l - s o a p 等多种传输协议; c ) 提供集群功能满足高可用性方面的需求。 3 j b o s s m q :j b o s s m q 由s p y d e r m o 演化而来,目前最新版本4 0 1 ,支持 j m s l 1 规范。j b o s s m o 的主要实现特点包括: a ) 异步消息发送;通过持久化的消息和订阅方式保证消息传输的可靠性:通 过j m s 资源适配器对j t ax a 的使用,保证对事务操作的支持; b ) 通过可插拔的调用层来支持不同的调用协议,h t t p ,t c p i p ,r m i , i n t r a v m 等多种传输模式: c ) 提供集群功能满足高可用性方面的需求。 2 4 本章小结 本章首先介绍了中间件和消息中间件的基本概况,然后详细描述了j m s 规 范,包括j m s 实体、j m s 消息服务模式、j m s 应用程序组成、j m s 主要接口、j m s a ll 编程模型以及j m s 消息种类,最后列举了一些典型的j m s 消息中间件产品, 并描述了这些产品的特点。 1 6 浙江工业大学硕士学位论文 第三章j m s 消息中间件的设计 3 1a l m s 消息中间件需求分析 在当今网络应用环境下,结合电子政务、电子商务、制造业信息化等应用层 次的需求,j m s 消息中间件在系统架构设计时需要考虑以下几个方面的问题。 1 系统标准性。基于现有规范标准( s u n 公司的j m s l 1 规范标准) 的消息 中间件系统实现消除系统与应用间互操作难的问题,能够提高系统的应用范围。 2 系统灵活性。灵活性是针对系统的易维护性要求而提出的,良好的系统架 构设计保证系统在不断升级过程中的健壮性,要求各子系统问实现松散耦合。 3 系统可扩展性。消息中间件技术处于不断发展的阶段,系统框架的可扩展 性能够使新技术的力f l a 易于实现。在某种程度上,系统的可扩展性和灵活性保持 一致。 4 系统可靠性。服务可靠性是衡量一个系统的重要指标,消息系统的服务可 靠性主要体现在网络连接失败或者异常断开情况下的消息正确传输( 保证消息不 丢失,不重发等) 。持久化机制保证服务器的可靠性。 5 系统安全性。随着网络技术发展所出现的新特点,对消息中间件的安全需 求逐渐提高,要求消息中问件提供系统用户验证、访问控制、消息传输加解密等 功能。 1 7 浙江工业大学硕士学位论文 3 2j t a n g m q 系统功能模型 图3 - 1j t a n g m q 系统功能模型图 图3 - 1 是j t a n g m q 的功能模型,是从用户的角度看m qs e r v e r 。模型由客户 端,通讯层和服务器组成。客户通过j n d i 服务查找连接工厂和消息目的地( 主 题或队列) 。通讯层连接客户端和服务器,支持多种通讯协议,加密连接可以用 s s l ,也可用加密传输协议。服务器和用户双向认证之后,检验用户是否有权限 进行各种操作。服务器缓存消息,将消息放到安全数据库或者有安全保障的文件 里存储,直到消息过期或者接受者到来取走消息。 3 3j t a n g 系统总体体系结构 软件系统架构p 4 1 有集中式、返回调用式、流水式等,由于层次调用结构p 5 】 具有结构清晰、易于维护等特点,较好地满足上节所提的系统需求,层次调用所 带来的潜在性能损失可以通过功能实现上的优化得到补偿,因此系统采用层次调 用设计思想进行体系的架构,体系结构如图3 2 所示。 1 8 浙江工业大学硕士学位论文 图3 - 2j t a n g m q 系统总体体系结构图 与系统的组件类型相对应,系统从上至下可分为三个大的层次,分别是客户 端层、通讯层和服务器层。客户端层向通讯层的客户端代理请求服务,客户端代 理通过具体的通讯协议连接发服务请求发送到服务器端代理,再由服务器端代理 交给服务器层进行处理。如果服务器层想对客户端实行消息服务反馈,即采用与 客户端层请求服务相反的层次调用。 其中,客户端层的设计目标是采用中介模式降低客户端实现类之间的耦合度。 通讯层的设计主要考虑对多种连接协议的扩展支持。而服务器层作为系统服务提 供实现的主体,包含了拦截器层、目的地管理层、客户端管理层、目的地层和关 键通用服务层等四方面,拦截器层提供服务器可信任服务,目的地管理层、客户 端管理层和目的地层控制消息在服务器的正确流程,关

温馨提示

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

评论

0/150

提交评论