(计算机应用技术专业论文)基于hibernate和aop的三层架构缓存研究与实现.pdf_第1页
(计算机应用技术专业论文)基于hibernate和aop的三层架构缓存研究与实现.pdf_第2页
(计算机应用技术专业论文)基于hibernate和aop的三层架构缓存研究与实现.pdf_第3页
(计算机应用技术专业论文)基于hibernate和aop的三层架构缓存研究与实现.pdf_第4页
(计算机应用技术专业论文)基于hibernate和aop的三层架构缓存研究与实现.pdf_第5页
已阅读5页,还剩76页未读 继续免费阅读

(计算机应用技术专业论文)基于hibernate和aop的三层架构缓存研究与实现.pdf.pdf 免费下载

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

文档简介

摘要摘要随着信息技术的飞速发展,企业信息化建设逐渐被社会各界所关注,并开始在企业的管理运作中发挥着越来越重要的作用。在企业级开发领域中,使用基于j 2 e e 的三层架构将是绝大多数厂商和企业的选择。近年来,在企业级应用开发环境中,面向对象的开发方式己成为主流,而关系数据库是目前使用最广泛的数据库,因此,在开发过程中通常会采用面向对象技术和关系数据库相结合的方式。由于面向对象技术和关系数据理论基于不同的理论基础,使得二者在协同工作时出现不匹配。造成三层架构的可维护性和可移植性比较差。另外一方面,三层架构中的持久层的性能问题也受到越来越多的关注。现有的一些系统在并发访问的规模扩大时,系统的响应时间会陡然增加,不能满足客户的需求,甚至拒绝服务。传统的提高持久层性能的办法不但浪费了大量的人力、物力和财力,而且对企业的创新也是一种束缚。基于上述原因,本文主要对三层架构中的持久层进行了研究。首先,分析了现有持久层对数据库操作的不足,相对于传统的使用巾b c 直接写s q l 语言,在持久层采用了基于o 瓜m a p p 血g 的h i b 触框架,h i b 懿a t e 提供轻量级持久框架,提供了对象和数据库模型的一一对应的映射关系,同时还提供了面向对象的查询语言和恢复机制,大大减少操作数据库的工作量,同时还可以使程序员能够随心所欲的使用面向对象编程思想来操作数据库。其次,针对持久层的性能问题,本文对h i b 锄a t e 的缓存机制做了细致的阐述,h i b 哪l a t e 的缓存介于h i b e 卿炯应用和数据库之间,主要用于减少直接访问数据库的频率,从而提高应用的性能。对于经常查询而又不经常改变的表,采用e h c a c h e在内存和硬盘里面做数据库的缓存,使得数据库的资源得到了增强,数据库不再成为三层架构的瓶颈。最后,针对h i b 锄a t e 缓存生成的方式,本文提出应该把缓存的生成从持久层中独立出来,由此引入了面向方面编程a o p 。本文结合了当前最为流行的j 2 e e 轻量级框架s p f i l l g ,利用s p 血g 的强项a o p 技术,对缓存的生成方式进行了改进,从而改变了缓存在三层架构中的位置。从而进一步的提高的三层架构的性能。关键词:三层架构,持久层,h i b e m a t c ,a o pa b s 住a c ta b s 仃a c ta s 也ei i l f o r m a t i 蚰t e 幽l o g yd c v e l o p sq u i c i d y ,m ci i i 如m 撕o nc 曲r i l c 垃o no f伽t e r p r i 辩d 豫w si n o r c 跚dm o r ea t t e i _ l t i o i l ,锄di tb e o o m 髑m o 他a n dm o 他i n l p 砥锄ti nm em a n a g e m e n to f t e r p r i s e 3 枷一a r c m t e c t i l r ei sv 舒yp i o p 试盯锄n ge n t e 印r i s 鹤,a n di ti sb 勰e d j 2 e e h lr 啪ty 鹤,o o pp a t 嘧nb e c 锄et h em a i ns 缸瑚mo f钮t e f 砸s ed c v e l o p m 咄a tm es 锄e t j l l l e r e l 撕o nd 黼弱ei sb e i n 9 1 l s e dm o s t l 舅s 0 ,i ti sv e 叮。俞t 0 洲o pb o m 丽m0 0 p 粕dr d a t i o nd a b a b 鹊c b u t 雒t h e 细ot e c :h n 0 1 0 西伪a r cb a s e do nd i 任b 黜tt b e o t h e f ew 础db cc o n f l i c t sw i l e nm e yc o o p 贸a t ew i 血铭e ho 也w i l i c hw o u l dma :k cm e3 一石同一疵h i 钯c t i l r eh a r dt 0m a i | 1 切【i n 锄d 位m 虹醯o nt h eo m 盯k m d t :h ep 柏咖a n c eo f3 坷d - a 尚t e c t u r eb e c 锄em o 糟觚dm o r ei n l p o r t a n t s o m ep l 器e n t3 t 曲e d a r c l l i t e c 哝w o l l l dg e ti n u c hl o i 增e fr e p m d e l a 弘c a nn o t 鞠缸s 匆础1 u e s to fd i 朗t s 趾d 钾钮d 朗ys e 而c cw 1 磁lm e yg e tm a l l yc 0 i l c u 舢tr a q u e s t s t 仃a d i t i o n a lm e t b o do fi l l l p r o v i i l gt :h e 讲利碗m a n c eo f3 撕托d - 甜d l i t :t l i r ew o u l dw 嬲t eai d to fh 瞳m 鸭m 删a l 趾d 缸瑚d a lr c s 0 u r c e s 跹da l p r e 咖tm ec f e a t i o no fa 内删s e 跏et 0 廿1 ec a l l s 鼯加c ,础刚黜c h e d3 - t i r e d c h i t e c t u | ee s p e c i a l l y l ep e 塔i s t c cl a y 嚣i s 心鲫c :h e di i lt h i sp a p 乱f i 咄f a u l to fp f 髓e n tp c 岱i 鼬匝c el a y 贫w h 饥i t 唧吼a t 舒t h ed 砒曲嬲ew e r ea i l a l ) z e d n 啜ih i b e n l a t e 仃如l e w o r kb 部c d o 瓜m a p p i i l gi si n 协喇l i c o d w l l ic ! hw o l l l dp i s e n t pm e c h a n i s mw h e n 、 ,ed 1w i mr c l 撕o n 也也l b 笛e锄d 北d 1 峨w o d 【删y s 仪吣勰蕾0 rt l l ep e r 内棚m o fp e f s i s 蛔el a y e f ,m e 翎h em 托h a i l i s mo fk b e f n a t ew 鲢e x p ( 拭l d e d h i b e m a t c 翎d 抢1 i 铬b c t w 戗= i la p 瞄i c a 主i o n 越l dd 如b a s e ,w h i c i hi so f t u s e dt 0r e d u c et h em 邛1 c yo fa c c e s s i n gd 撕b 嬲c 雒d m st 0i n l p r o v cp i 。r f 0 r i i l a n c e e h c a d l ew 弱c :h o s 姐t 0s t o r ed a t a 丘o md a t a b a i nm e m o r y 锄dd i s l 【w h ic :hw ( u i di 咖f o r c e 也ed 灿勰ef e u “x 爆a i l dma :k ed a t a :b a s et l l eb o t t l e n e c ko f36 e r e dl a y 盯n ol o i l g e f i i l a j l 弘弱f o f 也e 誉黜e 豫t i o np 砒t e mo f k b e r n a t e c b 岛i tw o u l db e 慵t 0p u t 也ee h eo u to fp e r s i s t 伽嘴l a y e r 1 1 1 _ 邺t i 心a o p ( a s p e c t 嘶e n t e dp r o 酽煳i i l 曲姚o l o g yw 猫d u c e d w i m 舭m o s tp o p u l 盯j 2 e el i 咖w e i 啦妇n e w o r ks 砸喝a o pna b s 订a di i n p r 0 v e dm eg 锄廿a t i o np a 仕e mo fl l i b e m a t ec a c h e a n dc h a f l g e dm ep o s i t i o no fc a c h ei l l3t i e r e dl a y 盯,缸a l l yi m p v e dt l l e p 晌肌锄c eo f 3t i e 同l a y 睨k e y w o r d s :3 - t i r e d a r c h i t e c t l l r e ,h i b 啪a t e ,e h c a d 伧,a o pi 独创性声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。签名:鹰l 日期:年月日关于论文使用授权的说明本学位论文作者完全了解电子科技大学有关保留、使用学位论文的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。( 保密的学位论文在解密后应遵守此规定)日期:年月日第一章绪论1 1 课题背景第一章绪论2 0 世纪9 0 年代以来,伴随着i n t 鲫1 e t 时代的到来,基于c s ( c 1 i 蹦姻e v r e r ,客户机服务器) 【l 】结构的l n 系统已经无法满足当前的全球网络开放、互联、信息共享的新需求;进而,基于b s ( b r o w s 引s e r v e r ,浏览器服务器) 【2 】模式的w 曲系统,凭借其较低的硬件需求、较短的开发周期、良好的可扩展性和可维护性,逐渐成为当前企业信息系统的主流结构。在当前的企业级开发领域中,由于j 科a 在安全,负载均衡等方面的优势,使得基于j 2 e e 的三层架构将是绝大多数厂商和企业的选择。在三层架构统被广泛应用的同时,也暴露出一些不可忽视的问题,其中一点是不少系统的响应时间不能满足客户的需求;还有的系统在并发访问的规模扩大时,响应时间会陡然增加,甚至拒绝服务。三层架构的性能不佳所带来的代价通常是惨痛的,如影响企业形象、削弱企业竞争力、客户流失、削减市场份额等。然而,造成三层架构系统性能瓶颈的原因却非常复杂,既有系统平台自身潜在的缺陷,也有开发人员的技术和系统外部运行环境的影响。因此,如何有效地对三层架构性能进行优化,是三层架构亟待解决的问题。1 2 课题研究的内容和意义随着i n t e n l e t 的进一步普及和发展,基于网络的数据处理日益成为企业信息化的中心环节。数据库的灵活性、安全性和可拓展性成为数据处理技术的焦点。在基于网络的数据处理中,客户机服务器( c l i e 州s e 砷二层计算模式【3 】具有里程碑意义。这种模式在2 0 世纪8 0 年代后期开始引入业界。它为多用户系统提供了前所未有的双向交流感和灵活性,革命性地改变了传统应用设计和系统实现方式,很快便在各种类型的软件系统设计与开发中获得广泛应用,到2 0 世纪9 0 年代初期,这种计算模式己成为业界的主流。该结构最大的优点在于结构简单,开发和运行的环境简单。但也正是这种结构,产生了其原生性的问题:首先是系统的拓展性和安装维护问题。当将部门级电子科技大学硕士学位论文的应用逐渐推广到企业级的关键任务时,这些小规模环境下运行良好的应用,进入大规模生产系统之后,性能呈几何级数下降,以致影响到系统的可靠性;在系统开发完成后,整个系统的安装也非常繁杂。在每一台客户机上不但要安装应用程序,而且必须安装相应的数据库连接程序,还要完成大量的系统配置工作。其次是系统的安全性问题。在二层结构下,大量代码化的企业业务流程驻留在客户机上,给系统的安全性带来了极大的考验。同时随着用户数量的增加,这种业务逻辑的维护成本也越来越高。最后是系统间的通信障碍。当二层计算模式从部门级应用拓展到企业级应用时,二层结构的应用之间几乎没有交互性操作,因此很难实现分布系统的组件技术。以上这些问题是两层结构本身的原生性问题,仅仅依靠对二层结构进行细枝末节的修补和开发无法很好解决。要真正解决这些问题,必须从根本上改变这种二层结构设计。三层结构是指计算机系统中采用客户端层,逻辑层,数据层来实现系统的功能。它主要应用于分布式计算。从系统级角度来看三层结构,分布式操作系统就是最典型的例子。这种三层结构的优势何在呢? 做一个形象的比喻就是它在二层结构中间增加了标准化的加工厂和传输路线,从而可高效生产并传输客户端所需产品【4 】。具体而言主要有以下几点:首先,通过将整个系统分为不同的逻辑块,大大降低了应用系统开发和维护的成本,三层结构将表示部分和业务逻辑部分按照客户端层和应用服务器相分离,客户端和应用服务器、应用服务器和数据库服务器之间的通信以及异构平台之间的数据交换等都可以通过中间件或者相关程序来实现。当数据库或者应用服务器的业务逻辑改变时,客户端并不需要改变,反之亦然,从而大大提高了系统模块的复用性,缩短了开发周期,降低了维护费用。其次,系统的扩展性大大增强。模块化使得系统很容易在纵向和水平两个方向拓展:一方面可以将系统升级为更大、更有力的平台,同时也可以适当增加规模来增强系统的网络应用。由于摆脱了系统同构性的限制,使得分布数据处理成为可能。三层架构的优点在于可以很好的支持分布式计算环境。逻辑层的应用程序可以在多个机器上运行,充分利用网络的计算功能。在三层架构统被广泛应用的同时,也暴露出一些性能上的问题,其中一点是不少系统的响应时间不能满足客户的需求。本课题就是通过对三层架构的性能瓶颈的研究,结合h i b e m a t e 和s p 她框架,为三层架构建立合理的缓存,从而提高持久层的访问速度,进而提升三层架构的性能。2第一章绪论1 3 国内外的研究现状三层架构中的持久层能够在对象一关系数据库之间提供一个成功的企业级映射解决方案,弥补面向对象技术和关系数据理论这两者之间的差异。采用持久层的方法可以从根本上消除应用程序和关系数据库的祸合,目前较为常用的持久层的解决方案有以下三种:1 c 但q 艘( c 彻缸l i n 盯m a n a g e dp 蹦;i 咖c e ) 是由玎b 容器管理持久化。b e 扭容器封装了对象与关系的映射及数据访问细节,提供数据完整性、资源管理和并发性功能,从而使开发人员专注于业务逻辑和数据处理环节。使用c m p 时,由容器生成持久性代码并管理持久性逻辑。2 j d oj a v a d 蚴i 鳅文j d o ) 是s 蛆公司制定的存储j a v a 对象的规范。m o 提供了面向对象的持久数据存储。开发人员使用p o j o ( 无格式普通j a v a 对象) 来装入和存储持久数据。3 o r mo r m ( o b j 鳅- r e l a t i o n m a p ! p i l l g ) 是将应用程序中需要持久化的对象转换成数据库支持的关系模式数据。利用关系模式中的元组和谓词共同完成对对象模式数据的存储,并且在应用程序需要的时候将其完全复原。卜目前,持久层的研究和应用已经越来越受到国外学界和业界的重视:2 0 0 4 年7 月,e j b 专家委员会公布了新的e j b 3 o 规范草本,e j b 3 o 中最重要的变更是使用了基于h i b e m a l e 的o r 映射模型和j a v a 5 中的程序注释工具。2 0 0 5 年1 1 月,b e a 收购s o l a r l 讧c r 6 c ,从而将k 0 d o 纳入他们的产品线。酗。是一款强壮的、高性能的、功能丰富的j d o 规范的实现,以前只支持j d o 标准,2 0 0 6 年2 月1 3 日,b e a 公司宣布发布k o d 0 项目的最薪舨本k 0 d 0 4 o ,量枞o 支持e 了b 3 和m 0 2两个标准。此外,0 1 ) e l 肥a 将会实现支持e j b 3 os p c c i 矗c a l i o n 的持久层架构。2 0 0 6年3 月,了d 0 2 伊j s r 2 4 3 通过最终投票。尽管从j d 0 2 o 一开始制定,就存在很多的争论,c r a i gl 沁s e u 还是一直努力在制定一个人性化,易于编写,完全标准的j d 0 2 0 ,新的标准的制定基于四0 1 o 应用4 年来所有用户的经验积累。随着e j b 3持久层的出现,m 0 2 o 的前景令人期待。在持久层的缓存应用方面,目前主要有以下几种技术:j c s ( j a v a c a 幽n 挚y s t e 帕吟是一个分布式的缓存系统架构。它通过提供管理各种电子科技大学硕士学位论文动态缓存数据来加速动态w e b 应用。j c s 和其他缓存系统一样,也是一个用于高速读取,低速写入的应用程序。利用j c s ,动态内容和报表系统能够获得更好的性能。如果一个网站,有重复的网站结构,使用间歇性更新方式的数据库( 而不是连续不断的更新数据库) ,被重复搜索出相同结果的,就能够通过执行缓存方式改进其性能和伸缩性。o s c a c h e 是个一个广泛采用的高性能的j 2 e e 缓存框架,o s c a c h e 是能用于任何j a v a 应用程序的普通缓存解决方案。o s c a d b e 有以下特点:能缓存任何对象,可以不受限制的缓存部分j s p 页面或 i t r p 请求,任何j a v a 对象都可以缓存。它提供永久缓存数据的功能,缓存数据能随意的写入硬盘;它支持集群技术,集群缓存数据能被单个的进行参数配置,不需要修改代码;程序员可以最大限度的控制缓存对象的过期。1 4 本文的章节安排第一章:绪论,介绍课题的背景、研究的内容和意义、国内外研究现状。第二章:介绍三层架构与缓存技术,分析了三层架构的性能瓶颈。第三章:研究了传统的持久层技术j d b c ,讨论使用h i b 锄a t e 对持久层的操作方式改进。第四章:讨论缓存技术在持久层的应用,通过在持久层建立缓存,从而提高持久层的响应速度,进而提高三层架构性能。第五章:讨论a o p 技术与持久层缓存的集合,使用a o p 技术改进持久层缓存的生成方式,并进一步提高三层架构性能。第六章:介绍使用h i b e m a t c + e h c a c h e + a o p 构建三层架构缓存的整个实现。第七章:课题总结。4第二章三层架构与缓存技术第二章三层架构与缓存技术2 1 基于j 2 e e 的三层架构2 1 1j 2 e e 简介j 2 e e 是s 吼0 n e 的重量级产品,作为一种企业级w 曲应用程序开发技术,j 2 e e 是目前唯一在市场上得到了广泛应用的技术体系。j 2 e e 以j a v a 为核心技术,更接近或者满足于互联网在智能化w 曲服务上对分布性、开放性和平台无关性的要求,同时它在安全性、健壮性、组件化等方面也更为成熟稳定,获得了众多r r厂商如m m 、o n c l e 、b e a 等共同制定标准并提供技术支持,因此具有强大的功能,是三层架构开发的首选平台。j 2 e e 是一种利用j a v a 2 平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。j 2 e e 技术的基础就是核心j a v a 平台或j a v a 2 平台的标准版,j 2 e e 不仅巩固了标准版中的许多优点,例如 编写一次、随处运行“的特性、方便存取数据库的j d b c a - p i 、c o i 国a 技术以及能够在i n t e m d 应用中保护数据的安全模式等等,同时还提供了对彤b ( e n t e 印r i s e j a v a b e 弛s ) 、j a v a s e 州e t s a p i 、j s p ( j a v a s e e f p a g 鼯) 以及沮。技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。j 2 e e 体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,j 2 e e 降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持e n t c f 】岬s c j a v a b e a 璐,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。j 2 e e 使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。事实上,s 聃设计j 2 e e 的初衷正是为了解决两层模式( c l i 即t s e n ,神的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想,而且经常基于某种专有的协议,通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。现在j 2 e e 的多层企业级应用模型将两层5电子科技大学硕士学位论文化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层,以下是j 2 e e 典型的结构:运行在客户端机器上的客户层组件运行在j 2 e e 服务器上的w 曲层组件运行在j 2 e e 服务器上的业务逻辑层组件运行在e i s 服务器上的企业信息系统( e n t 唧f i s e i i l f o n n 撕o n s y s t e i l l ) 层软件如图2 一l 所示:曰图2 一lj 2 e e 的典型结构上述的四层逻辑结构通常是分布在三层物理结构中的,其中客户层运行在客户机上面,w 曲层和业务逻辑层运行在j 2 e e 服务器上面,企业信息系统层则运行在e i s 服务器上,因此j 2 e e 应用一般是指三层应用。这三层应用系统通过在客户端程序和后台存储层之间提供一个多线程的应用服务器的方式,扩展了原来的标准的两层应用系统【6 】。这种基于组件,具有平台无关性的j 2 e e 结构使得j 2 e e 程序的编写十分简单,因为业务逻辑被封装成可复用的组件,并且j 2 e e 服务器以容器的形式为所有的组件类型提供后台服务。因为你不用自己开发这种服务,所以你可以集中精力解决手头的业务问题。容器和服务:容器设置定制了j 2 e e 服务器所提供的内在支持,包括安全,事务管理,6jj第二章三层架构与缓存技术扑i d i ( j a v a n 锄c d d i r e 蛳i n t 曲c c ) 寻址,远程连接等服务,以下列出最重要的几种服务:1 ) j 2 e e 安全( s e c 嘶t y ) 模型可以让你配置w 曲组件或铋t 唧r i b e 觚,这样只有被授权的用户才能访问系统资源。每一客户属于一个特别的角色,而每个角色只允许激活特定的方法。你应在锄t e f p r i b e a n 的布置描述中声明角色和可以被激活的方法。由于这种声明性的方法,你不必编写加强安全性的规则。2 ) j 2 e e 事务管理( 1 b n s a 甜0 nm 锄a g e m e n t ) 模型让你指定组成一个事务中所有方法间的关系,这样一个事务中的所有方法被当成一个单一的单元。当客户端激活一个t e l 埘b e 龃中的方法,容器介入管理事务。因有容器管理事务,在即t e f p r i b e 锄中不必对事务的边界进行任何的编码。通常要求控制分布式事务的代码会非常复杂,但是只需在布置描述文件中声明锄t 唧6 s eb e 锄的事务属性,而不用编写并调试复杂的代码,容器将读取此文件并为你处理此钮t e f p r i s eb 黜的事务。3 ) 扑d i 寻址( 加il 0 0 k u p ) 服务向企业内的多重名字和目录服务提供了一个统一的接口,这样应用程序组件可以访问名字和目录服务。4 ) j 2 e e 远程连接( 黜= l n o t ec l i e n tc n e 砸、r i 动模型管理客户端和饥t 唧r i s eb e 姐间的低层交互。当一个髓t e l p 打b 啪创建后,一个客户端可以调用它的方法就像它和客户端位于同一虚拟机上一样。5 ) 生存周期管理( l i f ec 枷l em 孤a g e m e n t ) 模型。它管理e n t e r l 证s eb e a l l 的创建和移除,一个t 唧r i s eb e 嫩在其生存周期中将会历经几种状态。容器可以创建锄t e r p r i s eb 啪,并将其在可用实例池与活动状态中移动,而最终也可以将其从容器中移除。6 ) 数据库连接池( d a t a b a s e c o 如蒯o n p o o l i i l g ) 模型。它是一个有价值的资源,获取数据库连接是一项耗时的工作,而且连接数非常有限。容器通过管理连接池来缓和这些问题。勘睡e r p r i s eb e 匝可从池中迅速获取连接,同时在b e 趾释放连接之后可以被其他的b 黜使用。容器类型j 2 e e 应用组件可以安装部署到以下几种容器中去:1 ) e j b 容器管理所有j 2 e e 应用程序中企业级b n 的执行。e n t e r p r i s eb 锄和它们的容器运行在j 2 e e 服务器上。2 ) w 曲容器管理所有j 2 e e 应用程序中j s p 页面和s e l e t 组件的执行。w 曲组件和它们的容器运行在j 2 髓服务器上。7电子科技大学硕士学位论文3 ) 应用程序客户端容器管理所有j 2 e e 应用程序中应用程序客户端组件的执行。应用程序客户端和它们的容器运行在客户主机上。4 ) a p p l e t 容器是运行在客户端机器上的w 曲测览器和j a v a 插件的结合。2 1 2 三层架构简介架构这个词从它的出现后,就有许许多多的程序员、架构师们激烈地讨论着它的发展,但是架构一词的出现,却是随着三层架构的出现才出现的。当然,目前应用三层架构开发也正是业界最关注的主题。单层结构是8 0 年代以来小型应用的结构,在那个结构化编程充斥的时代,还没有出现架构的概念,典型的是基于d b 雠、f o x b 弱e 等小型数据库的应用。双层结构的同义词可以理解为传统的客户服务器结构,尽管目前占统治地位的结构,但是其封装移植等方面的缺陷,已使它步入暮年,典型是基于o m c l e 、l i l i x 等大型数据库的c s 应用。三层结构是传统的客户服务器结构的发展,代表了企业级应用的未来,典型的有w | e b 下的应用。多层结构和三层结构的含义是一样的,只是细节有所不同。之所以会有双层、三层这些提法,是因为应用程序要解决三个层面的问题。随着软件工程的不断进步和规范以及面向对象编程思想的应用,人们对封装、复用、扩展、移置等方面的要求,使得双层架构显然更加臃肿繁琐,三层程序架构体系应运而生,可以说,三层架构体系结构是面向对象思想发展中的必然产物。当然三层架构对于目前来说早已经不是什么新鲜事物了,最早听到这个词应该是几年前使用j a v a 的,j 2 e e 三层架构体系流行了这么多年,j 2 e e 三层架构体系的提出,对软件系统的架构产生了巨大的影响,m i c r o s o j f i 、b r o l 锄d 这些公司自然不甘落后,例如m i c r 0 s 0 f i 的n e t 平台。所谓三层架构,是在客户服务之间加入了一个。中间层 ,也叫组件层。它与客户层、服务器层共同构成了三层体系。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有b s 应用才有三层体系结构,三层是指逻辑上的三层。通过引入中间层,将复杂的商业逻辑从传统的双层结构( c l i e n t s e r v 砷应用模型中分离出来,并提供了可伸缩、易于访问、易于管理的方法,可以将多种应用服务分别封装部署于应用服务器,同时增强了应用程序可用性、安全性、封装复用性、可扩展性和可移置性,使用户在管理上所花费的时间最小化,从而实现了便捷、高效、安全、稳定的企业级系统应用。三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间第二章三层架构与缓存技术层进行处理。通常情况下,客户端不直接与数据库进行交互,而是中间层向外提供接口,通过c 彻c o m 通讯或者h t p 等方式与中间层建立连接,再经由中间层与数据库进行交互。当然数据通过中间层的中转无疑是降低了效率,但是它脱离于界面与数据库的完美封装,使得它的缺点显然不值得一提。典型的三层结构分为表示( 邮e l l t 撕o n ) 层,业务逻辑( 1 0 舀c ) 层,以及数据存储( i i l 舾s 蚋l c t i 】r e )层。如图2 - 2 所示图2 2 典型的三层架构三层架构的处理方式是:业务逻辑分布到应用服务器上,数据库上不再具有业务逻辑处理单元,而只负责基础业务数据的管理,主要的计算任务由应用服务器完成,从而充分利用了应用服务器在并发处理和逻辑计算方面的优势。另外,应用服务器还可以做集群的配制,即在物理上,统一应用管理多台应用服务器对外部请求的分配和并行处理。这样,当计算请求并发量巨大时,集群的多台应用服务器之间可以动态的进行任务分配,实现负载均衡,保证了系统性能不会因为大量并发用户的访阕而急剥下降,另外系统也同时具备了很好的可扩展性和伸缩性,即在请求并发量增大或减少时,可根据实际情况增加或减少应用服务器数量,以便保证性能的前提下,合理利用硬件资源。这些都是两层结构所不具备的优点1 7 】。9电子科技大学硕士学位论文2 2 三层架构性能瓶颈分析j s p 技术作为j 2 e e 规范中重要的核心组成部分,在当前的信息系统开发中已经占据了主流地位。j s p 页面由h t m l 代码和嵌入在h n 札代码中的j a v a 代码所组成,服务器端在页面被客户端请求后对这些j a v a 代码进行处理,然后将生成的h t m l 页面返回给客户的浏览器。j a v a s e r v l e t 是j s p 技术的基础。j s p 具备了j a v a技术的简单易用、完全面向对象、具有平台无关性而且安全可靠、主要面向i n t e m 武的特点。它将各种格式的标签( h l 或者x m l ) 直接传递给响应页面。通过这种方式,j s p 页面实现了页面逻辑与其设计和显示的分离。典型的基于j 2 e e 的三层架构的响应过程如下:1 ) 用户对动态页面发出请求;2 ) 如果应用服务器第一次收到该请求,则对该动态页面进行编译,编译的结果是c l a 鼹文件,然后把c l a 鼹文件装入类装载器进行实例化,执行s e l e t 的“t 方法,然后调用s e r v l e t 的d o p o s t 或者d o g e t 方法对用户的请求做出响应;3 ) d o p o s t 方法或d o g 或方法中一般包含真正的企业业务计算逻辑,这些业务逻辑大多是对数据库系统的访问操作,包括对数据库的实体的一系列插入、删除、修改、统计、查询等操作。应用服务器生成要发送给数据库的指令后,和数据库建立数据库连接并把形成的s q l 语句提交给数据库服务器;4 ) 数据库服务器收到s q l 语句后进行执行,如果该s q l 语句是查询的s q l语句,则把结果集返回给应用服务器,如果是更新类型的语句,则把更新所影响的行数返回给应用服务器,最后关闭数据库连接;5 ) 应用服务器收到数据库返回的结果集,根据该结果集对用户进行响应形成m m l 代码,把这些h r r m l 代码返回给用户;6 ) 应用服务器关闭和用户浏览器之间的连接。由以上过程可以看出,对动态页面的响应时间主要包括应用服务器容器引擎对j s p 页面的编译、初始化、调用h l i t 方法所需的时间t 1 、应用服务器和数据库服务器建立连接以及交互数据的时间t 2 、数据库服务器执行s q l 语句命令的时间t 3 ,应用服务器执行d o p o s t 以及d o g e t 方法的时间“,应用服务器把执行结果输出的时间以及该数据在网上传输的时间t 5 。其中t l 时间只能通过提高服务器的硬件以及提升应用服务器的版本来解决。t 5 的降低要依赖于应用服务器版本的升级以及网络带款的增加。这两项都是软件所无法左右的。t 2 、t 3 、t 4 在响应时间中占有绝对的比重,因此降低对动态内容的响应时间主要体现在降低对数据库连接的建立1 0第二章三层架构与缓存技术和释放的时间、数据库执行s q l 命令的时间、应用服务器执行计算的时间上。由此可见,三层架构的性能瓶颈主要集中在持久层上。2 3 缓存技术与三层架构2 。3 1 缓存技术简介缓存( c a c h e ) 的出现主要是为了解决c p u 运算速度与主存读写速度不匹配的矛盾,因为c p u 运算速度要比主存读写速度快的多,这样会使c p u 花费很长时间等待数据到来或把数据写入主存。为了减少这种情况的发生,人们就想到了使用c a c h e 。它采用一种读写速度要比系统主存快很多的特殊静态内存。系统工作时,将运行时要经常存取的一些数据从系统主存读取到c a c h e 中,而c p u 会首先到c a c h e 中去读取或写入数据,如果c a c h e 中没有所需数据( 或c a c 髓己满,无法再写入_ ) ,则再对系统主存进行读写,另外a 蛇h e 在空闲时也会与主存交换数据。其实质就是在慢速d 黜蝴和快速c p u 之间插入一个速度较快、容量较小的s r a m ,起到缓冲作用,使c p u 既可以以较快速度存取s r a m 中的数据,提高系统整体性能,又不使系统成本上升过高。c a c 舵的工作原理是基于计算机程序访问的局部性。对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在距离存储器逻辑地址的很小的一段地址范围内。对这些地址的访问具有时间上集中分布的倾向。这种对局部范围的存储器地址频繁访问,而对此范围以外的地址访问甚少的现象,就称为空间局部性现象。程序的局部性原理为c a c h e 的应用提供了理论依据。对缓存评价的主要指标有:缓存容量、命中率、访问延时,缓存替换算法,缓存同步算法等。缓存容量:缓存的最大容量。因为缓存的容量是固定的,因此应该在其中缓存热点信息和数据。如果缓存的内容的容量超出了缓存的本身容量,则必须用新的内容去替换缓存中陈1 日的缓存内容。命中率:即从缓存中读取数据的请求数量占所有请求数量的比率,该指标体现了缓存效率的高低。通常需要提高算法尽可能的提高缓存读取命中率。访问延时:访问延时是指从用户发出一个h 1 瞪请求开始,到用户接收到该请求的响应为止所经历的时间。由于存在缓存命中失败的情况,此时需要到真实电子科技大学硕士学位论文的服务器中读取数据返回给用户,此种情况导致访问延时增长。读取缓存命中时,访问延时将比不采用缓存系统的访问延时要小。在实际应用中,应该取两者的权重平均值。缓存替换算法:由于命中率和缓存容量两个指标是一对矛盾,当缓存容量增大后,将导致缓存命中率的降低、缓存效率的下降,同时,搜索缓存的时间增长,最终系统访问延时增大。因此缓存容量一般固定在一定的大小上。由于缓存中的每个元素对于用户的“价值 不完全相同,有些元素在某些时刻被用户访问的几率大些,有些元素则相对较小。因此当缓存容量不够的时候,应该把对系统价值最小的缓存对象从缓存中清除掉,同时把价值较高的对象放入缓存中,这就是缓存替换算法。缓存同步问题:当数据库系统中的数据更新后,将导致缓存中的数据过期。此时,如果系统使用缓存中的数据对用户响应,用户将得到错误的响应,因此必须提供一个有效的机制来保证数据库数据和缓存数据在物理上的一致性。主要体现在一致性算法的研究上。集群中缓存同步策略:集群节点间的缓存必须采用一种机制保证节点间的缓存完全一致,缓存同步有助于提高缓存的命中率。如果节点间的缓存缺少必要的同步,则对用户的响应可能是错误的。2 3 2 缓存技术与三层架构相结合缓存技术与三层架构相结合于是产生了w 曲缓存。w 曲缓存是:程序中响应消息的本地储存区以及控制这些消息储存、重新获取和删除的子系统。缓存保存可以缓存的响应消息以便降低将来的响应时间和网络带宽消耗,同样也适用于请求消息。一所以,使用w 曲缓存应考虑以下问题:性能一一将相应数据存储起来以避免数据的重复创建、处理和传输,可有效提高性能。比如将不改变的数据缓存起来,能明显提高w 曲程序的反应速度:稳定性一一同一个应用中,对同一数据、逻辑功能以及用户界面的多次请求是经常发生的。当用户基数很大时,如果每次请求都进行处理,消耗的资源是很大的浪费,也同时造成系统的不稳定。例如,w 曲应用中,对一些静态页面的呈现内容进行缓存能有效的节省资源,提高稳定性。而缓存数据也能降低对数据库的访问次数,降低数据库的负担和提高数据库的服务能力;可用性一一有时,提供数据信息的服务可能会意外停止,如果应用了缓存技1 2第二章三层架构与缓存技术术,可以在一定时间内仍正常地对最终用户进行相应,提高了系统的可用性。另外,在应用程序中缓存数据有以下好处:减少交互的通讯量一一缓存数据能有效减少在进程间和机器问的传输量;降低系统中的处理量一一降低处理次数;降低磁盘访问次数一一比如缓存在内存中的数据;网页响应时间最多可以减少9 0 以上;带宽使用率将增加3 0 巧o 。2 3 3 当前三层架构中使用的缓存技术在目前的三层架构中,使用比较广泛的是静态的缓存技术。基于b s 架构的三层架构系统一般由静态页面和动态页面组成。静态页面存储在诸如i i s ,a p a c h e等的w 曲服务器上,由w 曲服务器对用户的请求进行响应:动态页面存储在诸如t 0 m a d ,r e 咖等应用服务器上,由应用服务器对用户的动态请求进行解析、计算和响应。其中,动态业务计算逻辑大多是基于对数据库系统的操作,包括对数据库实体的插入、删除、更新、搜索等操作。因此,对静态页面进行缓存也能提高三层架构的性能【引。根据缓存所处的位置( 在浏览器端还是在w 曲服务器端) 可以把缓存分为3 类:1 ) 客户端的缓存技术;2 ) 基于代理服务器的缓存技术;3 ) 服务器端的缓存技术。客户端的缓存技术:在浏览器中使用缓存技术的思路很简单,把用户历史访问过的网页都缓存在用户本地的硬盘上,在用户以后访问同样的网页时,浏览器就可以直接从本地硬盘中取出网页的内容,而不需要重新建立一次h r 曙连接。如果该网页在服务器上有更新,则浏览器需要重新连接w 曲服务器,从w 西服务器上读取新的网页的内容响应给用户,同时用新的网页去置换缓存中对应的过期的缓存页面。在此种缓存技术中,浏览器直接使用了本地缓存中的内容进行显示,未和w 西服务器进行通信,因此降低了服务器的负载,间接提高了服务器的并发访问量,同时降低了网络通信量以及服务器访问的任何后台资源。所以,如果可能,则应该在浏览器里扩大缓存容量。1 3电子科技大学硕士学位论文代理端的缓存技术:建立一个缓存代理可以使分布的用户访问网络时都经过这个代理,该代理服务器处于浏览器和w 曲服务器的中间。这样能加快使用该代理的用户的网络的反应速度。当一个用户访问一个文档时,首先访问该代理服务器,由于该文档在早些时候可能被另一个同局域网的用户访问过而在缓存中,对这个用户来说,文档就可以直接从代理服务器的缓存中获得,而不必到原始的w 曲服务器中获得了。所以,如果客户的w | c b 浏览器配置p r 0 x y 代理,这样客户的所有w 曲请求都经过代理去访问e t 。在用户请求访问i i l 删之前,代理服务器首先检查自身是否己经缓存了用户请求访问的w 曲对象,如果己经缓存并且没有过期,那么就用本地缓存的w 曲对象响应客户的请求,从而加快了用户的访问时间,并且节省了宝贵的广域网链路带宽资源。此种类型称f o 刑a r d p r o x y 正向代理【9 1 。服务器端的缓存技术:当用户访问w e b 服务器读取瑚瞰l 页面时,一般w e b 服务器需要从硬盘上读取m m l 文件,然后传输给用户。每次用户访问,w 曲服务器都重复相同的处理过程。服务器端缓存的目的是降低服务器对用户请求的反应时间、增加服务器的吞吐量。内容缓存则将用户经常访问的h t m l 页面或者w 曲处理结果存储在服务器的内存当中,在用户请求某一服务时,服务器首先从内存中检索是否有相同的结果,如果存在,则不必重新处理,而直接将结果返给用户。由于内存的存取速度远远比硬盘的存取速度快,所以服务器系统的响应时间可以缩短【姗。静态内容缓存设备提高了前端w - e b 服务器处理客户连接的能力,为电子商务用户提供了快速的服务。静态内容缓存设备放在w 曲服务器前面,用于处理用户对静态内容的请求。这个办法在静态w 曲请求占很大比例的环境中非常有效。其中静态内容包括图形、文字和工具栏等。然而静态缓存技术也存在不少的局限:随着企业信息化的进展,j a v a 技术的w 曲应用方面的深入,三层架构的应用也越来越广泛,三层架构中的静态内容所占的比例越来越少,基于j s p 技术的动态页面在三层架构中的比例越来越大。据统计,在一个典型的基于j 2 e e 的三层架构中,j s p 页面占的比例大概在9 0 9 6 左右,甚至l 0 0 9 6 ,静态页面越来越少,静态缓存的实际意义也就越来越小了。1 4第三章h i b t :n l a t c 改变持久层操作数据方式第三章h i b e m a t e 改变持久层操作数据方式3 1 传统的数据持久层技术j d b c在当前的数据持久层的技术应用中,j d b c 依旧是使用最为广泛的技术。所以本文首先从j b c 技术入手,改进持久层操作数据的方式。j d b c 是历史最为悠久的j a v a 数据库存取技术,从j a y a 诞生的那天起,就开始登上历史舞台了。j a v a 能有今天的成就,m b c 可以说是功不可末。仍b c 规范的出台,向世界宣告从此j a v a 有了访问关系数据库的标准通用接口了。j d b c 标准获得了几乎所有数据库厂商的支持,很难找到这么一个数据库,它是没有j d b c

温馨提示

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

评论

0/150

提交评论