




已阅读5页,还剩70页未读, 继续免费阅读
(计算机应用技术专业论文)安全管理平台中通信中间件的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北方工业大学硕士学位论文 摘要 随着互联网络的普及,网络安全问题日益严重,单一的安全软件或安全设 备已经不能满足对于安全状况的需求,因此,网络安全管理平台应运而生。一 个完整的网络安全管理平台能够集成多种网络安全设备或软件,收集各种不同 类型的安全信息,对当前的网络安全状况作出综合评估并给出相应的策略。同 时临近网络中的网络安全管理平台还能互相联系,向临近网络发出预警等信息。 由于各种安全软件或设备类型不同、厂家不同,采用的通信方式也各不相同, 没有一个统一的标准,给安全信息的收集工作带来了很大的麻烦。同时,相邻 网络之间也涉及到局域网广域网通信等问题。因此,需要为网络安全管理平台 设计一个专用的通信系统,来解决通信过程中遇到的各种问题。 本文针对网络安全管理平台中对通信的各项需求,在对现有通信中间件进 行详尽分析的基础上,综合了多种现有通信中间件的优点,同时考虑了网络安 全管理平台的通信特点,设计了一款专用的通信中间件。该通信中间件主要有 以下特点: 多语言支持:为了适应多种编程语言的需要,为不同语言提供不同的用户 接口。 多平台支持:通信中间件的主体服务部分使用j a v a 语言编写,可以在多种 操作平台上部署。 屏蔽口地址:各用户使用名称作为标识,不使用口地址。在通信时,只需 要知道对方名称,不必知道口地址,双方即可通信。 自恢复功能:在通信过程中自动检测网络状态,一旦有异常情况发生,将 自动重新建立通信连接。 第三方扩展:可以根据需要在广域网通信时使用第三方提供的通信程序, 自身只作为局域网内部通信使用。 在本通信中间件的设计中,主要使用了多线程( 异步传输) 、s o c k e t ( 实现 通信) 、线程池( 多用户支持) 、j n i ( 第三方扩展) 等技术。 本设计的实现,为用户提供了简单的接1 3 ,使网络安全管理平台的开发人 员在进行设计的时候,不必再考虑复杂的通信问题,减轻了负担,提高了效率。 关键词:网络安全,通信,中间件 北方工业大学硕士学位论文 r e s e a r c ha n dd e s i g no fc o m m u n i c a t i o nm i d d l e w a r ei nn e t s e c u r i t ym a n a g e m e n tp l a t f o r m a b s t r a c t w i t ht h ep o p u l a r i z a t i o no fi n t e m e t ,t h en e t - s e c u r i t yp r o b l e mb e c o m e ss e r i o u s i n c r e a s i n g l y a n dt h es i n g l en e t - s e c u r i t ye q u i p m e n to rs o i h v a g e ( a n t i - v i r u s ,f i r e w a l l e t c ) c a nn o tm e e tt h er e q u i r e m e n ti nt h i ss i t u a t i o n s o ,t h en e ts e c u r i t ym a n a g e p l a t f o r me m e r g e sa st h et i m e sr e q u i r e aw h o l en e ts e c u r i t ym a n a g ep l a t f o r mc a n i n t e g r a t ek i n d so fn e ts e c u r i t ye q u i p m e n to rs o f t w a r e ,c o l l e c tk i n d so fn e ts e c u r i t y m e s s a g e s ,m a k et h ec o l l i g a t ee v a l u a t i o no ft h e c u r r e n ts t a t u s ,a n dg i v et h e c o r r e s p o n d i n gp o l i c y 1 1 1 en e ts e c u r i t ym a n a g ep l a t f o r mc a nc o n n e c t w i t he a c ho t h e r , w h e nan e ts e c u r i t yp r o b l e mo c c u r r e d , i tw i l ln o t i c et h eo t h e r sw h i c hi sn e a r l ya r o u n d s ot h eo t h e rn e ts e c u r i t ym a n a g ep l a t f o r mm a yw a l nt h em a n a g e rt h a tt h e r em a yb e h a v et h es a m ep r o b l e m b e c a u s eo f t h a tt h en e ts e c u r i t ys o f t w a r eo re q u i p m e n th a sm a n yk i n d sa n de a c h k i n dm a yh a v em a n ym a n u f a c t u r e s ,e a c ho ft h e mm a yh a v et h e i ro w nm e t h o dt o c o l l e c ti n f o r m a t i o n i ti st o od i 仿c u l tt os u i tf o re a c ho n ew h e nt oc o l l e c ti n f o r m a t i o n w i t h o u tau n i f o r mc o m m u n i c a t ef o r m a t a tt h es a m et i m e , t h en e ts e c u r i t ym a n a g e p l a t f o r mw i l lc o n n e c tw i t l le a c ho t h e r , t h e r em a yb ea no t h e rp r o b l e m s ot h e r en p 潮 s r ac o m m u n i c a t i o ns y s t e mt os o l v ea l lp r o b l c r u sw h i c hh a p p e ni nt h ec o m m u n i c a t i o n p r o c e s s t om e e tt h ec o m m u n i c a t i o nr e q u i r e m e n ti nn e ts e = c l :t r i t ym a n a g ep l a t f o r m , b a s e do nt h ea n a l y s eo fc u r r e n tc o m m u n i c a t i o nm i d d l ew a l e , c o l l i g a t et h ee x c e l l e n c y o fw h i c h t 1 1 i se s s a yd e s i g n san e wc o m m u n i c a t i o nm i d d l ew a r e , a n dt h e g r e a t e s t e h a r a c t e r i s t i e s e sa r ea sf o l l o w : m u l t i l a n g u a g es u p p o r t :s u p # yd i f f e r e n ti n t e r f a c ef o rd i f f e r e n tc o d el a n g u a g e s m u l t i - o ss u p p o r t :u s i n gj a v af o rm a i ns e r v i c e s s oi tc a nb en mi nm o r eo s i pa d d r e s ss i f t e l d :u s en a l n eb u tn o ti pa d d r e s st om a k ec o m m u n i c a t i o n , 8 0t h e u s e rs h o u l dn o tc a g et h ep r o b l e mo f i pp o r ta n dp r o t o c 0 1 - 3 - j b 方工业大学硕士学位论文 a u t or e c o v e r :i ft h ec o n n e c t i o nb r o k e nd o w n ,t h es y s t e mw i l lc r e a t ean e w c o n n e c t i o n a u t o m a t i e l y t h i r d - p a r te x p a n d :a l l o w t ou s e ac o m m u n i c a t i o nw h i c hi ss u p p l i e db yt l l i r dp a r t i nt h ed e s i g no ft h i sc o m m u n i c a t i o nm i d d l ew a r e ,m a i n l yu s et e c h n o l o g yo f m u l t i t h r e a d ,s o c k e t ,t h r e a dp o o l ,j n i ,a n ds oo n a st h i sd e s i g nc o m et r u e ,s u p p o r t sas i m p l ei n t e r f a c et ou s e r , m a k e st h ed e s i g n e r o f n e ts e c u r i t ym a n a g ep l a t f o r me a s i e ra n dh a v eah i g h e re f f i c i e n c y k e yw o r d s :u e t - s e c u r i t y , c o m m u n i c a t i o n , m i d d l e w a r e 4 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研 究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得j e 友王些太堂或其他教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所傲的任何贡献均 已在论文中作了明确的说明并表示谢意 学位论文作者签名:鬟、趋签字日期:细7 年歹月幻日 学位论文版权使用授权书 本学位论文作者完全了解j g 友王些太堂有关保留、使用学位论文的规定,有 权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借 阅。本人授权j 友兰些太堂可以将学位论文的全部或部分内容编入有关数据库进 行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名: 殳趣 签字日期:z 降f 月知日 导师签名:锣确 签字日期:枷7 年厂月幻日 学位论文作者毕业后去向: 工作单位;i 6 蜘礁 祀拉拢楠儆弛么习 电话:红f ,彬r 通讯地址:丸辑逝缸西 多鹰彩电l i ;成7 屈邮编: 矿9 4 北方工业大学硕士学位论文 1 引言 1 1 通信中间件技术概述 1 1 1 通信中间件的应用环境 通信中间件主要用于多层结构分布式计算环境,多层结构分布式计算环境 是一种基于客户机和服务器模式的分布式结构,其中客户机和服务器可以动态 地建立或断开连接以满足用户的需求。目前,常见的多层结构分布式计算环境 是三层架构的客户机服务器模式,中间一层为通信中间件。引入通信中间件能 够扩大应用系统的规模和分布式计算能力。通信中间件可以更好地支持规模化 的应用和协同计算。随着主流平台上的通信中间件技术的成熟,支持分布应用 的通信中间件能够提供更大的灵活性和伸缩性。 通信中间件能够支持更多的用户同时与服务器打交道,客户机的请求、联 接、会话信息都能够由通信中间件统一协调管理。通信中间件能够通过负载均 衡的规则过程来处理客户机和服务器之间的多个联接。客户机不必关心任何有 关服务器地理位置的信息,通信中间件帮助客户机完成与不同服务器之间的会 话。 1 1 2 通信中间件的工作原理 通信中间件最普遍的三种形式包括:远程过程调用( 1 u p c ) 、会话编程( 如 t c p 的s o c k e t ) 以及消息队列中间件( m q i ) 。以下分别讨论这三种方案的工作 原理及特点。 远程过程调用( r p c ) 远程过程调用( r p c ) 是一种同步对话方式模型。在本地应用程序提出请求 ( 调用) 时,k p c 依赖远程应用程序( 过程) 提供服务。远程过程调用通过位于主 调者和被调者之间的一条专用逻辑连接给程序提供一种同步的“调用一返回, 通信机制,主调程序在被调程序完成并返回一个响应之前被阻塞。 使用k p c 通信的程序可以分为主调程序和被调程序两类,两者之间以典型 北方工业大学硕士学位论文 的“客户机服务器”模型进行信息交流。r p c 的主调程序一般是同步的、基于 连接的,而且结构比较简单。而r p c 的被调程序也是同步的、基于连接的,结 构较复杂。因为被调者相当于服务器,需要支持多个主调程序( 客户) ,有多个 功能和服务需要执行。远程过程调用类似于常规的过程调用,只是过程的执行 发生在远端系统而不是在本地。 会话编程 会话编程是一种同步的对话通信模式。会话通信方案在程序问提供基于应 用程序的私有逻辑连接通信。该逻辑连接在整个对话期间被参加对话的双方应 用程序所私有。每对通信程序之间都存在私有对话,一个程序也可以同时参加 多个对话。采用会话编程的程序一般以同步方式操作,结构比较单一。当专用 的逻辑连接对于程序逻辑很重要时,比如很长的信息交换序列发生时,一般采 用会话编程。 会话编程的用者和供者在通信双方系统存在一个对等的逻辑单元,两个逻 辑单元以及它们之间的逻辑连接在两个程序对话期间为它们提供专用的网络通 信。会话通信方案中的应用程序能够直接相互通信,需要应用程序间的紧密祸 合,必须进行大量的底层通信编程工作。 消息队列中间件 消息队列中间件通过消息队列接口为程序提供一种异步通信方式。消息队 列中间件不需要应用程序和通信介质( 或网络) 以及远程应用程序之间的耦合, 也不需要进行通信的应用程序同时运行。消息队列中间件是由消息队列管理器 支持的。消息队列中间件允许程序向队列发送或从队列取走消息,不同的程序 可以通过共享队列交换消息。使用消息队列中间件的程序在逻辑上并不相连, 程序只是通过队列以各种方式相互关联。 队列化消息传递是最新的通信模型,其基本特征在于接口用户之间不存在 逻辑连接,消息队列中间件用者和供者的基本关系是消息的发送者或接收者与 消息排队、消息传输者的关系。队列化消息传递的思想应用在客户机服务器模 式的分布式环境中,利用消息队列统一处理通信双方的请求及应答,将客户机 和服务器孤立开。消息队列中间件使用简单的编程接口,使用消息队列中间件 的程序较简单,而且容易实现程序的完整性、一致性、可移植性好【。 北方工业大学硕士学位论文 1 2 课题研究内容和意义 研究内容:鉴于现有的通信中间件中的各种优缺点,考虑网络安全管理平台在 通信方面的实际需求,综合现有各种通信中间件的各种优点,为网络安全管理 平台设计一款专用的通信中间件。该中间件将具有如下的优点: 屏蔽网络链接:对上层编程而言,不需要再考虑网络链接方面的细节问题, 如对方的i p 地址、端口号、使用的协议等。只需要考虑发送什么信息、发 送给谁,减轻程序设计人员的工作量。 统一的格式:没有中间件,各个程序之间都需要自己定义通信格式,不同的 程序之间的配合受到严重的影响。有了中间件,则大家使用统一的格式,不 再存在配合问题。 传输控制:使用中间件后,所有的信息都通过中间件进行转发,所以中间件 可以对传输进行控制,如流量控制、出错处理、优先级控制等。 规范的网络结构:在不使用中间件的时候,网络中的每一个用户程序都要和 其它的程序建立链接。使用中间件后,用户程序只需要和中间件建立链接, 其余工作由中间件完成。这样的另一个好处是,网络中的防火墙只需将中间 件的端口开放即可实现通信的目的,而不必将每个用户程序的端口开放,增 加了网络的安全性。 意义:网络安全管理平台中的大部分功能都与通信相关,如果其中所有的通信 问题都由该部分的开发人员自行解决,就会引起通信混乱,同时会占用大量的 资源,造成浪费。采用通信中间件作为通信模块,统一负责所有的通信问题。 即规范了通信格式,又节约了资源,同时使得开发人员不再考虑通信问题,从 而将精力更多的投入到项目中,提高了工作效率,节省了开发时间。 此外,本设计中预留了较大的改动空间。虽然该通信中间件是为网络安全 管理平台专门开发的,但是在其他系统中,如果有类似的通信需求,只需对其 进行很小的修改,就能够满足需要,成为另一款通信中间件。通过对本项目的 研究,可以积累相关的经验,为将来其它的通信中间件的设计研究打下基础。 随着网络的继续发展,分布式技术的广泛应用,在设计系统时将越来越多 的涉及到网络通信问题。此时,一款使用简单、质量优异、结构规范的通信中 间件将无疑会为系统的设计带来极大的方便和好处。相信,在不久的将来通信 中间件将有着广阔的发展前景。 北方工业大学硕士学位论文 2 背景理论及相关技术 2 1 网络安全管理平台简介 随着网络的逐步普及,网络安全己成为i n t e r n e t 路上的焦点,它关系着 i n t e r n e t 的进一步发展和普及,甚至关系着i n t e r n e t 的生存。可喜的是互 联网专家们并没有令广大i n t e r n e t 用户失望,网络安全技术也不断出现,使 广大网民和企业有了更多的放心,下面就网络安全中的主要技术作个简介: 防火墙:防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻 击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。 而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以 禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信【2 】。 i d s :i d s 是i n t r u s i o nd e t e c t i o ns y s t e m 的缩写,即入侵检测系统,主要 用于检测h a c k e r 或c r a c k e r 通过网络进行的入侵行为。i d s 的运行方式 有两种,一种是在目标主机上运行以监测其本身的通信信息,另一种是 在一台单独的机器上运行以监测所有网络设备的通信信息,比如h u b 、 路由器【3 1 。 杀毒软件:杀毒软件的主要功能就是杀毒,功能十分有限,不能完全满 足网络安全的需要。这种方式对于个人用户或小企业或许还能满足需 要,但如果个人或企业有电子商务方面的需求,就不能完全满足了。可 喜的是随着杀毒软件技术的不断发展,现在的主流杀毒软件同时能够预 防木马及其它的一些黑客程序的入侵【4 】。 漏洞扫描:漏洞扫描是网络安全防御中的一项重要技术,其原理是采用 模拟攻击的形式对目标可能存在的已知安全漏洞进行逐项检查。目标可 以是工作站、服务器、交换机、数据库应用等各种对象。然后根据扫描 结果向系统管理员提供周密可靠的安全性分析报告,为提高网络安全整 体水平产生重要依据。在网络安全体系的建设中,安全扫描是一种花费 低、效果好、见效快、与网络的运行相对独立、安装运行简单的工具, 它可以大规模减少安全管理员的手工劳动,有利于保持全网安全政策的 统一和稳定 5 3 。 北方工业大学硕士学位论文 非法外联:非法外联监控系统利用先进的监控技术手段,发现内部网计 算机非法接入互联网和外来主机接入内部网等行为,及时告警切断非法 的连接,从而保障内部与外界的完全隔离,确保内部机密信息的安全。 主要功能是:探测内部网中非法上互联网的计算机,由警戒者监测中心 记录并告警。监测内部网中发生的外来主机非法接入、纂改口地址、盗 用m 地址等不法行为,由监测控制台进行告警【6 】。、 但是,网络安全是一个“木桶”问题,单靠任何一种安全产品,都不可能 做到真正意义上的安全。只有将各种安全手段汇集起来,实行联动、层层设防、 处处拦截、才能将安全风险降到最低程度【“。 因此,网络安全管理平台应运而生。安全管理平台的总体目标是建立一个 统一、一体的安全管理体系,提供统一全网安全策略、进行广域监察的技术手 段,为实施网络安全指挥提供态势感知和决策支持。改变以往安全产品单打独 斗、孤立无援的局面。 一个完整的安全管理平台由安装在服务器上的各级安全管理中心及其下属 的各种软硬件安全设备组成。安全设备包括防火墙、漏洞扫描、i d s ( 入侵检测) 、 防病毒等。安全管理平台中的每一级,负责一处局域网。而各级之间,通过广 域网连接。如图2 1 所示,为网络安全管理平台运行时的界面效果,其中展示 了各级网络安全管理平台之间的连接拓扑。 图2 1 网络安全管理平台运行界面 北方工业大学硕士学位论文 安全管理核心模块依据功能需求划分为监控管理、策略管理、报告管理、 库管理、资料管理及系统管理六大模块,大模块再划分为二十个小模块,其模 块组成如图2 2 所示f 3 l 】。 2 2j m s 技术 图2 2 网络安全管理平台核心模块内部组成 2 2 1j m s 产生背景 随着分布式系统的规模和复杂度的提高,一直在中间件中占主导地位的同 步式通讯方式越来越显示出它的局限性,于是面向消息的中间件( 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 ) 孕育而生:发送者将消息发送给消息服务器,消息服 务器将消息存放在若干队列中,在合适的时候再将消息转发给接收者,这种模 式下,发送和接收是异步的,但是己有的m o m 系统由于没有一个通用的标准, 系统之间很难实现互操作和无缝连接。j a v am e s s a g es e r v i c e ( j m s ) 是s u n 提出的 旨在统一各种m o m 系统接口的规范,它包含点对点( p o i n t t o p o i n t ,p t p ) 和发布 订阅( p u b l i s h s u b s c r i b e , p u b s u b ) 两种消息模型,提供可靠消息传输、事务和消息 过滤等机制。 北方工业大学硕士学位论文 2 2 2j m s 概述 e j b 2 0 中的j m se j b 2 0 以两种方式支持j m s 的集成:作为一种可用的资源 和作为一个m e s s a g ed r i v e nb e a n ,当将j m s 用作一种资源时,使用j m sa p i 的 b e a n 就是消息的产生者或发送者。在这种情况下,b e a n 将消息发送给称为主题 或队列的虚拟信道。另一方面,m e s s a g ed r i v e nb e a n ( m d b ) 则是消息的使用者 或接收者,它监听特定的虚拟信道( 主题或队列) ,并处理发送给该信道的消息。 消息是j m s 中的一种类型对象,由两部分组成:报头和消息主体。报头由路 由信息以及有关该消息的元资料组成:消息主体则携带着应用程序的资料或有 效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携 带:简单文本( t e x tm e s s a g e ) 、可序列化的对象( o b j e c tm e s s a g e ) 、属性集合( m a p m e s s a g e ) 、位元组流( b y t e sm e s s a g e ) 、原始值流( s t r e a mm e s s a g e ) ,还有无有效 负载的消息( m e s s a g e ) 。 j m s 定义了j a v a 中访问消息中间件的接口。j m s 只是接口,并没有给予实 现,实现j m s 接口的消息中间件称为j m sp r o v i d e r 。j m s 主要接口见表2 1 ,其 中: c o n n e c t i o nf a c t o r y :连接工厂,j m s 用它创建连接。 c o n n e c t i o n :j m s 客户端到j m sp r o v i d e r 的连接。 d e s t i n a t i o n :消息的目的地。 s e s s i o n :- 个发送或接收消息的线程。 m e s s a g ep r o d u c e r :由s e s s i o n 对象创建的用来发送消息的对象。 m e s s a g ec o n s u m e r :由s e s s i o n 对象创建的用来接收消息的对象8 1 。 表2 1j m s 主要接1 2 1 m s 父接口 t r i p p u b s u b c o n n e c t i o nf a c t o r y q u e u ec o n n e c t i o nf a c t o r yt o p i cc o n n e c t i o nf a c t o r y c o n n e c t i o nq u e u ec o n n e c t i o n t o p i cc o n n e c t i o n d e s t i n a t i o n q u e u e t o p i c s e s s i o n q u e u es e s s i o nt o p i cs e s s i o n m e s s a g ep r o d u c e rq u e u es e n d e r t o p i cp u b l i s h e r m e s s a g ec o n s u m e r q u e u er e c e i v e rt o p i cs u b s c r i b e r q u e u eb r o w s 3 , 北方工业大学硕士学位论文 2 2 3j m s 消息处理机制 j m s 定义了一组公共的接口和相关语义,允许用j a v a 编写的程序可以和其 他消息传递实现进行通信。j m sa p i 的实现提供了两种消息处理机制:点对点消 息处理机制和订阅发布消息处理机制。 点对点消息处理机制 一个点对点( p t p ) 的产品或者应用是围绕消息队列、发送者和接收者的概念 而建立的。每一个消息都被指定到一个特定的队列,接收者从为放置发送给它 们的消息而建立的队列中提取消息。队列将发送给它们的消息一直保存直到消 息被消费或者消息到期。如图2 3 。点对点消息处理机制具有以下特点: ( 1 ) 每一个消息只有一个消费者。 ( 2 ) 在发送者和接收者之间没有时间的依赖关系。接收者不管发送者是否运 行都可以接收消息。 ( 3 ) 接收者会对一个成功的消息处理有一个反馈。 图2 3p 2 p 模型 发布订阅消息处理机制 在发布订阅消息处理机制中,客户指定消息到一个主题。发布者和订阅者 一般是以匿名的动态的方式来发布或订阅内容结构。系统负责把多个发布者发 送给一个主题的消息分发给主题的多个订阅者。主题会保存消息直到它们被发 送到它们当前的订阅者。如图2 4 。发布订阅消息处理机制具有以下特点: ( 1 ) 每一个消息有多个消费者。 ( 2 ) 在发布者和订阅者之间有时间的依赖关系。一个订阅了主题的客户端只 能消费在客户端创建订阅之后发布的那些消息。 j m s a p i 通过客户端创建持久订阅在一定的程度上放松了时间依赖性。持久 订阅能够收到在订阅者不是活动状态时发送的消息。持久订阅提供了队列的易 用性和可靠性,但是仍然支持客户端把消息发送到多个接收端【虮。 北方工业大学硕士学位论文 图2 a p s 模型 j m s 应用架构分析 采用j m s 应用架构,系统具有如下的重要特征: 与平台无关性。j m s 是一种基于j a v a 的技术,因而它同样具有j a v a 的这 种特性。 松耦合性。包括运行状态和应用系统两个方面。 a 运行状态的松耦合。在消息的传输过程中,所有涉及到的过程( 或运行的 线程1 都是松散联结的。当发送方向队列传送数据时,无须考虑接收进程是否存 在,因为消息的生产者和消费者的运行状态彼此是完全独立的,即使他们在不 同的时间运行,传输事务仍可成功。 b 应用系统的松耦合。消息技术产生了另一类的松耦合,即应用级别的松 耦合。通常每个应用只是关心读消息和写消息,它们担心读、写消息所需的那 些a p i ,而j m s 是一个标准的a p i ,它不太可能随着时间而改变,且消息携带 着业务接口在各应用间传送,这就将应用问的整合从以接口为中心转向以数据 为中心。 由于j m s 应用彼此间并不直接进行通信,因此它是以数据为中心的应用, 这种应用提供了进程级别和应用级别的一种结合。因为现在系统不与进程或程 序绑定,两个需要通讯的远程系统无须依赖对方就能运行。 异步特性。发送用例向队列发送数据后,不用等待接收方的回复,因为 接收用例可以在任何有效的时间内从队列中获得数据。从发送方的角度来看, 异步消息意味着一个进程或线程向目的地发送消息后不希望得到任何回复;而 从接收方的角度来看,异步消息意味着它收到信息后,并不需要马上发送回复 给发送者。 事务特性。在消息系统中包含回滚和提交两个概念,它们的存在确保了 消息系统的两个基本操作读消息和写消息能够顺利的完成。 在上述架构中,可以将异步接收用例和下一步处理作为一个事务的范围, 这样可确保所接收的数据全部进入后续的处理过程。如果在后续的处理过程中 北方工业大学硕士学位论文 出现故障,事务将无法提交,并被回滚,同时异步接收用例将重新从目的地中 接收数据,只有事务提交后,目的地中的数据才会被清刚1 0 l 。 2 3 多线程技术 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令 流都称为一个线程,彼此间互相独立。 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统 负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程 共享一个存储空间,这使得线程间的通信远较进程简单。 多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的 “同时”。如果系统只有一个c p u ,那么真正的“同时”是不可能的,但是由于c p u 的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需要设 想各个线程是同时执行即可。 多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控 制流彼此独立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度, 同步等问题,将在以后探讨。 2 。3 1 在j a v a 中实现多线程 作为一个完全面向对象的语言,j a v a 提供了类j a v a 1 a n g t h r e a d 来方便多线 程编程,这个类提供了大量的方法来方便我们控制自己的各个线程。 t h r e a d 类最重要的方法是r i m 0 ,它为t h r e a d 类的方法s t a r t o 所调用,提供 我们的线程所要执行的代码。 方法一:继承t h r e a d 类,覆盖方法r u n o ,我们在创建的t h r e a d 类的子类 中重写r u n o ,加入线程所要执行的代码即可。 这种方法简单明了,符合大家的习惯,但是,它也有一个很大的缺点,那 就是如果我们的类已经从一个类继承( 如小程序必须继承自a p p l e t 类) ,则无 法再继承t h r e a d 类,这时如果我们又不想建立一个新的类,应该怎么办呢? 我们不妨来探索一种新的方法:我们不创建t h r e a d 类的子类,而是直接使 用它,那么我们只能将我们的方法作为参数传递给t h r e a d 类的实例,有点类似 回调函数。但是j a v a 没有指针,我们只能传递一个包含这个方法的类的实例。 北方工业大学硕士学位论文 j a v a 提供了接口j a v a 1 a n g r u n n a b l e 来支持这种方法。 方法二:实现r u n n a b l e 接口 r u n n a b l e 接口只有一个方法r u n 0 ,我们声明自己的类实现r u n n a b l e 接口并 提供这方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是 r u n n a b l e 接口并没有任何对线程的支持,我们还必须创建t h r e a d 类的实例,这 一点通过t h r e a d 类的构造函数p u b l i ct h r e a d ( r u n n a b l et a r g e t ) 来实现。 严格地说,创建t h r e a d 子类的实例也是可行的,但是必须注意的是,该子 类必须没有覆盖t h r e a d 类的r u n 方法,否则该线程执行的将是子类的r u n 方法, 而不是我们用以实现r u n n a b l e 接口的类的r u n 方法,对此大家不妨试验一下。 使用r m m a b l e 接口来实现多线程使得我们能够在一个类中包容所有的代 码,有利于封装,它的缺点在于,我们只能使用一套代码,若想创建多个线程 并使各个线程执行不同的代码,则仍必须额外创建类,如果这样的话,在大多 数情况下也许还不如直接用多个类分别继承t h r e a d 来得紧凑【1 5 1 。 2 3 2 线程的四种状态 1 新状态:线程已被创建但尚未执行( s t a a 0 尚未被调用) 。 2 可执行状态:线程可以执行,虽然不一定正在执行。c p u 时间随时可能 被分配给该线程,从而使得它执行。 3 死亡状态:正常情况下r u n 0 返回使得线程死亡。调用s t o p 0 或d e s t r o y 0 亦有同样效果,但是不被推荐,前者会产生异常,后者是强制终止,不会释放 锁。 4 阻塞状态:线程不会被分配c p u 时间,无法执行。 2 3 3 线程的优先级 线程的优先级代表该线程的重要程度,当有多个线程同时处于可执行状态 并等待获得c p u 时间时,线程调度系统根据各个线程的优先级来决定给谁分配 c p u 时间,优先级高的线程有更大的机会获得c p u 时间,优先级低的线程也不 是没有机会,只是机会要小一些罢了。 你可以调用t h r e a d 类的方法g e t p r i o r i t y 0 和s e t p r i o r i t y 0 来存取线程的优先 级,线程的优先级界于i ( m r n 和 之间,缺省是_ p r i o r i t y )1 0 ( m a x _ p r i o r i t y ) 北方工业大学硕士学位论文 5 ( n o r mp p i o r i m 。 2 3 4 线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带 来了访问冲突这个严重的问题。j a v a 语言提供了专门机制以解决这种冲突,有 效避免了同一个数据对象被多个线程同时访问。 由于我们可以通过p r i v a t e 关键字来保证数据对象只能被方法访问,所以我 们只需针对方法提出一套机制,这套机制就是s y n c h r o n i z e d 关键字,它包括两种 用法:s y n c h r o n i z e d 方法和s y n c h r o n i z e d 块。 1 s y n c h r o n i z e d 方法:通过在方法声明中加入s y n c h r o n i z e d 关键字来声明 s y n c h r o n i z e d 方法。如: p u b l i cs y n c h r o n i z e dv o i da e e e s s v a l ( i n tn e w v a l ) ; s y n c h r o n i z e d 方法控制对类成员变量的访问:每个类实例对应一把锁,每个 s y n c h r o n i z e d 方法都必须获得调用该方法的类实例的锁方能执行,否则所属线程 阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被 阻塞的线程方能获得该锁,重新进入可执行状态。 这种机制确保了同一时刻对于每一个类实例,其所有声明为s y n c h r o n i z e d 的 成员函数中至多只有一个处于可执行状态( 因为至多只有一个能够获得该类实 例对应的锁) ,从而有效避免了类成员变量的访问冲突( 只要所有可能访问类成 员变量的方法均被声明为s y n c h r o n i z e d ) 。 在j a v a 中,不光是类实例,每一个类也对应一把锁,这样我们也可将类的 静态成员函数声明为s y n c h r o n i z e d ,以控制其对类的静态成员变量的访问。 s y n c h r o n i z e d 方法的缺陷:若将一个大的方法声明为s y n c h r o n i z e d 将会大大 影响效率,典型地,若将线程类的方法r u n o 声明为s y n c h r o n i z e d ,由于在线程 的整个生命期内它一直在运行,因此将导致它对本类任何s y n c h r o n i z e d 方法的调 用都永远不会成功。当然我们可以通过将访问类成员变量的代码放到专门的方 法中,将其声明为s y n c h r o n i z e d ,并在主方法中调用来解决这一问题,但是j a v a 为我们提供了更好的解决办法,那就是s y n c h r o n i z e d 块。 2 s y n c h r o n i z e d 块:通过s y n c h r o n i z e d 关键字来声明s y n c h r o n i z e d 块。语法 如下: s y n c h r o n i z e d ( s y n c o b j e e t ) 北方工业大学硕士学位论文 允许访问控制的代码 s y n c h r o n i z e d 块是这样一个代码块,其中的代码必须获得对象s y n c o b j e e t ( 如前所述,可以是类实例或类) 的锁方能执行,具体机制同前所述。由于可 以针对任意代码块,且可任意指定上锁的对象,故灵活性较高。 2 3 5 线程的阻塞 为了解决对共享存储区的访问冲突,j a v a 引入了同步机制,现在让我们来 考察多个线程对共享资源的访问,显然同步机制已经不够了,因为在任意时刻 所要求的资源不一定已经准备好了被访问,反过来,同一时刻准备好了的资源 也可能不止一个。为了解决这种情况下的访问控制问题,j a v a 引入了对阻塞机 制的支持。 阻塞指的是暂停一个线程的执行以等待某个条件发生( 如某资源就绪) ,学 过操作系统的同学对它一定已经很熟悉了。j a v a 提供了大量方法来支持阻塞, 下面让我们逐一分析。 1 s l e e p o 方法:s l e e p o 允许指定以毫秒为单位的一段时间作为参数,它使 得线程在指定的时间内进入阻塞状态,不能得到c p u 时间,指定的时间一过, 线程重新进入可执行状态。典型地,s l e e p o 被用在等待某个资源就绪的情形:测 试发现条件不满足后,让线程阻塞一段时间后重新测试,直到条件满足为止。 2 s u s p e n d o 和r e s u m e o 方法:两个方法配套使用,s u s p e n d o 使得线程进入阻 塞状态,并且不会自动恢复,必须其对应的i 爨1 1 n l e 0 被调用,才能使得线程重新 进入可执行状态。典型地,s u s p e n d o 和r e s u m e0 被用在等待另一个线程产生的结 果的情形:测试发现结果还没有产生后,让线程阻塞,另一个线程产生了结果 后,调用r e s u m e o 使其恢复。 3 y i e l d o 方法:y _ i e l a o 使得线程放弃当前分得的c p u 时间,但是不使线程 阻塞,即线程仍处于可执行状态,随时可能再次分得c p u 时间。调用y i e l d o 的 效果等价于调度程序认为该线程已执行了足够的时间从而转到另一个线程。 4 w a i t o 和n o t i f y o 方法:两个方法配套使用,w a i t o 使得线程进入阻塞状态, 它有两种形式,种允许指定以毫秒为单位的一段时间作为参数,另一种没有 参数,前者当对应的n o t i f y o 被调用或者超出指定时间时线程重新进入可执行状 北方工业大学硕士学位论文 态,后者则必须对应的n o t i f y ( ) 被调用。 初看起来它们与s u s p c n d o 和r e s u m e 0 方法对没有什么分别,但是事实上它们 是截然不同的。区别的核心在于,前面叙述的所有方法,阻塞时都不会释放占 用的锁( 如果占用了的话) ,而这一对方法则相反。 上述的核心区别导致了一系列的细节上的区别。 首先,前面叙述的所有方法都隶属于t h r e a d 类,但是这一对却直接隶属于 o b j e c t 类,也就是说,所有对象都拥有这一对方法。初看起来这十分不可思议, 但是实际上却是很自然的,因为这一对方法阻塞时要释放占用的锁,而锁是任 何对象都具有的,调用任意对象的w a i t o 方法导致线程阻塞,并且该对象上的锁 被释放。 而调用任意对象的n o t i f y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年保康县统一公开招聘事业单位工作人员笔试有关事项考前自测高频考点模拟试题及一套答案详解
- 2025贵州铜仁职业技术学院引进高层次及紧缺专业人才57人考前自测高频考点模拟试题及一套完整答案详解
- 2025广西玉林市玉州区人力资源和社会保障局招聘编外人员4人考前自测高频考点模拟试题附答案详解(典型题)
- 2025湖北巴东县溪丘湾乡人民政府招聘公益性岗位工作人员11人模拟试卷附答案详解(黄金题型)
- 2025年西夏区自治区级公益性岗位招聘模拟试卷及一套参考答案详解
- 2025年海上风电项目发展计划
- 2025湖南省血吸虫病防治所(湖南省第三人民医院)高层次人才公开招聘12人考前自测高频考点模拟试题及一套参考答案详解
- 2025广东东莞东坑镇第三小学(松实附小)招聘20人模拟试卷有答案详解
- 2025年甘肃省兰州新区市政投资管理集团有限公司急需紧缺技术岗位人员招聘32人模拟试卷附答案详解(考试直接用)
- 2025北京十一未来城学校春季招聘模拟试卷及完整答案详解
- 小学英语写人作文
- 23秋国家开放大学《液压与气压传动》形考任务1-2参考答案
- 煤矿架空乘人装置安装检验报告
- (完整word版)高中英语3500词汇表
- 寻常型天疱疮
- 法人车辆租给公司合同范本
- 汉画像石课件
- 初中毕业证怎么从网上查询
- GB/T 32926-2016信息安全技术政府部门信息技术服务外包信息安全管理规范
- GB/T 26006-2010船用铝合金挤压管、棒、型材
- 建筑工程防火墙脚手架搭设施工方案
评论
0/150
提交评论