(计算机应用技术专业论文)钱塘消息中间件v30关键技术的研究与实现.pdf_第1页
(计算机应用技术专业论文)钱塘消息中间件v30关键技术的研究与实现.pdf_第2页
(计算机应用技术专业论文)钱塘消息中间件v30关键技术的研究与实现.pdf_第3页
(计算机应用技术专业论文)钱塘消息中间件v30关键技术的研究与实现.pdf_第4页
(计算机应用技术专业论文)钱塘消息中间件v30关键技术的研究与实现.pdf_第5页
已阅读5页,还剩75页未读 继续免费阅读

(计算机应用技术专业论文)钱塘消息中间件v30关键技术的研究与实现.pdf.pdf 免费下载

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

文档简介

浙江大学硕士学位论文 摘要 摘要 消息中间件为分布式应用提供灵活高效和可靠的异步消息传递机制 j a v a 消 息服务 j a v am e s s a g es e r v i c e j m s 是s u n 公司提出的 为解决异构消息中间 件之间互操作难问题提供可选方案 论文结合国家支撑计划与省重大科技攻关项 目 基于已有研究成果 研制钱塘消息中间件v 3 0 版本 童点解决高性能基于 文件存储的持久化方案 基于系统负载平衡的控制流量和适当消息缓存方案 桥 接不同j m s 服务器的消息桥和多模式客户端的设计等关键技术 针对数据库持久化存储的昂贵开销 提出了高性能的基于文件存储的持久化 方案 该方案由两层存储模型构成 应用程序访问接口层和文件存储层 核心模 块 文件存储层的本质特点是实现了一个具有文件存储功能的消息容器表 在 消息容器表的具体实现中 又提出了索引文件和数据文件 数据文件是保存消息 实体的文件 索引文件是为了快速定位数据文件而提出的 实验测试表明 该方 案具有较高效率 在同等环境下 比数据库存储的性能好3 倍以上 针对系统的负载平衡问题 提出了对客户端进行流量控制的同时适当进行消 息缓存来维护系统的稳定性 在该方案中 将服务器的内存资源 客户端的发送 速度等分成不同的等级 内存资源由专门的线程来采集 根据采集的内存使用情 况来进行一系列等级设置和确定是否需要将消息缓存 最后根据在同等环境下 系统使用该策略前后的测试 该方案被证明是能很好的维持系统的负载平衡的 针对不同j m s 服务器通信难的问题 提出了可以桥接不同j m s 服务器的消息 桥方案 该方案采用客户端的方式来设计 这样能最大程度的做到消息桥功能的 解耦 而且不必考虑两端服务器的实现细节 同时还提供了多模式客户端 包括 c 客户端和w 曲s e r v i c e 客户端 关键词j m s 消息中间件 持久化 流量控制和消息缓存 消息桥 多模式客户 m 骊 浙江大学硕士学位论文 a b s t r a c t m e s s a g e o r i e n t e dm i d d l e w a r e m o m p r o v i d e sm o r ef l e x i b l e e f f i c i e n t r e l i a b l e a n da s y n c h r o n o u sm e s s a g i n gm e c h a n i s mf o rd i s t r i b u t e da p p l i c a t i o n s j a v am e s s a g e s e r v i c e p u tf o r w a r db ys u nm i c r o s y s t e m s m a k e st h ei n t e r o p e r a b i l i t ya m o n g d i f f e r e n t m o m st ob ee a s y t h i sp a p e ri sb a s e do nn a t i o n a ls u p p o r t i n gp l a na n dk e yr d p r o j e c to fz h e j i a n gp r o v i n c e a n da l s ob a s e do ne x i s t i n gr e s e a r c hr e s u l t s i t i sa i m e da t d e v e l o p i n gj t a n gm e s s a g e o r i e n t e dm i d d l e w a r ev 3 0w h i c hf o c u s e so ns o l v i n gt h e h i 曲一p e r f o r m a n c ef i l e b a s e ds t o r a g es o l u t i o n m a i n t a i n i n gs y s t e ml o a db a l a n c eb y f l o w c o n t r o la n dm e s s a g ec a c h e b r i d g ed i f f e r e n tj m ss e r v e r sb ym e s s a g eb r i d g ea n d m u l t i m o d ec l i e n t s a st od u r a b l e s t o r a g e w ep r o p o s et o s t o r e m e s s a g e i nf i l e st or e a c h h i g h p e r f o r m a n c e i tc o n s i s t so ft w o l e v e ls t o r a g em o d e l a c c e s si n t e r f a c el a y e ra n d f i l es t o r a g el a y e r t h ef e a t u r eo ft h ef i l es t o r a g ei st h ei m p l e m e n t a t i o no fam a p c a l l e d m a p c o n t a i n e r w h i c hh a sf i l e s t o r ef u n c t i o n i nt h ei m p l e m e n t a t i o no fm a p c o n t a i n e r w ei n t r o d u c e i n d e xf i l e a n d d a t af i l e d a t af i l e i su s e dt os t o r et h em e s s a g ee n t i t y a n d i n d e xf i l e i su s e dt oq u i c k l yl o c a t e d a t af i l e s o u rs o l u t i o ni sp r o v e dt os u p p l y l l i g h p e r f o r m a n c e a su n d e rt h es a m ec o n d i t i o n s t h ep e r f o r m a n c eo ff i l e b a s e ds t o r ei s a l m o s tt h r e et i m e sf a s t e rt h a nd a t a b a s es t o r e a st of l o wc o n t r o la n dm e s s a g ec a c h e w ep r o p o s e dt oc o n t r o lf l o wa tc l i e n t sa n d t oc a c h em e s s a g e sa ts e r v e rt om a i n t a i nt h er o b u s to ft h es e r v e r w ec l a s s i f yt h e m e m o r yo fs e r v e r s e n d i n gr a t eo ft h ec l i e n t s n u m b e ro fm e s s a g e st os o i t e ne v e r yt i m e a n ds oo ni n t os e v e r a ll e v e l s as p e c i f i ct h r e a di su s e dt oc o l l e c tm e m o r yi n f o r m a t i o n t h ea l g o r i t h md o e sf l o wc o n t r o la n dm e s s a g ec a c h ei na c c o r dt ot h em e m o r yu s a g e t h i sa l g o r i t h mh a sp r o v e dt ob ev e r yg o o dt om a i n t a i nl o a db a l a n c eo ft h es y s t e m u n d e rt h es a m ec o n d i t i o n s a st ot h ep r o b l e mt oc o m m u n i c a t ew i n lo t h e rj m ss e r v e r s w ep r e s e n t e dm e s s a g e b r i d g em e t h o d s o u rm e t h o d sa r ed e s i g n e da st h ep a t t e r no fc l i e n t a si tc a nd e c o u p l e t h ef u n c t i o n so fm e s s a g e b r i d g e a n dd o n th a v et oc o n s i d e rt h ei m p l e m e n t a t i o no f t h e 浙江大学硕士学位论文 垒堕皇 t l i i 一 s e e r sa tb o t he n d s b e s i d e s w es u p p o r tm u l t i m o d ec l i e n t si n c l u d i n gc 抖c l i e n t a n d w e bs e r v i c ec l i e n t k e y w o r d sm o m j m s f i l es t o r a g e f l o wc o n t r o l m e s s a g ec a c h e m e s s a g eb r i d g e m u l t i m o d ec l i e n t s 浙江大学硕士学位论文 表目录 表目录 表3 1 点对点模式下的测试结果 3l 表3 2 发布 订阅模式下测试用例表 3 l 表4 1 点对点模式下测试结果 3 7 表5 1j a v a 基本类型到本地类型的映射 3 7 表6 1 点对点模式下的测试结果 3 7 表6 2p s 模式下的测试结果 3 7 i x 浙江大学硕士学位论文图目录 图目录 图1 1 消息中间件在分布式系统中的结构框架 3 图1 2j a v a 消息服务体系结构 4 图1 3 论文组织结构 8 图2 1 点对点模型 1 l 图2 2 发布 订阅模型 1 2 图2 3j m sa p i 体系结构图 2 0 1 1 3 图2 4j m s 类层次结构 1 4 图2 5j t a n g m q 系统的体系结构图 1 5 图2 6 客户端的体系结构图 1 6 图2 7 通讯层体系结构 1 7 图2 8j t a n g m q 的功能模型 1 9 图3 1 存储模型 2 3 图3 2 访问接口层的接口 2 4 图3 3 目的地与消息容器表的映射 2 4 图3 4 索引项的数据结构 2 5 图3 5 数据项的数据结构 2 6 图3 6 文件存储层的相关表结构 2 7 图3 7 存储消息的算法实现 2 8 图3 8 读取消息的算法实现 2 9 图3 9 删除消息的算法实现 3 0 图3 1 0 点对点持久化 3 2 图3 1 1 发布 订阅持久化 3 2 图4 1 服务器端的等级划分 3 5 图4 2 服务器端等级标志 3 5 图4 3 客户端发送速度等级 3 6 图4 4 软引用消息数等级 3 6 图4 5c a c h e 的数据结构 一3 7 图4 6 软引用算法 3 7 图4 7 启动消息缓存的配置文件 3 7 图4 8 检测算法 3 7 图4 9 算法处理流程图 3 7 图4 1 0 系统使用流量控制和消息缓存策略前后比较图 3 7 图5 1 消息桥的体系结构 3 7 图5 2 消息桥转发过程 3 7 图5 3 消息桥配置文件 3 7 图5 5c 客户端框架一 3 7 v i l 浙江大学硕士学位论文图目录 图5 5c 客户端框架二 3 7 图5 6j n i 的功能 一3 7 图5 7j a v a 中的类到本地类型的映射 3 7 图5 8j n i 调用j a v a 的总体步骤 3 7 图5 9c 客户端编程 一3 7 图5 1 0w e bs e r v i c e 设计的体系结构 3 7 图5 1 1 提供的w e b 服务接口 3 7 图5 1 2w 曲s e r v i c e 客户端示例 3 7 图6 1 文件存储模块类图一 3 7 图6 2 文件存储模块类图二 3 7 图6 3 流量控制和消息缓存模块类图 3 7 图6 4 消息桥模块类图 3 7 图6 5 存储属性配置界面 3 7 图6 6 配置j m s 文件存储界面 3 7 图6 7 配置j m s 服务器持久化存储策略界面 3 7 图6 8 消息桥模块主界面 3 7 图6 9 消息桥目的地配置界面 3 7 图6 1 0 消息桥配置界面 3 7 图6 1 1 消息桥具体配置页面 3 7 图6 12 点对点持久化图 3 7 图6 1 3 点对点非持久化图 3 7 图6 1 4 发布 订阅持久化图 3 7 图6 1 5 发布 订阅非持久化图 3 7 v i i i 浙江大学研究生学位论文独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果 除了文中特别加以标注和致谢的地方外 论文中不包含其他人已经发 表或撰写过的研究成果 也不包含为获得逝姿盘鲎或其他教育机构的学位或 证书而使用过的材料 与我 同工作的同志对本研究所做的任何贡献均已在论文 中作了明确的说明并表示谢意 学位论文作者签名 丁豆垮签字同期 州彤年石月 同 学位论文版权使用授权书 本学位论文作者完全了解逝姿态鲎有权保留并向国家有关部门或机 构送交本论文的复印件和磁盛 允许论文被查阅和借阅 本人授权逝姿盘鲎 可以将学位论文的全部或部分内容编入有关数据库进行检索和传播 可以采用影 印 缩印或扫描等复制手段保存 汇编学位论文 保密的学位论文在解密后适用本授权书 学位论文作者签名 了直珍导师签名 圜 l 印建l 签字同期 歹 孑年6 月 r 签字同期 川8 年占月 衫日 浙江大学硕士学位论文第l 章绪论 第1 章绪论 1 1 研究背景与意义 1 1 1 中间件概述 随着计算机技术的迅速发展 硬件技术方面 c p u 速度越来越快 处理能力 越来越强 软件技术方面 应用程序规模不断扩大 随着i n t e m e t 的出现和大规 模发展 计算机的应用范围也变得更为广阔 许多应用程序需在网络环境的异构 平台上运行 而在这种分布异构环境中 通常存在多种硬件系统平台 在这些硬 件平台上又存在着各种各样的系统软件 以及多种风格的用户界面 这些硬件系 统平台还可能采用不同的网络协议和网络体系结构连接 而如何把这些系统集成 起来并开发新的应用是一个非常现实而又困难的问题 在这种背景下 中间件技 术的概念应运而生 目前 对中间件没有一个统一的定义 总的来说 中间件是 指介于应用层和网络层之间的一个功能层次 1 1 满足一定标准的一系列软件环境 服务和工具的集合 2 它能够屏蔽操作系统和网络协议的差异 为异构系统间提 供通讯服务 实现网络互连和应用之间的互操作 中间件涵盖的范围非常广 从不同的功能角度来看 中间件可以分为基础中 间件 服务中间件和行业中间件等 基础中间件中根据目的和实现机制的不同 又可以分为对象请求代理中间件 o r b o b j e c tr e q u e s tb r o k e r 4 1 远程过程调 用中间件 r p c r e m o t ep r o c e d u r ec a l l 6 和面向消息的中间件 m o m m e s s a g e o r i e n t e dm i d d l e w a r e 5 1 将应用软件直接使用操作系统 网络协议和数据库等必然会遇到一系列棘手 的问题 而中间件是将应用软件所遇到的这些共性问题进行提炼 抽象 在操作 系统之上形成的一个可复用的部分 供成千上万的软件重复使用 所以与传统的 软件开发方式相比 中间件平台可大幅提高应用软件的开发效率 3 1 对于应用软 件开发 中间件提供的程序接口定义了一个相对稳定的高层应用环境 不管底层 的计算机硬件和系统软件怎样更新换代 只要将中间件升级更新 并保持中间件 1 浙江大学硕士学位论文 第l 章绪论 对外接口定义不变 应用软件几乎不需要任何修改 从而保护了企业在应用软件 开发和维护中的重大投资 依靠标准的中间件还可以将现有的应用和新的应用融 合在一起进行应用集合 具体地说 中间件屏蔽了底层操作系统地复杂性 使程 序开发人员面对一个简单而统一的开发环境 不必为程序在不同系统软件上的移 植而重复工作 中间件不只给应用程序带来开发的简单 开发周期的缩短 也减 少了系统的维护 运行和管理的工作量 还减少了计算机总体费用的投入 1 1 2 消息中间件 1 消息中间件概述 面向消息的中间件 m e s s a g eo r i e n t e dm i d d l c w a r e m o m 是中间件中独特 的一类 它的基本功能就是使分布式应用间的通信变得更加简单 它独立于操作 系统和网络 屏蔽了底层操作系统和网络平台的差异 为应用程序提供一致的通 讯标准 它既支持同步方式又支持异步方式 异步方式比同步方式具有更强的容 错性 在系统发生意外故障时还可以保证消息的正常传输 发布 订阅是异步方式 的重要手段 它可以指定哪种类型的用户可以接收哪种类型的消息 更加有针对 性 m o m 提供了以松散耦合的灵活方式集成应用程序的一种机制 它提供了基 于存储和转发的应用程序之间的异步数据发送 即应用程序之间彼此不直接通 信 而是与作为中间件的m o m 通信 它不同于c o r b a 15 1 d c o m t l 6 1 r m i 3 0 等r p c 中间件 2 消息中间件的应用环境 在分布式环境下 业务单位散布各处 各种应用程序运行在不同的软 硬件 平台上 消息中间件主要提供应用程序集成所必须的数据的递送 过滤 映射 解析和收集等功能 屏蔽不同的硬件平台 数据库 消息格式 通信协议之间的 差异 提供应用程序到应用程序之间的高效 便携的通信能力 在文献 7 j 中 指 出了消息中间件的典型应用环境 多个应用程序采用多种编程语言编写 同时存在企业间的复杂通信和企业内的复杂通信 2 浙江大学硕士学位论文 第l 章绪论 夺需要处理复杂的 高吞吐量的系统设计 希望系统的具有很长的生命周期 至少大于3 年 新系统需要与一些已存的旧的系统融合 应用程序使用的硬件平台 数据库或操作系统是异构的 同时有多个数 据源 图1 1 描述了消息中间件在分布式系统中的结构框架 3 l 图1 1 消息中间件在分布式系统中的结构框架 3 消息中间件的基本特征 消息中间件的核心就是提出了目的地 d e s t i n a t i o n 的概念 目的地有两种 队列 q u c u e 和主题 t o p i c 尽管目前有多种多样的消息中间件实现 但是它 们基本都包含以下几个特征网 夺具有独立的消息传递协议层 消息中间件通过它来实现网络通讯 专门 的消息格式库定义控制消息和应用消息的格式 可以对消息进行格式转 换 日志记录和定时传送等处理 可靠高效的异步通信 消息中间件支持可靠的传输方式 确保 一次并 唯有一次 的传输 同时消息中间件允许消息发送者在发送消息后继续 其它工作 而不必阻塞等待接收者的响应 令持久化消息和非持久化消息 这是消息的两种类型 非持久化消息在系 浙江人学硕上学位论文 第1 章绪论 统运行时保存在内存中 这种方式能提高系统的性能 但在系统突然宕 机或掉电 非持久化消息由于保存在内存中 所以将不可恢复 当用户 对消息的可靠性要求不是很高的情况下 可以使用该策略 持久化消息 存储在外存上 同时记录数据日志 具有高度可靠性 在系统宕机或掉 电等都能保证消息不丢 事务支持 消息中间件可以把事务保存到外设上 保证在网络故障或系 统断电的情况下的完整恢复 1 1 3j a v a 消息服务 上个世纪九十年代木 各种消息中间件产品大量涌现 这些消息中间件产品 均为企业提供了良好的数据集成服务 但是它们不存在一个统一的标准 这就造 成了不同的产品很难进行可重用的无缝连接 而j a v a 消息服务 j m s j a v am e s s a g es e r v i c e 是s u n 公司在1 9 9 8 年提出的 一种消息机制的规范 它的出现是为了解决先前的各种消息中间件的接口互异 互操作难的问题 j m s 为j a v a 应用程序提供了创建 发送 接收和阅读消息系统 中消息的方法 它的目的是给客 一端用户提供一个统一的接口 这样 在不同的 机器 不同的操作系统上或者不同的消息系统产品之间 客户端的应用程序可以 一次写好 而永远不用改变 图1 2 简单描述了这一模型 m o ms c n i c ep r o 啊d e r s 图1 2j a v a 消息服务体系结构 4 浙江大学硕士学位论文 第1 章绪论 在j m s 规范发布后 就相应出现非常多的消息中间件产品实现了该规范 如 商用产品w e b l o g i c m q t 2 3 1 w e b s p h e r em q t 2 引 f i o 舢o m 等 开源产品有 0 i p e n j m s 钔 j 0 舳 1 0 1 j b o s s m q l l l 等 其中商用产品比开源产品要稳定高效 1 2 消息中间件的研究现状 m s 规范的发布是消息中间件发展过程中的一个重大突破 目前很多商用消 息中间件产品和开源消息中间件产品都提供了j m s 实现 在j 2 e e l 3 规范推出以 后 j m sa p i 已经成为j 2 e e 的一部分 厂商就可以使用j 2 e e 规范提供的接口来 创建企业r r 应用的消息组件 目前的j m s l 1 规范包含在j 2 e e l 4 规范中 且 j m s l 1 规范统一了点对点和发布 订阅两种通讯模型 使得它们可以结合在一起 更好的工作 j m s 客户端代码只需访问并使用消息目的地而不必进而分成队列或 主题 这就极大地提高了代码地可重用性 目前已经有很多商业和开源产品实现了j m s 规范 虽然实现了j m s 规范的 消息中间件产品有扩展性好 服务标准化等方面的优点 但随着各方面技术的发 展 j m s 规范本身和j m s 消息中间件产品都存在着一些不足之处 1 提供j m s 规范的消息中间件都是基于j a v a 实现 而基于j a v ai o 实现的 传输协议大大限制了消息传输的性能 目前 j a v a 为此引入了n i o 技术 但现在 的众多产品中 只有f i o r a n o m q 2 刀和o b e r m q 2 1 等少数几个采用了这个技术 2 集群技术能解决集中式服务器负荷过重的问题 但j m s 规范没有对集群 技术进行定义 导致现有各商品对集群的处理方式也有所不同 s o n i c m q 冽实现 了服务器集群环境下的队列之间动态路由体系结构 d y n a m i cr o u t i n g a r c h i t e c t u r e d r a d r a 动态决定消息到达目的地的最佳路径并在需要时建立 连接 这允许各个服务器共同承担负载来维持服务器间的动态平衡 f i o r a n o m q 也允许并发客户连接到服务器集群上 f i o r a n od i s p a t c h e r 会将接入的客户连接动 态路由到集群中负载最轻的服务器上 另外 像w e b s p h e r em q 等也都实现了集 群技术 但由于这些产品对集群技术的处理方式不同 因而导致互操作性差 服 务可扩展性不够高 5 浙江大学硕士学位论文第l 章绪论 3 负载平衡 容错方面 对于集中式服务器 j m s 也没有规定多个客户端和 服务器之间应该如何协同工作 在具体的应用环境中 由于j m s 客户端的不断增 多 j m s 服务器的负荷也逐渐变重 容易成为系统性能的瓶颈 为此很多现有的 消息中间件也都提出了自己的处理方案 f i o r a n o m q 实现了内部存储空间管理算 法来跟踪系统的内存消耗概况 当内存消耗达到j a v a 虚拟机上限时 f i o r a n o m q 自动开始阻塞并使其内部缓冲区溢出 内存管理器就会自动控制客户端的消息发 送速度 s o n i c m q 通过一系列流量控制节流客户端的消息发送速率 以避免消息 的抛弃 以此来最大化系统的稳定性 w e b l o g i cj m s 则通过对m e s s a g e p r o d u c e r 的阻塞来进行消息流量控制 阻塞式发送 就是当某个目的地已有的消息大小 已经超过其最大消息限额时 就暂时性的阻塞m e s s a g e p r o d u c e r 向该目的地发送 消息 这些j m s 消息中间件产品都对发送消息的速度进行一定的控制 但都仅仅 进行发送速率控制 都没有涉及把内存中的消息缓存到辅存上 本文为此提出一 种在进行流量控制的基础上 又进行适当的缓存消息的方案来更大程度的保证服 务器的健壮性 4 消息持久化性能有待提高 j m s 规范定义了客户端可以选择所发送消息 在服务器端的可靠性 即可以声明为可持久化存储 目前 基本上每种j m s 消息 中间件产品都实现了消息的持久化存储 但是大多数都是采用数据库持久化消 息 比如开源的o p e r d m s 就是采用数据库表来存储持久化消息 w e b s p h e r e m q 也只提供数据库存取技术 但是它为了提高数据库存取的能力 提出了一种s q l 的缓存叫做 准备好的语句 p r e p a r e ds t a t e m e n t s 它是指用缓存中的预先编译 好的s q l 语句 忽略对s q l 语句的重新编译的请求 这对提高数据库的存取性 能有一定好处 但由于采用数据库存储 应用系统就需要与数据库进行 系列交 互 而这些交互都要花费很大的开销 从而导致系统性能低下 于是又出现很多 消息中间件考虑使用文件来存储持久化消息的方法 比如j b o s sm e s s a g i n g 就提供 了数据库持久化管理和文件持久化管理两种方式 但它的文件持久化管理的概念 是 为消息服务器端的目的地创建各自相应的目录 将每个持久化消息作为适当 目录下的独立的文件存储 因此频繁的打开和关闭文件而使得性能很差 另外 6 浙江大学硕士学位论文 第l 章绪论 f i o r a n o m q 和w e b l o g i cj m s 也都提供了数据库存储和文件存储两种方式 本文为 此也提出了高性能的基于文件存储的持久化方案 1 3 课题背景和主要工作 论文涉及的课题背景是浙江大学中间件技术工程研究中心所承担的浙江省重 大科技攻关项目一 基础中间件平台的研制及其产业化 课题与国家8 6 3 计划 面 向新型网络计算的高性能语义分布 订阅系统 这些项目的总体目标是 面向制 造业信息化工程 服务业电子化工程 电子商务 电子政务等信息化工程 突破 制约信息化发展的瓶颈 力求为浙江省信息化应用系统的开发 集成和实施提供 一套完备 具有特色 拥有自主知识产权的中间件平台 具体目标为 完成具有 自主知识产权的轻量级j 2 e e 应用服务器 钱塘 j t a n g 应用服务器 在轻量级 j 2 e e 应用服务器中间件的基础上 提供一系列的上层服务 包括工作流管理服务 表单管理服务 单点登录服务 安全认证服务 文件管理服务等 钱塘消息中间件 j t a n g m q 是钱塘应用服务器的主要服务之一 在本课题 进行前推出了1 0 和2 0 版本 这两个版本是一个符合j m s l 1 标准的消息中间件 但这些版本虽然获得了较好的应用 但存在消息持久化 由于数据库存储必然要 花费很大的开销在建立连接等步骤上 所以性能比较不理想 性能不高 消息流 量控制和消息缓存的方法不佳 需要和其他异构消息中间件实现集成等问题 为 了解决上述问题 课题组研制开发了钱塘消息中间件v 3 0 版本 本文主要介绍 这一版本的关键实现技术 1 4 论文组织结构 论文的研究内容和组织结构具体如下 本文内容共分七章 各章的关系如图1 3 所示 第三 四和五章是并列的 它们分别构成第六章原型系统的关键技术 其中第二章至第六章是本文的主要内 容 7 浙江大学硕士学位论文 第1 章绪论 图1 3 论文组织结构 论文的研究内容以及组织结构如下 第一章绪论 介绍论文的研究背景 研究意义 对中间件 消息中间件 以及j a v a 消息服务做了一个比较系统的介绍 接着分析了消息中间件的 国内外研究现状并指出现有产品的欠缺之处 最后介绍课题的研究背景 和论文的主要工作 第二章介绍系统的总体设计 由于钱塘消息中间件实现了j m s 规范 所 以先简要介绍了j m s 规范 接着介绍钱塘消息中间件的体系结构和功能 特点 最后详细分析j t a n g m qv 2 0 存在的一些不足之处 并提出解决方 案 夺第三章文件存储的消息持久化方法 首先对消息持久化存储进行了一个 概述 介绍了当前常用的持久化方法 比较了数据库存储的存储性能 提出基于文件存储的消息持久化方法 而后从存储模型的各层来介绍该 方法 最后给出文件存储和数据库存储的性能分析 第四章流量控制和消息缓存的方法 首先简单介绍了流量控制和消息缓 存概念 接着介绍本文提出了的算法 并从服务器参数设置 消息引用 的概念 软引用算法和消息缓存线程来描述 然后给出算法应用于钱塘 消息中间进的流程 最后给出系统在使用流量控制和消息缓存前后的稳 浙江大学硕士学位论文 第1 章绪论 定性比较 第五章消息桥和多模式客户端的设计 首先从设计思路 关键技术解决 方案和关键过程描述等方面来介绍消息桥 接着从实现方案 关键技术 流程和c 客户端的应用示例来介绍c h 客户端 最后介绍了w e b s e r v i c e 客户端的设计 第六章系统实现和性能分析 首先介绍了文件存储模块 流量控制和消 息缓存模块以及消息桥模块的类图 接着叙述了文件存储模块和消息桥 模块的控制台实现 最后给出优化后的系统在同等测试条件下与其它两 种比较典型的消息中间件进行性能比较 第七章总结与展望 对论文的主要工作进行了回顾和总结 并对后续工 作进行了展望 1 5 本章小结 本章首先介绍了中间件的应用和技术背景 消息中间件的基本特征和应用环 境 j a v a 消息服务 接着分析了消息中间件的国内外研究现状和不足 特别指出 现有产品在高性能传输协议n i o 集群技术 负载平衡和容错技术和消息持久化 的性能等方面的实现概况 最后简要介绍了课题背景 本文的主要工作和论文结 构 9 浙江大学硕士学位论文 第2 章系统的总体设计 第2 章系统的总体设计 j m s 是访问企业消息系统的标准a p i 它定义了j m s 客户端访问消息机制的 接口和方法 包括创建 发送 接收 阅读消息系统中的消息等通用方法 钱塘 消息中间件系统实现了j m s l 1 规范 目前最新的j m s 规范 支持p 2 p 和p s 两种消息服务模式 所以本章在介绍钱塘消息中间件系统的总体设计前 首先介 绍j m s 的基本概念 2 1 舰订s 规范 本节对j m s 的总体介绍主要是依据j m s i 1 规范 1 7 3 8 中描述的内容 j m s 规 范减少了应用开发人员学习使用消息中间件产品的过程 但却提供了足够功能来 支持复杂的消息应用 j m s 规范没有指定底层通讯协议 从而应用开发人员不用 过多考虑底层通讯细节 并且不同的j m s 实现可以提供多种不同的通讯协议 比 如提供基于t c p i p r 兀 p s s l 或其他通讯协议 1 9 1 本节从j m s 实体 j m s 的 两种消息服务模式 一个j m s 应用程序的组成以及j m s 规范提供的主要接口等 方面来介绍j m s 规范 2 1 1j 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 的接 口 并提供管理和控制功能 如提供目的地管理 消息管理 客户端管理 控制 消息流量等 2 j m s 各种消息 它是j m s 规范定义的一套消息接口 包括b y t e s m e s s a g e m a p m e s s a g e o b j e c t m e s s a g e s t r e a m m e s s a g e t e x t m e s s a g e 等消息接i z l 不同的 j m s 供应者可以有不同的实现 但都必须实现规范中的消息接i s l 这就使得客户 端可以自由使用j m sa p i 来创建和使用消息而不需要受j m s 供应者约束 3 j m s 域 j m sd o m a i n s 规范提供了两种最普通的消息模式 点对点 p t p 1 0 浙江大学硕士学位论文第2 章系统的总体设计 p o i n tt op o i n t 和发布 订阅 p s p u b l i s h s u b s c r i b e 2 1 2j m s 消息传递类型 j m s 规范支持两种消息服务类型 1 点对点类型 一个客户端对应一个消息队列 发送消息的客户端将消息发送到j m s 供应 者 j m s 供应者将消息存储在消息要送往的客户端的队列中 消息消费客户端便 可以到自己的队列读取消息 消息一直保存在队列中直到消息被消费或消息过期 了 我们平常寄邮件给某人 就是点对点模型的一个典型的例子 因为我们不会 把一个邮件切成几份送给几个人 图2 1 展示了点对点模型 图2 1 点对点模型 点对点消息类型具有以下特点 令每一条消息都只有一个消费者 消息的发送者和接收者不存在时间依赖 接收者在收到消息后需要确认 每条发送的消息必须成功处理一次 并且只成功处理一次 2 发布 订阅类型 发布 订阅模型是基于消息主题 m e s s a g et o p i c 概念的 发布者把消息发送 到某个主题中 而该特定主题的订阅者接收这些消息 一个典型的例子就是订阅 杂志 当订阅了某一份杂志后 每隔一段时间就会收到该杂志 而且大家收到的 杂志是一样的 图2 2 展示了发布 订阅模型 浙江大学硕士学位论文 第2 章系统的总体设计 图2 2 发布 订阅模型 发布 订阅消息类型具有以下特点 一条消息可以有多个消费者 但可能被零个 一个或多个消费者消费 夺发布者和订阅者之间存在时间依赖 即只有订阅了某个主题的消息后才 能消费该主题的消息 同时订阅者必须保持活动状态 还有一种情况就 是订阅者可以创建持久化订阅 这样它就不会错过自己不在线时发布的 消息 2 1 3j m s 应用程序组成 一个j m s 应用程序可以由下列元素组成 夺j m s 供应者 j m sp r o v i d e r 实现了j m s 以及具有管理和控制等功能的 最小实现 夺管理对象 a d m i n i s t r a t e do b j e c t s 由消息中间件产品管理员预先创建给 客户端使用的对象 包括目的地 d e s t i n a t i o n s 和连接工厂 c o n n e c t i o n f a c t o r i e s 其中目的地还包括队列 q u e u e 和主题 t o p i c 连接工厂用 于创建与消息中间件底层消息系统的连接 目的地对象是客户端使用的 用来指定消息要发往的目标或接收的消息的来源 管理对象和j m s 客户 端的交互如图2 3 所示 v j m s 客户端 j m sc l i e n t s 使用j m sa p i 来发送和接收消息的j a v a 程序 非j m s 客户端 n o n j m sc l i e n t s 指未使用j m sa p i 而是使用消息中 1 2 浙江大学硕士学位论文第2 章系统的总体设计 训件提供的本地a p i n a t i v ec l i e n t a p i 的客户端程序 消息 m e s s a g e 在客户端之间传递的信息 在设计时需要先定义好格 式和内容 图2 3j m sa p i 体系结构图 2 0 2 1 4j m s 主要接口及类结构层次图 j m s 定义了一组基于各种消息传递概念的公共接口 而p t p 和p s 这两个消 息传递域又分别扩展了公共接口 表2 1 列出了j m s 的主要接口情况 图2 4 描 述了j m s 的类结构层次图 表2 1j m s 主要接口 l 醚黪戳蔫i 艨弱j 囊蠹p t p 域接翻 p u b s u b 域缓翻 i 羞妻薹i i l i i c o t m e e t i o n f a c t o x x e u c c o m t e c t i o n f a c t o r yt o p i c c o m t e e t i o n f a o t o t j r i 蠢l 1 糕灏囔鬻麟戮 q u e u o c o x m e e t i o n t o p i e c o l m e c t i o n 一嚣 d e s i t i 毯n 瀵a t i 皎 麟n q 溉l t o p i c s e s s i o n q u m l e s e s s i o n j j t o p i c s e s s i o n m e s s a g e t h o d u rq n e u e s e n d e r 誊 t o p i e p u b l i s 氆垃 v o m e s s a g e j c 0 n i t d 西e 一 q u e u e r e e e i v e r 10 t o p i e s u b s o i b e r q u e u e b r o w s e r j j 除了上表列出的接口外 j m s 主要接口还包括在2 1 1 中提到的各种消息接 口 以及一些异常接口 同时为了与分布式事务兼容 j m s 还提供一组以x a 开 头 包括生产器 连接和会话等的x a 版本 的接口 一 圈圈 浙江人学硕上学位论文第2 章系统的总体设计 图2 4j m s 类层 i 久结构 2 2j t a n g m q 系统介绍 2 2 1j t a n g m q 的体系结构 软件体系结构用于描述系统各个组成部分的功能以及它们之间的关系 软件 体系结构可以展示一个系统的工作机理和实现方法 设计一个好的体系结构是一 个系统成功与否的关键步骤之一 软件体系架构 2 4 有集中式 返回调用式 流水 式 层次调用式等 由于层次调用结构 2 5 具有结构清晰 易于维护 功能明确等 特定 所以系统采用这种设计思想进行设计 图2 5 描述了j t a n g m q v 3 0 的体系 结构 浙江大学硕士学位论文第2 章系统的总体设计 图2 5j t a n g m q 系统的体系结构图 j t a n g m q 体系结构由三部分组成 从上往下为客户端 网络层和服务器 客 户端是j m sa p i 的实现 网络层负责将消息从客户端发送到服务器 同时也负责 将消息从服务器发送到客户端 网络层的通讯协议包括s b p s e l e c t o r b a s e d p r o t o c 0 1 h t t p h t t p s 等 服务器是系统服务提供实现的主体 也可以分成 三个模块 拦截器模块 服务器的基本功能模块和服务器的关键共用模块 拦截 器模块包括拦截器入口 安全拦截器 日志拦截器等 服务器的基本功能包括目 的地管理器 客户端管理器 服务器的关键共用服务模块包括消息缓存 持久化 管理 线程池 a s f a p p l i c a t i o ns e r v e rf a c i l i t i e s 和事务管理器等 j t a n g m q 既可以作为一个独立的消息中间件 又可以与j 2 e e 应用服务器方 便的集成 系统采用面向方面的编程a o p a s p e c t o r i e n t e dp r o g r a m m i n g 2 6 技术 能适应不同应用场合的要求 1 5 浙江大学硕士学位论文 第2 章系统的总体设计 2 2 2j t a n g m q 的架构模型 1 客户端模型 客户端组件是j m s 的a p i 的标准实现 为y m s 应用程序提供发送 接收 发 布 订阅 退订消息等的标准系统功能接1 3 实现 所以客户端的功能很明确 客户 端的体系结构如图2 6 所示 图2 6 客户端的体系结构图 2 通讯层可扩展模型 通讯层提供客户端到服务器之间的往返连接 所以需要实现各类通讯协议以 保证客户端和服务器之间的连接和数据消息的高效可靠传输 j t a n g m q 系统的通 讯层实现了s b p h r r p h t t p s 和i n t r a v m 等协议 本着通讯层的架构的设计 应尽量具备功能划分合理 结构清晰 易于理解并且具有可扩展性 于是提出如 图2 7 所示的通讯层可扩展模型 1 6 浙江大学硕士学位论文第2 章系统的总体设计 丐j 蕊 1 囊 s i f c l i c n c d i s p a c c h e r s e 眦e 愆 c l i e n t d i s p a t c h e r s e r v e r d i s p a i c h e r s e r v i c e 蓬垂豳s e e r d i s p a t c h e r s e r v e r d i s p a t c h e r f a c t o r y 锣c f p 篡誓 亍5 s e n d c o c l i m 3 t il e t w 墨o r k f 多j 芦掌l 面i 缈5i l 一 一 j 嘲 c s f 一 露 痞勒磊 i6j c r e a t e n 立 c o 肼e c t i o n f a c e 5 s c o m m u n

温馨提示

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

评论

0/150

提交评论