(计算机应用技术专业论文)基于集群系统的内容交换器的研究与实现.pdf_第1页
(计算机应用技术专业论文)基于集群系统的内容交换器的研究与实现.pdf_第2页
(计算机应用技术专业论文)基于集群系统的内容交换器的研究与实现.pdf_第3页
(计算机应用技术专业论文)基于集群系统的内容交换器的研究与实现.pdf_第4页
(计算机应用技术专业论文)基于集群系统的内容交换器的研究与实现.pdf_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

摘要 随着宽带网络的普及和上网人数的激增,近年来i n t e r n e t 进入了高速发展的阶段, 许多网络内容提供商发现,使用单台服务器来提供服务,已远远不能满足网络带宽的增 长。 通过把网络负载均衡到多个服务器上,来提供统一的服务,使用集群技术可以大大 提高服务的质量。其中基于口地址和t c p 端口的l a y e r - 4 集群技术,因为有着极好的 传输性能,得到了广泛的应用。但这种集群技术进行的是4 层交换,因为查看不到数据 报文中的内容,对于现在的电子商务以及其他网络服务来说,不能根据使用者要求的内 容进行交换还是不够的,甚至会导致比较严重的错误。l a y e r - 7 交换,本文称为内容交 换,就是为了满足这种需求而出现的技术。它不仅能根据用户请求的内容,把请求数据 转发到合适的服务器上,还可以支持基于内容的“会话”功能,而且进一步应用在防火 墙和垃圾邮件过滤等方面。 本文在l i n u x 上开发内容交换器的原型系统- k e r n e lc o n t e n ts w i t c h ( k c s ) ,它 选取h t t p 协议作为进行内容交换的应用层协议,采用d e l a yb i n d i n g 作为数据转发机制, 不仅能满足基于h t t p 协议的内容交换需求,而且能扩展到其他的应用层协议。此系统 基本验证了本文提出的内容交换的解决方案,但在性能优化方面还需要做进一步的改 进。 关键词:七层交换;h t t p 持续连接;c o o k i e ;t c p 粘接;延迟连接;n e t f i l t e r a b s t r a c t w i t ht h ep o p u l a d z a t i o no f b r o a d b a n dn e t w o r ka n d p r o l i f e r a t i n go f p e o p l eo n l i n e i n t e r a c t h a sb e e nr a p i d l yi n c r e a s i n gi nr e c e n ty e a r s m a n yh l t e m e tc o n t e n tp r o v i d e r sa r ea w a r et h a t u s i n g a s i n g l es e r v e r t op r o v i d es e t v i c e sh a s n tm c tt h en e e d o f i n c r e a s i n g n e t w o r kb a n d w i d t h b a l a n c i n gn e t w o r kl o a d st os o m es e r v e r ss oa st op r o v i d et h es a m es e r v i c e ,c l u s t e r t e c h n o l o g yc a ni n c r e a s et h eq u a l i t yo fs e r v i c e t h el a y e r - 4c l u s t e rt e c h n o l o g yb a s e do ni p a d d r e s sa n dt c p p o r tj sw i d e l y u s e df o re x e e l l e n tt r a n s m i s s i o n p e r f o r m a n c e h o w e v e r , a sf o r l a y e r 4s w i t c h ,t h i sc l u s t e rt e c h n o l o g yc a n n o te x a m i n et h ec o n t e n to f p a c k e t f o re c o m m e r c e a n do t h e rs e r v i c e s i t sn o te r i e c t i v ei fp a c k e t sc a n n o tb es w i t c h e da c c o r d i n gt ot h en e e d so f t h eu s e r s i tm a ye v e nl c a dt os e r i o u sm i s t a k e s s ol a y e r - 7s w i t c h ,c a l l e dc o n t e n ts w i t c h ,i s u s e dt o s a r i s f yt h ed e m a n d s i tc a nn o to n l yt r a n s m i tr e q u e s tp a c k e t st o s u i t a b l es e r v e r a c c o r d i n g t o 也ec o n t e n to fu s e r sr e q u e s t ,b u ta l s os u p p o r t “s e s s i o n b a s e do nc o n t e n t i tc a n b ef u r t h e ra p p l i e dt of i r e w a l l s ,s r ,a n lf i l t e r sa n ds oo n a p r o t o t y p es y s t e mo fc o n t e n ts w i t c hh a sb e e nd e v e l o p e d - - k e r n e lc o m e n ts w i t c h ( k c s ) o nl i n u x t h i ss y s t e mc h o o s e s h t t p p r o t o c o la sa p p l i c a t i o nl e v e lp r o t o c o lo f c o n t e n t s w i t c ha n dd e l a yb i n d i n ga sd a t at r a n s m i s s i o nm e c h a n i s m i tc a l ln o to n l yf e e dt h en e e do f c o n t e n ts w i t c hb a s e dh r r pp r o t o c 0 1 b u ta l s oe x p a n dt os u p p o r to t h e ra p p l i c a t i o nl e v e l p r o t o c o l s t h i ss y s t e mv a l i d a t e s t h es o l u t i o no fc o n t e n ts w i t c hm e n t i o n e di nt h ep a p e r , b u tt h e p e r f o r m a n c es h o u l d b ef u r t h e ri m p r o v e d k e y w o r d s :l a y e r - 7s w i t c h ;h t t p p e r s i s t e n c ec o n n e c t i o n s ;c o o k i e ;t c ps p l i c i n g ; d e l a yb i n d i n g ;n e t f i l t e r 一 苎三叁登至堑堕塑查奎垫墅箜堡塞皇壅翌 0 前言 随着i n t e m e t 网络的高速发展,网络带宽增加,单台服务器的处理速度和能力,远 远不能满足大规模网站服务的需求。多个服务器组成的集群系统,通过负载均衡技术, 大大提高了系统的吞吐能力,并具有较高的可扩展性。 现有的集群系统,大多基于d 地址和t c p 端口进行数据交换,虽然可以有效利用 网络带宽,但是它却无法满足对内容“敏感”的应用需求。这种集群系统工作在t c p i p 协议栈的第4 层,即所说的“4 层交换”,因为查看不到数据报文中的内容,因此会导致: 后台每个服务器都需要存储整个站点的单一映像:无法有效支持广泛应用的动态网页技 术;无法进行基于应用层的报文控制,比如对h t t p 报头和对e m a i l 地址的检查。本文 设计和实现的基于集群系统的内容交换系统,通过解析客户端发送请求的内容,应用不 同的交换策略,转发给集群服务器的服务节点,从而大大满足集群系统对应用层协议的 交换需求。 本文组织结构如下:第1 章介绍现有负载均衡集群的技术,然后弓l 出基于集群系统 的内容交换;第2 章,提出h t t p 协议中需要解决的问题;第3 章,分析了5 种应用比 较广泛的数据转发技术;第4 章,详细论述d e l a yb i n d i n g 技术的报文处理过程;第5 章,阐述如何解决基于h t t p 协议的内容交换需求,其中着重应用d e l a y b i n d i n g 技术: 第6 章,基于l i n u x 平台,设计开发的原型系统,k e r n e lc o n t e n ts w i t c h ( k c s ) ,验证 了本文要解决的问题;最后一章总结全文并提出展望。 一茎兰叁登墨堑竺塑查奎垫墨堕堡塞皇壅翌 1 绪论 1 1 负载均衡集群技术介绍 负载均衡技术是指在均衡服务器集群中所有服务器和应用程序之间流量负载的应 用,目前负载均衡技术大多数是用于提高l - t t c m e t 服务器程序的可用性和可伸缩性,诸 如应用在w e b 服务器、f t p 服务器和其它关键任务服务器上。现介绍几种常见的负载均 衡技术1 : 1 1 1 基于客户端的集群技术 基于客户端的解决方法需要每个客户程序都有一定的服务器集群的知识,进而以负 载均衡的方式将请求发到不同的服务器。例如,n e t s c a p en a v i g a t o r 浏览器访问n e t s c a p e 的主页时,它会随机地从一百多台服务器中挑选第n 台,最后将请求送往嗍 n n e t s c a p e c o r n 。然而,这不是很好的解决方法,n e t s c a p e 只是利用它的n a v i g a t o r 避免 了r r d n s 解析的麻烦,当使用m 等其他浏览器时,不可避免的要进行r r - d n s 解析。 1 1 2 基于d n s 的集群技术 d n s 轮询,也称为r r d n s ( r o u n d - r o b i nd o m a i n n a m es y s t e m ) ,有一组w e b 服务 器,它们可以通过分布式文件系统来共享所有的h t m l 文档,如a f s ( a n d r e wf i l e s y s t e m ) 。这组服务器拥有相同的域名( 如w 、w d l u t e d u c n ) ,当用户按照这个域名访问 时,r r d n s 服务器会把域名轮流解析至0 这组服务器的不同口地址,从而将访问负载分 到各台服务器上。 这种方法带来几个问题。第一,域名服务器是一个分布式系统,是按照一定的层次 结构组织的。当用户就域名解析请求提交给本地的域名服务器,它会因不能直接解析而 向上一级域名服务器提交,上一级域名服务器再依次向上提交,直到r r - d n s 域名服器 把这个域名解析到其中一台服务器的口地址。可见,从用户到r r d n s 间存在多台域 名服器,而它们都会缓冲己解析的名字到口地址的映射,这会导致该域名服器组下所有 用户都会访问同一w e b 服务器,出现不同w e b 服务器间严重的负载不平衡。为了保 证在域名服务器中域名到口地址的映射不被长久缓冲,r r d n s 在域名到p 地址的映 射上设置一个t t l ( t i m e t ol i v e ) 值,过了这一段时间,域名服务器将这个映射从缓冲中 淘汰。当用户请求,它会再向上一级域名服器提交请求并进行重新映射。这就涉及到如 何设置这个t t l 值,若这个值太大,在这个t t l 期间,很多请求会被映射到同一台 w e b 服务器上,同样会导致严重的负载不平衡。若这个值太小,例如是0 ,会导致本地 域名服务器频繁地向r r - d n s 提交请求,增加了域名解析的网络流量,同样会使r r - d n s 服务器成为系统中一个新的瓶颈。 第二,用户机器会缓冲从名字到口地址的映射,而不受t t l 值的影响,用户的访 2 基于集群系统的内容交换器的研究与实现 问请求会被送到同一台w e b 服务器上。 第三,系统的可靠性和可维护性差。若一台服务器失效,会让域名解析到该服务器 的用户看到服务中断,即使用户按“r e l o a d ”按钮,也无济于事。 1 1 3 基于分发器的集群技术 分发器一般分为2 类:1 根据地址和t c p 端口进行数据交换,即所说的四层 ( l a y e r - 4 ) 交换。这种方法效率极高,但无法根据请求内容进行交换,并且需要每个后 端服务器存储整个站点的单一映像。2 基于内容进行交换,即七层( l a y e r - 7 ) 交换, 就是在协议栈的应用层进行数据交换。它通过解析客户端请求数据,来选择合适的后端 服务器,并把请求分发给服务器,来达到负载均衡,因为要查看数据报的内容,效率要 比l a y e r - 4 低。基于l a y e r - 4 的交换技术有如下三种: 1 v s n a t :虚拟服务网络地址转换 由于p v 4 中口地址空间的日益紧张和安全方面的原因,很多网络使用保留口地址。 这些地址不在i n t e m e t 上使用,而是专门为内部网络预留的。当内部网络中的主机要访 问i n t e m e t 或被l n t e m e t 访问时,就需要采用网络地址转换( n e t w o r ka d d r e s st r a n s l a t i o n , 简称n a t ) ,将内部地址转化为i n t e m e t s 上可用的外部地址。n a t 的工作原理是报文头 ( 目标地址、源地址和端口等) 被正确改写后,客户相信它们连接一个口地址,而不 同p 地址的服务器组也认为它们是与客户直接相连的。由此,可以用n a t 方法将不同 i p 地址的并行网络服务变成在一个p 地址上的一个虚拟服务。v s n a t 的优点是服务器 可以运行任何支持t c p i p 的操作系统,它只需要在调度器上配置一个m 地址,服务器 组可以用私有的p 地址。缺点是它的伸缩能力有限,因为在v s n a t 中请求和响应报 文都需要通过负载调度器,当服务器结点数目升到2 0 时,调度器本身有可能成为系统 的新瓶颈, 2 v s i pt u n n e li n g :虚拟服务i p 隧道 1 p 隧道( i pt u n n e l i n g ) 是将个p 报文封装在另一个狃报文的技术,这可以使得 目标为一个p 地址的数据报文能被封装和转发到另一个d 地址。i p 隧道技术亦称为p 封装技术( i pe n c a p s u l a t i o n ) 。i p 隧道主要用于移动主机和虚拟私有网络( v i r t u a l p r i v a t e n e t w o r k ) ,在其中的隧道都是静态建立的,隧道一端有个m 地址,另一端也有唯一 的口地址。利用邛隧道技术将请求报文封装后转发给后端服务器,响应报文能从后端 服务器直接返回给客户。但在这里,后端服务器有一组而非一个。所以不可能静态地建 立一一对应的隧道,而是动态地选择一台服务器,将请求报文封装和转发给选出的服务 器。这样,可以利用i p 隧道的原理将一组服务器上的网络服务组成在一个i p 地址上的 虚拟网络服务。 3 v s d i r e c tr o u t i n g :虚拟服务直接路由 跟v s f r u n 方法相同,v s d r 利用大多数n t e r n e t 服务的非对称特点,负载调度器 中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的 吞吐量。 v s d r 的工作流程如下:它的连接调度和管理与v s n a t 和v s t u n 中的样,它 的报文转发方法又有不同,将报文直接路由给目标服务器。在v s d r 中,调度器根据 基于集群系统的内容交换器的研究与实现 各个服务器的负载情况,动态地选择一台服务器,不修改也不封装弹报文,而是将数 据帧的m a c 地址改为选出服务器的m a c 地址,再将修改后的数据帧在与服务器组的 局域网上发送。因为数据帧的m a c 地址是选出的服务器,所以服务器肯定可以收到这 个数据帧,从中可以获得该球报文。当服务器发现报文的目标地址v i p 是在本地的网 络设备上,服务器就处理这个报文,然后根据路由表将响应报文直接返回给客户。 在v s d r 中,根据缺省的t c p ,口协议栈处理,请求报文的目标地址为v i p ,响应 报文的源地址肯定也为v i p ,所以响应报文不需要作任何修改,可以直接返回给客户, 客户认为得到正常的服务,而不会知道是哪一台服务器处理的。v s 仍r 负载调度器跟 v s 删一样只处于从客户到服务器的半连接中,按照半连接的t c p 有限状态机进行状 态迁移。 在3 种模型f 2 】,其中基于分发器的模型是性能最好的一种方法。也容易对数据报进 行集中控制。尽管l a y e r - 4 交换的集群技术已经非常成熟,分发效率也很高,但对于现 在的w e b 或者e m a i l 服务来说,不能根据数据报的内容进行交换,它既无法满足基于内 容的交换,而且对动态网页来说,还会出现交换错误,而l a y e r - 7 交换却可以通过解析 h t t p 报头或者其他的应用层的信息,来交换进来的请求。 1 2 基于集群系统的内容交换 进行内容交换的l a y e r - 7 交换器,除了进行负载均衡应用外,还可以有如下功能: 1 防火墙 通过查看用户端请求的内容,来决定是否让数据报进入。这不同于基于m 报头 或者t c p 报头的防火墙。 2 流量控制 可以设定对不同内容的数据报文进行流量控制。 3 e m a i l 过滤 通过检查e m a i l 地址或内容,可以阻止垃圾邮件或者病毒。 国外已经有不少关于l a y e r - 7 交换的产品,既有软件的实现,如f 5 的b i g i p c o n t e n t s w i t c h ,也有硬件实现,如n o r t e l 的a c e s w i t c h1 8 0 e 和c i s c o 的c s s1 1 1 5 4 等,但多数 是商业产品,价格不菲,而且每家的产品在某些方面有很好的表现,但在刷的方面就相 形见绌了。国外的一些科研机构和大学在这方面也展开研究。目前国内几乎没有相应的 硬件和软件产品,多是在4 层上实现的负载均衡,如l v s 等。 本文将用软件的方式设计并实现一个内容交换器,它能根据用户的请求内容,把请 求报文交换到后端的集群服务器中。由于h r r p 协议在网络服务中的广泛应用,将重点 研究交换器如何基于h t t p 协议进行内容交换。 4 基于集群系统的内容交换嚣的研究与实现 2 基于h t t p 协议的数据交换需求 2 - l 引言 将重点分析基于h t t p 协议的内容交换,本章首先介绍t c p 协议【3 】、h t t p 协议和 u r l 的基础知识,然后分析基于h t t p 协议进行内容交换时所要解决的需求。 2 2 基础知识 2 2 1t c p 协议基础 1 6 位源媾口哥6 位目鲍翦口号 3 锄坍呜 3 2 位喇认f 事号 d 位首部 僳酋6 位) x :;2 ;i1 s 位窗口大小 长度 g k ,h t 。n n 1 6 位校验和 18 1 立紧急指针 1 盎埴 圈2 1 t c p 头部 f i g u r e2 1t c p h e a d e r t c p 提供一种面向连接的、可靠的字节流服务。在个t c p 连接中仅有两方进 行彼此通信。协议通过下列方式来提供可靠性: i 分段机制:应用数据被分割成t c p 认为最适合发送的数据块。 2 定时重传:当t c p 发出一个段后,它启动一个定时器,等待目的端确认收到这 个报文段。如果不自及时收到个确认,将重发这个报文段。 3 可靠连接:当t c p 收到发自t c p 连接另一端的数据,它将发送一个确认a c k 。 确认报文的序号恰好是接收到的报文序号加1 ,相当于发送端下一个将要发送 的报文序号。本文中涉及了报文以及a c k 报文序列转换的问题。 4 数据校验:t c p 将保持它首部和数据的检验和。这是一个端到端的检验和,目 的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,t c p 将丢弃这个报文段和不确认收到。 5 滑动窗口:t c p 还能提供流量控制。t c p 连接的每一方都有固定大小的缓冲空 oi标准报头il,01i 萋于榘群系统的内容交换器的研究与实现 间。t c p 的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止 较快主机致使较慢主机的缓冲区溢出。 如图2 1 所示,是t c p 报头的格式。后面将要阐述t c p 报头转换操作,因此这里 来解释其中的一些字段。 每个t c p 报头都包含源端和目的端的端口号,用于寻找发送端和接收端应用进程。 这两个值加上p 首部中的源端p 地址和目的端p 地址唯一确定一个t c p 连接。 3 2 位的序号( 后面也称为序列号) 用来标识从t c p 发送端向t c p 接收端发送的数 据字节流,它表示在这个报文段中的第一个数据字节。如果将字节流看作在两个应用程 序间的单向流动,则t c p 用序号对每个字节进行计数。序号是3 2 b i t 的无符号数,序号 到达2 3 2 1 后又从0 开始。当建立一个新的连接时,s y n ( 下面介绍) 标志变1 。序号 字段包含由这个主机选择的该连接的初始序号i s n ( i n i t i a ls e q u e n c en u m b s ) 。该主机 要发送数据的第一个字节序号为这个i s n 加l ,因为s y n 标志消耗了一个序号,后面 介绍的f i n 标志也要占用一个序号。 既然每个传输的字节都被计数,3 2 位的确认序号包含发送确认的端所期望收到的 下一个序号。因此,确认序号应当是上次己成功收到数据字节序号加i 。只有a c k 标 志( 下面介绍) 为1 时确认序号字段才有效。发送a c k 无需任何代价,因为3 2b i t 的 确认序号字段和a c k 标志一样,总是t c p 首邦的一部分。因此,看到一里一个连接建 立起来,这个字段总是被设置,a c k 标志也总是被设置为1 。 在t c p 首部中有6 个标志位。它们中的多个可同时被设置为l ,它们每位解释如下: 1 u r g :紧急指针( u r g e n tp o i n t e r ) 有效。 2 a c k :确认序号有效。一个只设置了a c k 标志位的报文,只用来进行数据接 收确认。 3 p s h :接收方应该尽快将这个报文段交给应用层。 4 r s t :重建连接。一个r s t 报文告诉对方关闭对方的t c p 连接。 5 s y n :同步序号用来发起一个连接。一个s y n 报文用来发起一个新的t c p 连 接。 6 f i n :发送端完成发送任务。一个f i n 报文通知对方自己将关闭t c p 连接。 报文段1 报文段3 图2 2 t c p 的三次握手 f i g u r e2 , 2t c pt h r e e - w a y h a n d s h a k e 基于集群系统的内容交换器的研究与实现 t c p 是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方 之间建立一条连接。如图2 。2 所示,建立连接的过程如下: 1 客户端发送一个s y n 报文段指明客户打算连接的服务器的端口,以及初始序 号( i s n ) 。这个s y n 段为报文段1 。 2 服务器发回包含服务器的初始序号的s y n 报文段( 报文段2 ) 作为应答。同时, 将确认序号设置为客户的i s n 加1 以对客户的s y n 报文段进行确认,因为一 个s y n 将占用一个序号。 3 客户必须将确认序号设置为服务器的i s n 加1 以对服务器的s y n 报文段进行 确认( 报文段3 ) o 这三个报文段完成连接的建立。这个过程也称为三次握手( t h r e e w a yh a n d s h a k e ) 。 2 2 2h t t p 协议 h t t p ( h y p e r t e x tt r a n s f e rp r o t o c 0 1 ) 1 4 1 习是用来在w o r l dw i d ew e b 上交流信息的 一种协议,目前协议标准由w 3 c 组织来制定和维护。h t t p 是一种请求应答协议,当 一个 r r t p 客户端,例如w e b 浏览器,和服务器建立一个t c p 连接后,发送一个请求 字符串,如“g e t ,h t t p 1 1 ”,服务器随后返回一个应答,可以是一个文件或者出错信 息,给客户端。 下面是一个对w w w d l u t e d u c n :8 0 的h t t p 请求和应答的例子。 客户端发出请求: g e t7 h i t p 7 i 1 h o s t :w w w d l u t e d uc t i ( 跟随一个空行) 请求的第一行是一个h t t p 请求行,由方法、请求的资源和h t t p 协议版本号组成 每个h t t p 请求只有唯一的一个请求行。 随后是一个h t t p 标准报头,表示请求的“主机是w w w d l u t e d u c n 。请求行后面 可以跟随任意多个h t t p 标准报头。 服务器端响应: h t t p 7 1 12 0 0o k d a t e :s a t , 2 0f e b2 0 0 41 3 :0 1 :4 8g m r s e r v e r :a p a c h e 1 3 2 6 ( u n i x ) d e b i a ng n u l i n u xp h p 7 4 1 2 x - p o w e r e d - b y :p h p h 1 2 t r a n s f e r - e n c o d i n g :c h l l 月妇d c o n t e n t - t y p e :把艇历舰, ( 后面省略返回的h t m l 文本) 响应的第一行是一个h t t p 状态行,由h t t p 协议版本号、状态码和描述状态原因 7 苎三叁壁! ! ! 堂塑查銮垫璺竺曼塞皇壅塾 的短语组成。每个h t t p 应答也只有唯的个状态行。后面跟随了多个h t t p 标准报 o 现在常见的h t t p 协议有两种版本,h t t p 1 0 叼和h t t p 1 1 瓯后者是前者的升级 版本,两者之间的差别会在后面说明。 2 2 2u i t l u r l ( u n i f o r mr e s o u r c el o c a t o r s ) 睥j ,统一资源定位符,在h t t p 协议中一般又称为 网址或者w w w 地址,如下所示: h n p :w w w d l u t e d u c n i n d e x h t m l 其中h t t p 表示使用h r t p 协议,w w w d l u t e d u c n 表示访问的主机名,i n d e x h t m l 为 要访问的文件。第三者一般内嵌在h t t p 请求中的请求行中( 如g e t i n d e x h t m l h t t p 1 1 ) ,是最关心的内容,所以交换器一般要对请求行进行解析,以便得到客户端 想要请求的资源。 2 _ 3 基于h t t p 协议的交换需求 2 _ 3 1 基于u r l 的交换 图2 3 基于u r l 的交换 f i g u r e2 3t h es w i t c ho f p a c k e tb a s e du r l 一般在大型的w e b 站点中,每个后端服务器不可能存储整个站点的单一映像,而 是把h t m l 文档、图片和多媒体文件、c g i 文件分别存储到不同的服务器上,分别提 供不同的服务( 如图2 3 ) 。交换器通过查看h t t p 请求的头部信息,把对不同类型的文 件请求,分别导向相应的服务器,来实现基于u r l 的交换。如果交换器对同一页面的 请求导向同一服务器,还可以提高单台服务器的c a c h e 命中率,进一步提高访问效率。 8 基于集群系统的内容交换器的研究与实现 2 3 2h t t p 持续连接( p e r s i s t e n tc o n n e c t i o n s ) n 最初的h t t p l 0 协议在每次t c p 连接中,只能完成一个h t t p 请求,随后h t t p l 0 协议就要求此t c p 连接关闭。但是一个h t m l 文档往往内嵌图像和其他各种数据,这 就会同时产生对多个u r l 资源的h t t p 请求,每种数据的h t t p 请求都需要一次t c p 连接( 如图2 4 ) ,这就增加了w e b 服务器的t c p 连接的负载。 客户揣 h t t p ,l 咀# 持续连接 t 啪1 1 ;! 垒! 坚婴幽 1 c p 澍21 罂垒盈竖翌i :! 丽一 图2 4h r r p 1 0 非持续连接 f i g u r e2 4h t t p 1 0 n o n e - p e r s i s t e n c ec o n n e c t i o n s 为了减少t c p 连接的次数,h t t p l 1 协议提供了持续连接的功能,并且是默认支 持,使得一个t c p 连接可以完成多个h t t p 请求,如图2 5 所示,客户端和服务器建立 t c p 连接后,依次发送三个h t t p 请求,这就减少了t c p 三次握手的次数,提高了传 输的效率。 h t t p i i1 持续l 游 客户端 圃 】i 服务器 删 图2 5h t t w l 1 持续连援 f i g u r e2 5h t r p 1 1p e r s i s t e n c ec o n n e c t i o n s 然而交换器对这个特性的支持却比较困难,往往在实现上会和基于u r l 的交换发 生冲突。例如,客户端发送一个h t t p 请求,交换器转发给服务器1 ,此时服务器1 具 有t c p 连接状态;然后客户端发送另一个h t t p 请求,此时要访问的资源在服务器2 上,而服务器2 并没有和交换器可用的t c p 连接,交换器如果转发给服务器2 ,则不能 利用已经有的和服务器1 的t c p 连接,无法有效的支持h t t p l 1 的持续连接功能。 2 3 3c o o k i e ss e s s i o np e r s i s t e n c e 现有的动态w e b 技术,诸如p h p 、a s p 和j s p 等,其中都会支持s e s s i o n 功能,这 个功能是由c o o i d e s 8 删实现的。当客户端请求一个使用s e s s i o n 功能的w e b 页面时,服 务器会给客户端一个带有某种类型的s e s s i o ni d 的c o o k i e s ,客户端之后的请求都会带 着这个c o o l d e ,服务器则根据这个s e s s i o ni d 来索引使用者的s e s s i o n 。对于这样的应 用,交换器必需知道哪个服务臻产生了什么样的c o o k i e s ,在下次客户端的请求到来时, 基于集群系统的内容交抉器的研究与实现 要根据请求里的c o o k i e s 来选择著重导到原来的服务器,这就是c o o k i e ss e s s i o n p e r s i s t e n c e 。 然而这在实现上也会和基于u r l 的交换发生冲突,这个和持续连接是一样的。客 户端要访问的内容在服务器2 上( 满足基于u r l 的交换) ,但是却发送带着服务器1 的 c o o k i e s 的请求( 满足c o o k i e ss e s s i o np e r s i s t e n c e ) ,此时交换器就无法同时满足两者的 需求,这是设计和实现时需要注意的问题。 2 3 4s s ls e s s i o np e r s i s t e n c e 1 0 1 【1 1 】 现在许多电子商务站点为了保证交易的安全性,多采用s s l 协议对h t t p 数据进行 加密传输。因为利用s s l 连接服务器所涉及的加解密运算很耗时,因此客户端往往重复 使用一个s s ls e s s i o ni d 来连接服务器,这和c o o k i e s 的s e s s i o ni d 很相像,交换器也 需要根据s s ls e s s i o ni d ,把客户端的请求导向同一台服务器,这就是s s ls e s s i o n p e r s i s t e n c e 的由来。因为这个问题和c o o k i es e s s i o n p e r s i s t e n c e 很相似,所以后面只研究 如何解决c o o k i e 的问题。 1 0 基于集群系统的内容交换器的研究与实现 3 数据转发机制 3 1 引言 当交换器根据需求选定要调度的服务器之后,就要对客户端和服务器的数据进行转 发。后面将介绍5 种数据转发机制,分别从以下方面分析各机制的优劣: 1 系统需求:是否满足基于h t t p 协议的数据交换需求。 2 传输效率:交换器进行数据转发的效率。 3 系统实现:系统实现的难易程度。 4 可扩展性:所支持服务器的数量的大小。 5 系统部署:系统部署和升级的复杂程度。 3 2 数据转发机制 3 2 1a p p l i c a t i o n l a y e rp r o x y :应用层代理 1 2 】 这是最容易实现的一种机制,主要利用操作系统为用户提供的s o c k e t 接口,在用户 空间来实现数据的交换。其工作流程如下: 1 交换器在用户空间创建s o c k e t ,来监听客户的请求。 2 客户端和交换器完成t c p 三次握手,建立一个t c p 连接。 3 客户端发送h t t p 请求,交换器在用户空间进行h t t p 头的解析工作,调度并 最终选择一台服务器。 4 交换器和服务器建立另一个t c p 连接,把h t t p 请求发送给服务器。 5 服务器发送响应数据报给交换器。交换器在用户空间接收服务器的响应数据, 并发送给客户端。 6 交换器随后利用两个连接,进行客户端和服务器之间的数据转发工作。 7 当任一端的连接关闭后,交换器结束另一端的连接,完成此次数据传输。 这种机制的优点是应用层程序不需要涉及底层的协议,实现起来简单方便;利用标 准的b e r k e l e y s o c k e t a p i 实现,可移植性强:能满足部分h t t p 协议交换的需求。但同 时缺点也很明显: 1 数据在交换器上转发时,要经过t c p i p 协议栈两次,而且交换器要进行两次 用户态和核心态的切换,来完成内核空间和用户空间之间耗时的数据拷贝操 作,致使数据的传输性能较差。 2 在实现上往往要利用多进程或者多线程模型来处理多个并发请求,这会导致大 量进程消耗系统资源,降低了交换器处理数据的速度。 这方面的代表软件有s q u i d ,它通过有效的缓存技术和特别的0 处理,间接的解 决了传输性能的问题,在客户端的c a c h e 服务和小规模服务器集群方面,得到广泛的应 用。 基于集群系统的内容交换器的研究与实现 3 2 2t c p s p l i c i n g 1 4 】:t c p 粘接 t c p s p l i c i n g 是为了提高应用层代理的传输性能两提出的一种方法。传统的应用层 代理是在用户空间接收和发送数据,t c p s p l i c i n g 不同之处在于,通过修改核心的t c p i p 协议栈,使得交换器可以让两个t c p 连接直接在p 层转发数据,大大减少了拷贝到用 户空间的次数,这样就有效的提高了数据交换的效率( 如图3 1 所示) 。t c p s p l i c i n g 的 处理流程如下: 1 交换器在用户空间创建s o c k e t ,来监听请求。 2 客户端和交换器完成t c p 三次握手,建立一个t c p 连接。 3 客户端向交换器发出h t t p 请求,交换器在用户空间接收并解析此请求,调度 并最终选择台服务器。 4 交换器和服务器完成t c p 三次握手,建立另一个t c p 连接,交换器通过系统 调用,把两个t c p 连接粘接在一起。 5 交换器在用户空间向服务器发送请求,随后的数据处理过程都在内核空间完 成。 6 内核空间的代码处理两个t c p 连接的数据交换和结束处理。主要包括p 报头 和t c p 报头的修改,转发数据等。 图3 1 应用层代理、t c p 粘接和内核网关技术比较 f i g u r e3 1c o m p a r e o f a p p l i c a t i o n p r o x y , t c ps p l i c i n ga n d k e r n e l g a t e w a y t c p s p l i c i n g 在如下3 方面有很大的提高i l 副: 1 性能:使用t c ps p l i c i n g 的代理就如同一个3 5 层的路由器,两个t c p 连接被 s p l i c e d 后,它的数据传输过程就不涉及到用户层的处理,减少了传输的复杂性 并增加了吞吐量。 2 更少的存储空间:使用t c ps p l i c i n g 的代理只需要维护更少的t c p 状态信息, 并且代理不需要缓冲任何数据包。 3 更好的端到端的连接语义:t c ps r i l i c i n g 允许连接的两端进行端对端的通信, 同时允许控制信息也是端到端的传输。 苎三叁登墨竺竺塑堡塞垫璺堕! 塞兰壅里 这种机制虽然在性能上比应用层代理要高很多,却依然有如下缺点: 1 在第一次解析肿p 报头和调度服务器时,仍然需要应用层的程序来参与,这 就要进行两次内核空间和用户空间的数据拷贝( 接收请求和发送请求各一次) ; 而在使用多进程和多线程模型时,也会带来一定的性能损失。 2 当两个t c p 连接一旦被s p l i c e d 后,交换器就失去了对t c p 连接的控制,导致 无法继续支持基于u r l 的数据交换。 3 交换器仍然需要维护两个t c p 连接状态,占用了一定的资源。 3 2 3k e m e l g a t e w a y :内核网关技术 如图3 1 所示,k e r n e lg a t e w a y 和应用层代理机制的方法类似,但是它完全运行在 o s 的内核空间,直接利用内核层的s o c k e t a p i 完成t c p 连接和数据转发操作,这就避 免了内核空间和用户空间的数据拷贝过程,大大提高了数据交换的效率。其处理流程如 下: 1 交换器在内核空间创建s o c k e t ,来监听客户的请求。 2 客户端和交换器完成t c p 三次握手,建立个t c p 连接。 3 客户端发送h t t p 请求,交换器在内核空间进行h t t p 头的解析工作,调度并 最终选择一台服务器。 4 交换器和服务器建立另一个t c p 连接,把h t t p 请求发送给服务器。服务器发 送响应数据报给交换器。 5 交换器在内核空间接收服务器的响应数据,并发送给客户端。 这种机制的优点很明显:实现简单,因为利用了内核的s o c k e t a p i ,因此不需要处 理低层数据报,只需关注应用层的数据;所有工作都在内核空间完成,处理效率和传输 效率都相应提高。但是,在实现上需要内核支持线程来处理两个或多个s o c k e t ,有的 o s 上并不支持这些,影响了可移植性和通用性。 3 2 4d e l a y b i n d i n g :延迟连型1 6 1 这种机制的工作原理来源于n a t ( n e t w o r k a d d r e s st r a n s l a t i o n ) ,在数据转发阶段, 对口头和t c p 头的处理类似于t c ps p l i c i n g ,它的流程如下: 客 i 燃。 丽 画 户 么 _ j 嚣 薯按 e 薹 一 口 旦 图3 2d e l a yb i n d i n g 第一步 f i g u r e3 2t h e f i r s ts t e po f d e l a y b i n d i n g 墨三墨堂墨堡箜塑查窒垫堡塑堡窒兰壅翌 1 如图3 2 ,交换器和客户端进行t c p 的三次握手操作时,在自己的缓冲区队列 里保存初始t c p 的s y n 报文。 客 4 黼 蠼向 户 扑 薯 i 呈卜一 口 图3 3d e l a yb i n d i n g 第二步 f i g u r e3 3t h es e c o n ds t e

温馨提示

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

评论

0/150

提交评论