(计算机软件与理论专业论文)基于网络中文平台的代理和负载均衡的研究.pdf_第1页
(计算机软件与理论专业论文)基于网络中文平台的代理和负载均衡的研究.pdf_第2页
(计算机软件与理论专业论文)基于网络中文平台的代理和负载均衡的研究.pdf_第3页
(计算机软件与理论专业论文)基于网络中文平台的代理和负载均衡的研究.pdf_第4页
(计算机软件与理论专业论文)基于网络中文平台的代理和负载均衡的研究.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机软件与理论专业论文)基于网络中文平台的代理和负载均衡的研究.pdf.pdf 免费下载

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

文档简介

摘要 摘要 、网络中文平台是国家”九五”重点科技攻关项目,作为中文信息处理系统首次提 出了以j a v a 为中心的面向i n t e m e t 的中文应用,通过i n t e m e t 为网络用户提供中文 应用支持,具有硬件无关性和良好的跨平台性:) 本文在研究j a v a 2 安全体系结构的基础上实现了a p p l e t 安全策略的定制,为 在网络中文平台上采用代理和负载均衡提供了可能性,并针对该平台的代理和负 载均衡所涉及到的一些关键问题进行了研究和设计,在此基础上提出了适合该平 台的代理和负载均衡模型。在代理的结构上采用了双队列结构的线程池和链表结 构的辅助线程池,通过实现服务线程的可重用性来提高对客户的请求响应。而且 根据网络中文平台使用的数据格式在代理中构造字库缓存,为局域网内用户提供 快速、方便的中文缓存支持,并对代理中的排队模型进行了理论分析,对代理的 性能给出了实验测试数据。在字库服务器和输入法服务器端,通过采用基于反向 代理机制的负载均衡实现服务器集群的可伸缩性和强容错性,提出了连接数和处 理能力相结合的均衡算法,同时给出了该算法的性能测试。 r 关键词:冲世理 负载均衡网络中文平台线程池 | a b s t r a c t t h ec h i n e s en e t w o r kp l a t f o r mi san a t i o n a l “9 5 ”e m p h a s i sp r o j e c t a sac h i n e s e i n f o r r n a t i o np r o c e s s i n gs y s t e m t h ec h i n e s ea p p l i c a t i o nf o ri n t e m e t - o r i e n t e do fc e n t e r w i t hj a v ai sf i r s tp r e s e n t e d i ts u p p o r t sn c t w o r ku s e r sf o rc h i n e s ea p p l i c a t i o nt h r o u g h i n t e m e tw i t ht h ef e a t u r e so f i n d e p e n d e n t t oh a r d w a r ea n d o p e r a t i o ns y s t e m s i nt h i sp a p e r , t h ee u s t o m i z a t i o no f a p p l e ts e c u r i t ys t r a t e g yi sr e a l i z e db a s e do n t l l e s e c u r i t ya r c h i t e c t u r eo fj a v a 2 ,w h i c hp r o v i d e st h ep o s s i b i l i t yf o ri n t r o d u c i n gt h ep r o x y a n dl o a db a l a n c i n g t h i sp a p e rd e a l sw i t hs o m ek e yp r o b l e m si np r o x ya n dl o a d b a l a n c i n gs y s t e ma n dp u t sf o r w a r dam o d e lo f p r o x ya n di o a db a l a n c i n gw h i c ha d a p t st o t h ec h i n e s en e t w o r k p l a t f o r i l l i nt h es t r u c t u r eo fp r o x y at h r e a d sp o o lo f d o u b l eq u e u e s s t r u c t u r ea n da na s s i s t a n tt h r e a d sp o o lo fc h a i nt a b l es t r u c t u r ea r ed e v e l o p e d t h e r e s p o n d e n c e i si m p r o v e db y r e u s i n g t h r e a d si nt h r e a d s p 0 0 1 f u r t h e r m o r e aw o r df i g u r e b u 行b ri n p r o x yi s c o n s t r u c t e da c c o r d i n gt h ed a t af o r m a tu s e db yc h i n e s en e t w o r k p l a t f o r n l w h i c hp r o v i d e sf a s ta n dc o n v e n i e n tc h i n e s es u p p o r tf o ru s e r si nl a n a n a n a l y s i so fq u e u i n gm o d e li np r o x yi sm a d ea n dt h es t a t i s t i cd a t ao f i t sp e r f o r m a n c ei s g i v e n i nt h es i d eo fw o r ds e r v e ra n di n p u tm e t h o ds e r v e r , t h es c a l a b i l i t ya n df a u l t t o l e r a n c eo fs e r v e rc l u s t e ra r ea c h i e v e dw i t hl o a db a l a n c i n gb a s e do ni n v e r s ep r o x y m e c h a n i s m f i n a l l y , a na l g o r i t h r nc o m b i n e dw i t ht h en u m b e ro fc o n n e c t i o n sa n dt h e a b i l i 谚o f p r o c e s s i n gi sp r e s e n t e da n d i t sp e r f o r m a n c et e s ti sa l s om a d e k e y w o r d :p r o x y l o a d b a l a n c i n g c h i n e s en e t w o r k p l a t f o r m t h r e a d s p o o l 第一章绪论 1 第一章绪论 1 1 引言 随着近年来i n t e m e t 的急速发展,越来越多的用户使用i n t e m e t 。任何企业或 个人既可以访问和查询自己关心和想得到的信息资源,又可以将自己的信息资源 放到整个i n t e m e t 互联网上,供其它用户查询和访问。i n t e m e t 主干网的统计数据 表明,网络使用的普及程度,在过去的几个月里得到了突飞猛进的发展,大大超 过了人们的预料。每天都有新出现的提供w w w 商业或非商业服务的网站。它允 许公司或个人以极少费用就连接到个巨大的不断增长的用户群和几乎无数的信 息源,因而众多公司和个人都蜂拥而至。如此众多数量的用户使用i n t e m e t 导致 了网络i p 资源的严重短缺,而且大量用户的同时访问使得网络带宽明显不足,大 大降低了访问速度和效率。 采用i p v 6 是彻底解决i p 地址短缺问题的方法,但i p v 6 要全面替代旧的i p v 4 不是一朝一夕的事,在很长时间内两者会同时并存,目前比较经济实用的方法就 是采用代理技术,很多公司和用户都是通过代理服务器上网。代理服务器【1 4 j 其功 能就是采用代理技术实现数据转发,代理网络用户去取得网络信息。它是网络信 息的中转站,起到连接用户和服务器的桥梁作用。可以让多个用户公用一个i p 地 址而不相互干扰,不仅可以节省i p 资源还可以起到i p 地址隐藏的功能,给用户 提供一层安全保障。而且,大部分代理服务器都具有缓存的能力,不断将新取得 数据储存到本机上,提高了用户浏览的速度和效率,节省了网络费用。同时代理 技术还用在其他各个方面,如网络计费系统、网络防火墙、负载均衡等等。随着 网络的进一步发展和普及,代理技术必将得到更广泛的应用。 现在,i n t e r n e t 所体现出来的广泛性、快捷性和经济性,使得越来越多的公司 在网上设立了自己的网站,通过网络开展商业和宣传活动,尤其是商业网站在持 续的业务发展的推动下,用户的访问量急剧上升,远远超过了当初设计网站的吞 吐量。在此情况下如果扔掉原有的设备去做大量的硬件升级会造成现有资源的浪 费。而且这样的设备既价格昂贵更换起来又费时费力,升级越高花费越多。如果 再面临下一次业务量的提升,这又将导致再一次硬件的升级。而且一旦该服务器 出现问题,整个系统就会陷入瘫痪。于是,负载均衡机制田】应运而生。负载均衡 ( l o a db a l a n c e ) 技术也叫集群技术,是建立在现有网络结构之上,它提供了一 种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数 据处理能力、提高网络的可伸缩性和可用性。可伸缩性( s c a l a b i l i t y ) 指规模的可 扩展性,当总体的工作流量超出了一个集群中各系统的能力时,将有其它系统加 2基于网络中文平台的代理和负载均衡的研究 入到该集群中,从而使系统总体性能得以增强。可用性( a v a i l a b i l i t y ) 指当集群 中的一个系统发生故障时,集群软件迅速作出反应,将该系统的任务分配到集群 中其它正在工作的系统上执行,即提供了一种永不停机( n o n s t o p ) 的服务。 1 2 代理与负载均衡技术的研究现状 代理技术的发展已经有多年的历史,经过这么多年的发展它逐渐形成了一种 比较成熟的技术。根据代理服务器工作的层次,一般可分为应用层代理、传输层 代理、s o c k s 代理、透明代理。 应用层代理。它主要根据一些应用层协议的特点进行工作,也就是说必须 在应用层协议的支持下工作。先接收客户端的连接,然后理解客户端的请 求并发现目的地,并对该目的服务器发起连接,最后建立起一条转发信息 的通道。 传输层代理。它接受内部客户端的t c p 和u d p 包并发送到外部网,重新 发送包时,源i p 和目的i p 都要改变,也可能要改变传输层头部。 s o c k s 代理。它将内部网连接重定向到外部网,是o s i 的会话层协议, 用于内部网t c p 客户端朋务器应用程序访问外部网络,它完全不同于其 它的应用层代理协议,因为所有的客户端的编程必须使用s o c k s 接口, 否则无法工作。 透明代理。它无需特殊的客户端配置就可以提供完整的网络连接,也称为 网络地址转换( n e t w o r ka d d r e s st r a n s f e r ,n a t ) 。很多防火墙和一些u n i x 操作系统支持透明代理,它类似网络路由器,但传统的路由器转发通信时 会用下一个路由器的m a c 地址替换数据链路层的头部而不改变这些信息 的源和目的i p 。透明代理转发通信时会替换数据链路层和网络层头部。 目前,市场上有很多免费的和商用的p r o x y 服务器软件,比较流行的如 n e t s c a p ep r o x ys e r v e r 、m i c r o s o f tp r o x ys e r v e r 、w i n g a t e 等,n e t s c a p ep r o x ys e r v e r 和m i c r o s o f tp r o x ys e r v e r 适用于较大的系统,而且价格也比较昂贵。w i n g a t e 是 一种免费的软件,它适用于小型的系统。一般这些代理软件不仅支持应用层代理 而且还支持其他的代理,如s o c k s 代理、透明代理,邮件代理等等。还有一些 较好的代理软件如v i k i n gp r o x y 、p u r v e y o r 。它们也提供了若干种代理方式,但缓 存能力有限。 负载均衡技术是另一项研究较多的网络技术,目前解决负载均衡问题既可以 采用硬件方式也可以采用软件方式。硬件负载均衡解决方案是直接在服务器和外 部网络间安装负载均衡设备,这种设备我们通常称之为负载均衡器,由于专门的 设备完成专门的任务,独立于操作系统,整体性能得到大量提高。但这种负载均 第一章绪论 衡器比较昂贵,使用不灵活,适用于大流量的系统中。所以在一般情况下多数公 司采用软件负载均衡解决方案。主要有以下几种解决方案1 2 6 j 1 2 7 j : 基于d n s 的负载均衡。这是最早的也是最简单的负载均衡技术,是通过 d n s 服务器中的随机名字解析来实现的。在d n s 服务器中,可以为多个 不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个 名字时得到其中的一个地址。因此对于同一个名字,不同的客户机会得到 不同的地址,从而达到负载均衡的目的。 反向代理负载均衡。使用代理技术可以将信息均匀转发给多台服务器之 一,从而达到负载均衡的目的。它跟普通的代理有所不同,普通代理方式 是客户使用代理访问多个外部服务器,而这种代理方式是多个客户使用它 访问内部服务器,因此称为反向代理模式。 基于n a t 的负载均衡【2 4 1 。网络地址转换为在内部地址和外部地址之间进 行转换,以便具备内部地址的计算机能访问外部网络。如果n a t 能将每 个连接均匀转换为不同的内部服务器地址,此后外部网络中的计算机就各 自与自己转换得到的地址上服务器进行通信,从而达到负载均衡的目的。 扩展的负载均衡技术。在这种负载均衡方式下,即当客户请求发送给负载 均衡器时,负载均衡器就将请求打包并发给某个服务器,而服务器的回应 请求不再返回给负载均衡器,而是直接返回给客户,因此这种负载均衡器 只负责接收并转发请求,其网络负担就较小。 目前基于硬件的负载均衡有c i s c o 的均衡器、3 c o m 的s u p e r s t a c k 等。基于 软件的负载均衡有l i n u x 下自由软件i p c h a i n s 、s i n u sf i r e w a l l 、j f w a d m i n 等,这 些软件主要是基于n a t 的解决方案,但基于d n s 的解决方案由于实现简单因而 有些公司也在使用,如y a h o o 公司的网站就是使用基于d n s 的解决方案。 1 3 研究的目的 本文是对网络中文平台的代理和负载均衡所涉及到的关键技术的研究。网络 中文平台是国家“九五”重点科技攻关项目,由西安电子科技大学软件工程研究 所受长城计算机软件与系统有限公司委托开发的。项目已于2 0 0 0 年7 月通过了国 家软件测试中心的产品测试,以及信息产业部的技术鉴定和科技部的项目验收。 但此项目仍然存在一些问题,如不能支持代理,使很多通过代理上网的用户仍然 无法使用此中文平台。而且由于网络中文平台采用了一种独特的基于t c p i p 的应 用层协议,使得目前的代理软件不能用于此系统。同时,由于j a v aa p p l e t 的安全 的限制,不能与非来源地主机通讯,因而字库服务器、输入法服务器、w e b 服务 器还不能分离,这很容易造成服务器过载,极大地增加了对客户的响应时间。本 4基于网络中文平台的代理和负载均衡的研究 文主要解决网络中文平台支持代理和采用负载均衡的关键问题。由于网络中文平 台是基于j a v a 的跨平台的系统,为了继承这个优点,支持它的代理软件和负载均 衡软件也应该具有基于j a v a 的跨平台的特性。基于j a v a 系统和网络中文平台的 特点考虑,本文主要采用应用层代理和基于反向代理的负载均衡。 1 4 论文各章节的安排 本文各章节的基本内容如下: 第二章介绍了网络中文平台的体系结构及其运行方式。 第三章介绍了j a v a 2 中的安全机制,比较了解决安全限制的两种途径:定制 安全管理器与数字签名认证。对论文涉及到的安全问题进行了分析并据此提出了 解决方案; 第四章首先介绍了代理系统与网络中文平台的接口;给出了代理的体系结 构,分析比较了构造代理线程池的两种思路,提出了适合于网络中文平台的代理 缓存算法,并采用排队论对代理的性能进行了深入的分析和测试; 第五章给出了负载均衡的体系结构,介绍了若干种常用的均衡算法,提出了 一种基于最少连接和处理能力的改进型负载均衡算法,并用实际测试数据就各种 均衡算法进行了性能比较。 结束语中对系统进行了总结。 第二章网络中文平台的介绍 第二章网络中文平台的介绍 2 1 网络中文平台概述 网络中文平台5 1 1 是本文研究代理和负载均衡的基础,该平台的目标是研究并 实现一个网络中文应用开发平台,为i n t e m e t 上的应用开发及用户提供中文信息处 理的支持。它与传统意义上的中文平台的本质区别在于以往的中文平台都是通过 对客户机本地环境的扩充来使其支持中文的,而本系统的目标则是实现完全的网 络环境的中文平台,所有的中文支持都通过网络由服务器方提供,对于客户机环 境则没有特别的要求。在此平台之上开发的含有中文信息的网页,在w e b 服务器 上发布后,则无论客户机端的平台是否支持中文,都可以用浏览器正常地浏览该 中文网页,从而为i n t e r n e t 上的应用开发及用户提供了中文支持。系统具有如下特 点:( 1 ) 跨平台:( 2 ) 完全的中文环境;( 3 ) 多种中文输入方式;( 4 ) 中文输出; ( 5 ) 中文处理a p i : 2 2 网络中文平台的体系结构和运行方式 网络中文平台使用了一种基于j a v a 技术的a p p l e t s e r v e r 结构,支持w e b b r o w s e r s e r v e r 结构。这是它与传统c ,s 模式下应用系统的一个重要区别,也是一 个重要的进步。客户机上只需安装一个标准的w e b 浏览器。其它的应用程序都安装 在w e b 服务器上,需要时才下载。客户端通常向用户提供应用的接口,它是一个图 形用户界面,在客户端运行的程序是j a v aa p p l e t 程序,这些程序可以运行在一个支 持j a v aa p p l e t 的w e b 浏览器下,它不以任何方式直接和数据文件( 或数据库) 交互 而是向它的宿主机( 来源服务器) 提出服务请求。这样就保证了系统中的客户机是 一个真正的“瘦”客户机。在服务端,提供所有完成业务逻辑处理所需的各种服务。 采用这种a p p l e t s e r v e r 结构,可以获得很多优点,比如可伸缩性好、维护容易、可 管理性强、安全性高、减轻了s e r v e r 端的负担、降低了网络的数据流量、充分利 用了浏览器的功能、体现j a v a 跨平台性等,并且由于w w w 简单易用和a p p l e t 拥 有的功能强大的g u i ,使客户端界面运行良好,便于用户使用。从而避免了按照 传统客户机服务器结构来构建应用软件,所有的应用都集中在客户端,从而导致 客户端程序庞大、系统速度下降、可靠性降低的缺点。中文平台的体系结构如图 2 1 所示。 6基于网络中文平台的代理和负载均 翰的研究 图2 1 网络中文平台的体系结构 服务器启动时,运行命令解释器。命令解释器装载字库驱动管理程序和输入 法驱动管理程序。字库驱动管理程序装载缺省的字库驱动程序,输入法驱动管理 程序装载缺省的输入法驱动程序。缺省的字库驱动程序装载对应的字库,缺省的 输入法驱动程序装载对应的输入法字典。 在客户方运行的程序是j a v aa p p l e t ,来源于w e b f l 艮务器,当客户浏览网页时 迁移到客户端运行。j a v a a p p l e t 程序主要由客户端服务接c v i o w 和中文控件组 成,用户通过使用客户端服务接1 :3 c v i e w 和中文控件获得网络中文平台的中文支 持。客户端服务接口是与服务器端通讯的服务部件。它接收客户端中文控件的命 令并通知服务器端,再将服务器端提供的服务传递给命令发出者。可提供字形请 求等多种服务。同时它将客户端所用的输入法与一些状态信息显示在界面上。请 参见图2 2 系统运行方式图。 j a v a a p p l e t ( 匐a o o l e t 代码移动到客户端 w e b 服务器 中文控件 c v i e w 通过s o c k e t 发送控件的请求 7 l 网络中文平台 提供请求服务 l服务器 图2 2 网络中文平台的系统运行方式图 第二章网络中文平台的介绍 2 3 系统存在的问题 网络中文平台为中文支持提供了一种方便的、易用的、独特的解决方案,但 仍然存在一些应用上的缺点,除了当初采用j a v a l 1 版本所提供的功能限制以外, 还有一些在当初设计时所未考虑到的因素。 不支持代理。 在j d k i 1 版本以前,没有建立身份证明和身份信任的机制,所以,所有的j a v a a p p l e t 都被假设是来自于一个不可信任的源。出于安全的考虑,j a v aa p p l e t 有很 多访问限制,如不能与非来源地的主机通讯,不能读写本地文件等等一些安全限 制。在j d k l 1 中,s u n 公司增加了可信任j a v a a p p l e t 的概念。但是,用户只能以 完全可信任或完全不可信任的方式建立j a v aa p p l e t 源。由于这些限制使得代理服 务器不能在网络中文平台的系统中起作用,而现在很多用户都是通过代理服务器 连到i n t e m e t 上,这样很多用户就不能使用这个中文系统了,影响了网络中文平台 的使用率。同时,网络中文平台使用了一种自己特有的基于t c p i p 的应用层通讯 协议,它不同于h t t p 、f t p 等应用层协议,现在几乎所有的代理产品都不支持这 样的通讯协议。而且系统拥有自己的数据格式,如字体、字型、内码、点阵等, 这些数据格式和数据之间的关系也是完全不同于现有的应用层协议,这些数据格 式正是代理进行数据缓存的基础。 字库缓存不理想。 为了减少网络通讯量,在系统中设置了二级缓存。第一级由系统设置,包括 些最常用的1 2 8 个字,第二部分由用户在线输入时建立,二级缓存字的数目可 由用户指定( c v i e w 提供一个服务,并通过中文控件向用户发布,通过它可对缓存 的大小进行设置,详细见网络中文平台设计) ,c v i e w 初始化时,与服务器命令解 释程序建立连接,从而将缓存的一级字读入客户端保存起来,当用户有字形请求 时,首先查找一级缓存,若该字不在一级缓存中,则再查找二级缓存。若该字也 不在二级缓存中,则从服务器端取得字形数据,并将该字的字形数据放入二级缓 存中等待下次使用。这种设计在一定情况下取得了较好的效果,但如果用户通过 代理连上i n t e m e t ,即很多用户处于同一个局域网内,他们就很有可能有相同或相 似的偏好,使用的汉字就会有很多是相同的。这样系统执行二级缓存机制就会从 服务器重复取回很多相同的数据,加大了系统的通讯量。 不支持集群服务器。 集群技术是目前网络服务器经常采用的技术,几乎每个网站都是利用多台服 务器作为一个集群来一起提供服务,使负载均匀地分配到各个服务器上,提高服 务器对客户的响应速度。由于以上所述的j a v aa p p l e t 的安全限制,网络中文平台 基于网络中文平台的代理和负载均衡的研究 不能和w 曲服务器进行分离,而w e b 服务器自身就是一个高负载的服务器,接收 很多用户的访问,这样多个系统运行在一个服务器上很明显会给用户造成很大的 时延,甚至会丢失用户。这时的服务器性能将会成为网络访问的瓶颈。对于架构 一个非大型的网站因此而采用超高性能或大型的设备显然是不经济的。即使是不 考虑经济问题,这样的系统的运行可靠性完全是基于一台服务器的可靠性上,一 旦发生软件或硬件故障,整个系统将会崩溃。显然它是不能提供一个可容错、可 伸缩的系统。 2 4 解决方案 根据以上的系统分析,本文采用代理技术和负载均衡技术来解决上述系统存 在的不足。为采用这两项技术,首先必须解决j a v aa p p l e t 的安全问题,使得运行 在客户端的a p p l e t 能够与第三方服务器通信( 本文主要指代理服务器和负载均衡 服务器) 。由于j d k l 2 在安全方面提供了更为灵活更为方便的功能1 7j ,增加了更为 精细的控制,所以开发系统时采用j d k l 2 作为开发环境。它允许一个特殊的j a v a a p p l e t 源是部分可信任的、完全可信任的、完全不可信任的。通过采用数字签名 技术】可以达到安全策略的定制。可以允许它读取一个特殊文件,而不允许读取 其它文件。允许在一个指定端口上与一指定的远程系统建立套接字连接等,第三 章部分将对j a v a 的安全进行详细的论述。 在网络中文平台中添加支持代理的能力,就是要开发一个针对网络中文平台 的代理服务器。这个代理服务器既可以和一般的代理服务器如w i n g a t e 、m sp r o x y s e r v e r 等软件一起运行在一台机器上,也可以独立运行在一台机器上起作用。在定 制安全策略的基础上使运行在客户端的j a v aa p p l e t 可以在安全的条件下与第三方 服务器进行通信。所以通过修改c v i e w 类的代码,可以使系统在代理服务器存在 的条件下直接将通信目的地址指向该代理服务器。这个代理服务器专门代理c v i e w 与字库服务器和输入法服务器之间的数据通讯。根据网络中文平台的通讯协议接 收请求和数据,处理后转发给远端服务器,通讯协议的详细情况见第四章。在代 理中采用了线程池的结构来实现多线程的并发处理,为每一次请求提供两条独立 的通道,实现数据读写的异步操作。而且通过线程池的结构来达到系统对线程的 重用,用双队列模型实现对线程的高效调度,从而提高了系统的效率。在代理中 还设置了一个辅助线程池,给线程池提供了可伸缩的空间。在解决网络中文平台 的字库缓存问题上利用了代理的缓存机制,并根据该平台的特定的数据格式设计 了一套字库缓存,从提高效率的角度出发,通过构造一种树型结构将多关键字查 找转变为单关键字查找,并引入了一种l r f u 置换算法来实现缓存的置换操作。 代理的示意图如图2 3 所示。 第二章网络中文平台的介绍 9 恒 图2 3 网络中文平台的代理示意图 图2 4 负载均衡示意图 当j a v aa p p l e t 的安全限制得到解决后,就可以采用服务器集群技术来优化字 库服务器和输入法服务器。由于系统采用j a v a 作为开发平台,而j a v a 是不支持网 络底层的操作,象n a t 、i p 隧道技术就无法采用了,所以,采用反向代理技术来 解决负载均衡问题是一个较为合适的方案。它不仅利用了上面论述的代理技术, 而且也得到了j a v a 平台的支持。它既可以支持异构型服务器也可以支持同构型服 务器,而且采用反向代理技术的负载均衡服务器还可以提供额外的安全保障( 基 于n a t 的负载均衡也有此项功能) 。这样的负载均衡服务器在网络上既可以处在 网关的位置,也可以与其他服务器处于同一位置。负载均衡的示意图如图2 4 所示。 均衡算法在负载均衡中是非常重要的部分,它直接影响系统的整体性能。采用简 单的算法如论循算法不能保证真正意义上的均衡,最小连接数算法虽然可以保证 每一次访问请求都分配给当前处理进程最小的服务器,但该算法是在假设所有集 群服务器中的服务器配置相同情况下的负载均衡,没有考虑配置不同的情况。而 处理能力均衡算法主要是根据服务器的处理能力来均衡地分配任务。所以在解决 算法问题上本文根据网络中文平台的特点将最小连接数算法和处理能力均衡算法 结合起来并考虑了时间因素。对字库服务器和输入法服务器采用负载均衡的另一 个目的是为服务器群提供可伸缩性和容错性,通过在负载均衡中增加出错处理和 0基于网络中文平台的代理和负载均衡的研究 服务器管理模块实现了自动容错的能力和系统“热插拔”的功能。 支持网络中文平台的代理和负载均衡都是为了提高网络中文平台的能力而采 用的。代理主要用在客户端的局域网上,是面向客户并向客户提供数据转发服务 的。负载均衡是用在服务器端,为网络中文平台的字库服务器和输入法服务器群 提供负载均衡的能力。虽然两者都采用了代理技术,但它们在网络中处于不同的 位置,提供了不同的网络服务。如图2 5 所示。图中黑框部分就是本文工作的重点。 图2 5 网络中文平台的代理和负载均衡在网络中的位置 第三章j a v a 的安全模型及定制安全策略 第三章j a v a 的安全模型及定制安全策略 从以上所述可知,解决a p p l e t 的安全问题使之能安全的与第三方通信是在网 络中文平台中应用代理和负载均衡的前提条件,否则a p p l e t 只能与来源地主机通 信,不会与其他服务器主机包括代理服务器和负载均衡服务器通信,那么,代理 服务器和负载均衡服务器将失去作用。本文在详细论述代理技术和负载均衡技术 之前首先介绍j a v a 的安全模型和定制安全策略。本章在介绍不同版本的j a v a 平台 的安全模型后,提出了改变a p p l e t 安全限制的方法,并给出了数字签名的具体操 作步骤。 3 1j a v a 的安全模型n 1 自从j a v a 技术开始应用以来,人们对j a v a 平台的安全性以及由于部署j a v a 技术所引发的安全问题给予极大的关注。j a v a 平台最初提供的安全模型称为沙箱 ( s a n d b o x ) 模型。它提供了一个非常严格的环境来运行从开放的网络上获得的不 信任码。沙箱模型的要点是本地代码是可信任的,可以访问重要的系统资源( 如 文件系统) ,而下载的远程代码( a p p l e t ) 则是不被信任的,只能访问沙箱内提供 的有限的资源。沙箱模型如图3 1 所示。 本地代 远程代码 图3 1j d k l 0 沙箱模型 所有的安全性是通过一系列机制来实施的。首先是在语言方面,j a v a 语言本 身被设计为类型安全、易于使用。与c 或c + + 相比它减少了由于程序员所犯细小 错误的危险,语言的特点比如自动内存管理、垃圾回收、字符串和数组的边界检 查都是为了帮助程序员编写安全的代码。第二是编译器和字节码校验器,编译器 和校验器确保只有合法的j a v a 代码才能运行。字节码校验器和j a v a 虚拟机一起保 证了语言在运行时是安全的。还有,类装载器定义了一个本地名字空间,这个名 基于网络中文平台的代理和负载均衡的研究 字空间可以确保一个不被信任的a p p l e t 不能干扰正在运行的其他程序。最后,对 关键系统资源的存储要先由安全管理器进行检查,安全管理器将不被信任的代码 的行为限制在允许的最小范围内。 随着j a v a 的发展,改变安全政策的需求不断增长。几乎所有的人都认为j d k l 0 的沙箱模型尽管安全却过于严格。在j d k l 1 中,引入了“签名的a p p l e t ”的概念。 j d k 在系统中扩展了加密的a p i ,并且支持数字签名。在j a v a 文档中( j a r 文件) 的a p p l e t 可以通过签名来保护,允许最终用户知道程序是来自可信任的地方,并 且未经过任何修改。如图3 2 所示,经过签名的a p p l e t ,如果其签名通过接收该 a p p l e t 的终端系统的认证,则被认为是可信任的,具有与本地代码一样的完全访 问关键资源的能力,而未签名的a p p l e t 则仍旧运行在沙箱中。 本地代码远程代码 图3 2j d k l 1 安全模型 然而随着j a v a 程序的复杂化、实用化,对j a v a 的安全模型提出了更高的要求。 s u n 在j a v a2 中提出了新的安全体系结构,如图3 3 所示。并基于这种安全体系结 构提供了很多新的特征。 密纹( f i n e g r a i n e d ) 访问控制。 易于配置的安全策略。 便于扩展的访问控制结构 安全检查扩展至所有j a v a 程序。 在j a v a 2 的安全体系结构下提出了一个基本概念:保护域( p r o t e c t e dd o m a i n ) 。 一个域可通过对象集来划分范围,这些对象当前可由个主体直接访问,而主体 是在计算机系统中被授予许可的实体。j d k l 0 所利用的沙箱就是一个有着固定边 界的保护域实例。保护域的概念是一种在保护单元问起着分组和隔离作用的便利 机制。例如,我们可以将保护域分开以避免它们之间的直接交互作用,于是,任 何允许的交互作用必须通过可信系统代码或被有关的域所明确允许。 第三章j a v a 的安全模型及定制安全策略 图3 3j a v a2 的安全模型 保护域通常分为明确的两个类别,系统域和应用程序域。所有被保护的外部 资源如:文件系统、网络设施以及屏幕和键盘等仅能通过系统域来访问。图3 4 中 显示了一个j a v a 应用环境的域的组成。从概念上讲,一个域包括一组类,这些类 的实例被授予相同的一组许可。保护域是由现行策略所确定的。j a v a 应用程序环 境保持了来自代码( 类和实例) 到它们的保护域然后再到它们的许可的映射。如 图3 5 所示。一个线程的执行可能完全发生在一个单一的保护域中,也可能涉及一 个应用程序域或是系统域。例如:一个打印消息的应用程序将不得不与系统域发 生交互作用,因为系统域是唯一对输出流进行访问的域。在这种情况下的任何时 候,应用程序域都不能通过调用系统域获得除打印消息外的任何额外许可,否则 将是一个严重的安全隐患。在相反的情形下,一个系统域从一个应用程序域中调 用一个方法,如当一个a w t 系统域调用一个a p p l e t 的绘画方法来显示这个a p p l e t 时,有效访问权限与应用程序域所允许的当前权限在任何时候都相同,这一点也 是同样至关重要的。换句话说,一个具有较低权限的域不能通过调用一个更高权 限的域,或被一个更高权限的域所调用来获得额外的许可。 图3 4j a v a2 应用环境的域的组成 目前,一个域单独地由一个代码来源鉴别,它封装了在该域中运行的代码的 4基于网络中文平台的代理和负载均衡的研究 两个特征:代码基址和公共密钥证书集,公共密钥对应于在该域中为所有代码签 字的私有密钥。因而,由相同的密钥签字和来自相同u r l 的类被放在同一个域中。 一个域还包含在该域中授予代码的许可,它是由现行安全策略所决定的。 j a v a 运行时类安全策略 a c l a s s l 逦 b c i a s s 蕞? = 焉 戚:! ! 爷零乏 e c l a s s f 7 f :恼 fc l a s s ” 图3 5 类一 保护域一 权限的映射 3 2 改变a p p l e t 安全限制 j a v a 程序有两种存在形式:一种是作为网页的一部分并在用户的浏览器中运 行的小程序a p p l e t ;另一种是独立运行的应用程序a p p l i c a t i o n 。j a v a 应用程序象 通常的商业应用程序一样,需要进行购买和安装。由于应用程序不是来自组织外 部,并且理论上仅由可信任的个体来安装,j f i v a 应用程序无须增加新的安全方面 的考虑,而a p p l e t 通常是通过网络获得的,恶意的小程序可能会破坏用户的机器 或系统。因而a p p l e t 要受到额外的安全限制。 a p p l e t 要受到文件访问限制、网络限制以及其它些限制等等。文件访问通 常是恶意攻击最易突破的地方之一。如果在运行a p p l e t 时,有人能够更改本地文 件系统,他们可能会在其中装入病毒,或者直接破坏数据。因而,不允许任何a p p l e t 以任何一种方式,包括只读方式访问本地文件系统。 a p p l e t 只能与其来源处的w e b 服务器建立网络连接它不能监听来自别处的 套接字连接以及无连接的网络数据报文,同时,它也只能给其主服务器发送数据 报。这些安全限制是用于保护建立了网络防火墙的组织的。由于j a v aa p p l e t 运行 在防火墙内的本地机器上,如果没有任何网络限制,则整个网络都暴露给了任何 恶意的a p p l e t 。 除了文件与网络限制,许多环境还设置了一些其它的安全限制。非本地a p p l e t 不能访问系统属性,本地a p p l e t 则可以读写系统属性。如果一个a 口, p l e t 能够改变 系统属性,则任何a p p l e t 可以改变a p p l e t v i e w e r s e c u r i t y , m o d e 属性,从而打开一 个巨大的安全漏洞;非本地a p p l e t 不能定义其自身的类装载器。问题在于当一个 第三章j a v a 的安全模型及定制安全策略 l5 类引用另一个类时,系统首先指定前者的类装载器去寻找被引用的类。如果想要 创建一个能够读写本地文件的a p p l e t ,应当创建不需要获得安全管理器许可的自 己的输入流输出流。当a p p l e t 由定制类装载器加载时,要询问类装载器是否能够 装载输入流输出流类。行为良好的装载器只是载入这些类的系统版,而恶意的类 装载器则会装载这些类的不安全版;a p p l e t 不能调用本地方法。否则,如果恶意 的a d p l e t 直接调用本地s o c k e t 功能,就会监视到整个本地网络;a p p l e t 不能使用 r u n t i m e e x e c 方法在本地系统上执行命令。否则,恶意的a p p l e t 会执行命令删除 本地文件:a p p l e t 不能定义属于某些包的类。通常是不允许定义j a v a 和s u n 包的 类。 3 2 1 定制安全管理器 j a v a 中的安全管理器由一系列的c h e c k x x x 方法组成,这些方法可以被重置 以定义用户所需的逻辑。在j d k l 1 中,其逻辑是二元的,或者通过抛出 a v a 1 a n g s e c u r i t y e x c e p t i o n 异常来禁止请求,或者只是简单的返回,允许请求。创 建安全管理器是相当困难的,编程中任何小的错误都可能会使系统易于遭受攻击。 许多安全管理器使用i n c l a s s l o a d e r ( ) 方法来决定当前的类是否是由a p p l e t 的类 装载器a p p l e t c l a s s l o a d e r 所装载的。如果由a p p l e t 的类装载器所装载,则要受到 a p p l e t 的安全限制。在j d k l 2 的安全体系结构中消除j d k l 1 中的一些不足,但 保留了其优点。一旦创建了自己的定制安全管理器,应当在所使用的浏览器中覆 盖掉当前的安全管理器,安装新的定制安全管理器。以定制安全管理器替代当前 的安全管理器,以使a p p l e t 获得更多的访问权限是行之有效的,但存在着一些不 足,更好的解决方法是使用数字签名i l ”,本文也正是采用这一技术来实现安全限 制的定制。 3 2 2 数字签名技术 数字签名是密码术的一个分支。数字签名使用的密码术称之为公有密钥密码 术。公有密钥密码术最主要的特点就是加密和解密使用不同的密钥,每个用户保 存着一对密钥公有密钥和私有密钥,因此,这种密码术又称为双钥或非对称 密钥密码术。 公有密钥密码术的原理很简单。当用户想要接收经过公有密钥加密的数据时, 需创建一个公有密钥以及对应的私有密钥,然后把公有密钥公布给所有人。任何 时候有人想要向该用户发送加密信息时,他们使用该用户的公有密钥对数据进行 编码。用户收到数据后,可以使用其私有密钥来解码。另一方面,用户还可以用 6基丁网络中文平台的代理祠i 负载均衡的研究 其私有密钥对要发送的数据进行加密,该数据的接收方可以使用对应该用户私有 密钥的公有密钥来查证数据是否确实是由该用户所发送,并未被怀有恶意者所篡 改。这里的关键在于接收者不能使用公有密钥来对数据进行解码,公有密钥只用 于加密。并且通常是不可能从公有密钥计算出私有密钥的。 数字签名的原理是使用一种特殊形式的密码术来生成数据的一个更小的版 本。这个数据的小版本即是数据的签名。数字签名中的被加密的信息并非数据的 一个完全的表示,办即不能通过解码获得原始信息。换句话说,数字签名是一种 单向编码。尽管无法获得原始信息,但能够查证原始信息是使用哪一个密钥来签 名的。由于签名是使用原始信息生成的,因而即使原始信息的很微小的一部分被 改变,数字签名就会完全不同。此外,在改变原始信息的某部分时,并不能预料 新的数字签名会是什么样的。这就使得他人无法篡改具有数字签名的信息。当发 送方向接收方发送经过数字签名的信息时,他们必须同时发送原始信息及为其生 成的签名。接收方随后使用发送方公有密钥来验证该签名的确是由发送方所产生 的。与用于隐藏信息的普通加密不同,数字签名则用于验证信息的来源及内容。 签名a p p l e t 能够为网络分布软件提供很高的可靠性。数字签名允许我们赋予 j a v a 小程序与给予压缩包装的应用程序同等水平的信任程度,它可以有效地用于 放宽对于某些a p p l e t 的j a v a 安全限制。如果终端用户预先告诉j a v a 系统,某个 w e b 发行者是可信任的,比如说银行或信用卡公司,则当一个由该发行者签名的 a p p l e t 通过网络到达并获得认证时,j a v a 的安全管理器即将该a p p l e t 视同应用程 序,允许其在沙箱外运行。由于数字签名在安全方面具有以上的

温馨提示

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

评论

0/150

提交评论