(通信与信息系统专业论文)instlink服务器系统的改进与实现.pdf_第1页
(通信与信息系统专业论文)instlink服务器系统的改进与实现.pdf_第2页
(通信与信息系统专业论文)instlink服务器系统的改进与实现.pdf_第3页
(通信与信息系统专业论文)instlink服务器系统的改进与实现.pdf_第4页
(通信与信息系统专业论文)instlink服务器系统的改进与实现.pdf_第5页
已阅读5页,还剩60页未读 继续免费阅读

(通信与信息系统专业论文)instlink服务器系统的改进与实现.pdf.pdf 免费下载

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

文档简介

摘要 互联网的高速发展使人们对即时通信应用的需求更加强烈,同时也推动即时 通信业务向多样化发展。即时通信市场迅速发展的同时,用户数目的增长以及业 务需求的不断提高为即时通信服务器带来了显著的压力,如何构建高性能、可扩 展性的服务器系统成为了一项具有挑战性的任务。 论文从服务器系统设计所必须考虑的协议、实现机制及体系结构三个方面入 手,深入研究了高效率、高可扩展性的服务器系统的实现机制。系统的分析了 i n s t l i n k 服务器系统的体系结构,并提出了性能优化方案。方案利用完成端口模 型和线程池等机制设计出一套高效的网络通信模型,并通过封装成反应器模型使 其与i n s t l i n k 服务器系统融合,使系统能够更好的支持大规模高并发的用户。 关键词:即时通信x m p p 完成端口服务器 a b s t r a c t r a p i dd e v e l o p m e n to ft h e i n t e r n e tm a k e st h ep e o p l ei n t e n s ed e m a n df o ri m ( i n s t a n tm e s s a g i n g ) a p p l i c a t i o n , a n dp r o m o t e si n s t a n tc o m m u n i c a t i o nb u s i n e s s t o d i v e r s i f i c a t i o na st h es a m et i m e h o w e v e r , w i t ht h ei n s t a n tc o m m u n i c a t i o nm a r k e t f l o r e s c e n td e v e l o p i n g , t h en u m b e ro fu s e r si n c r e a s e sa n dt h en e e df o ri n s t a n tb u s i n e s s i m p r o v e sa sw e l l ,w h i c hb r i n gs i g n i f i c a n tp r e s s u r ef o rt h e i n s t a n tc o m m u n i c a t i o n s e r v e r h o wt oc o n s t r u c tah i 曲p e r f o r m a n c ea n ds c a l a b i l i t ys e t w e rs y s t e mb e c o m e sa c h a l l e n g i n gt a s k c o n s i d e r i n gt h ep r o t o c o l ,r e a l i z a t i o nm e c h a n i s ma n ds y s t e m s t r u c t u r ef o ra d e s i g n e ds e r v e rs y s t e m ,t h i st h e s i sm a k e sad e e pr e s e a r c ho nh i g he f f i c i e n c ya n dh i g h e x p a n s i b i l i t ys e r v e rs y s t e mr e a l i z a t i o nm e c h a n i s m b a s e do na n a l y z i n gt h es t r u c t u r eo f i n s t l i n ks e r v e rs y s t e m ,ah i g hp e r f o r m a n c es c h e m ei sp r o p o s e d ,w h i c hc a nm a k et h e s y s t e mt ob e t t e rs u p p o r tl a r g e - s c a l e dh i g hc o n c u r r e n tu s e r s t h ep r o p o s e ds c h e m e su s e c o m p l e t i o np o r tm o d e la n dt h r e a dp o o lm e c h a n i s mt od e s i g nas e to fe f f e c t i v en e t w o r k c o m m u n i c a t i o nm o d e l ,a n de n c a p s u l a t ei n t oar e a c t o rm o d e lt oi n t e g r a t et h ei n s t l i n k s e r v e rs y s t e m k e y w o r d s :i n s t a n tm e s s a g i n g x m p pi o c ps e r v e r 第一章绪论 第一章绪论 1 1 研究的背景和意义 即时通信是一种实时的互联网交流方式。第一个i m ( i n s t a n tm e s s a g i n g ,即时 通信) 应用软件i c q 诞生于1 9 9 6 年。经过十多年的迅猛发展,即时通信已经成为 了一项主流的互联网应用【l l 。目前,大多数即时通信软件还集成了更多其他的服 务,如文件传输、语音视频、新闻订阅、网络游戏服务等等 2 1 。i m 技术已经不仅 仅是私人之间日常交流的简单工具,它逐渐成为互联网信息平台的重要组成部分。 i m 的发展和普及同其自身所具备的特征有着必然的联系,即时通信具有实时性、 在线性【3 】与交互性等特征。满足了人们在日常生活与办公环境中交流与协作的需 要,它的一些优势是面谈、电话、电子邮件等其他交流方式所不具备的。 第2 8 次中国互联网发展状况统计报告指出,2 0 1 1 年上半年,受众最广 的前五大网络应用分别为搜索引擎( 7 9 6 ) ,即时通信( 7 9 4 ) ,网络音乐( 7 8 7 ) , 网络新闻( 7 4 7 ) 和博客个人空间( 6 5 5 ) 。从数据看,当前我国网民的互联网应 用主要呈现出以下特点:即时通信使用率增加,提升为第二大应用:目前即时通 信用户已经达到3 8 5 亿,应用使用率从2 0 1 0 年底的7 7 1 提升到7 9 4 ,半年用 户增长9 2 。即时通信已经提升为用户规模第二大的应用类型,仅次于用户达到 3 8 6 亿的搜索引擎。另外根据艾瑞咨询预测,2 0 1 1 至2 0 1 4 年即时通讯的用户规 模仍会继续增长,但速度会有所趋缓,2 0 1 4 年,即时通讯用户规模将达到6 3 亿 人,届时在全体网民中的占比将升至7 8 9 ,即时通讯用户在全体网民中的普及 程度将继续攀升。在个人即时通信市场发展壮大的同时,企业用户对企业即时通 讯的认知度和接受度也正在提高 4 1 。如今即时通讯已成为企业沟通的重要工具。 即时通信市场的迅速发展使得建设和维护大容量即时通信系统成为了一项挑 战性的任务。一方面,用户的爆炸性增长对即时通信系统造成的压力越来越大, 服务器作为即时系统的核心承受的压力更是巨大,很容易成为整个系统的瓶颈。 因此高性能成为服务器的一个重要指标。另一方面,各种新业务层出不穷,如何 使服务器便捷的支持各种新业务,提高系统的可扩展性也成为服务器设计者所面 临的一大挑战。 当前,如何构建大容量、高可扩展的即时通信系统已经成为了一个紧迫的课 题。而这其中关键是构建大容量、高可扩展性的服务器平台,因此对服务器平台 的设计成为即时通信系统研究的重要方向。 2i n s t l i n k 服务器系统的改进与实现 1 2 1 即时通信协议发展 1 2 发展和研究现状 现在的i m 系统正在改变人们的工作方式,但是协议的非标准化越来越成为 一个重要的问题,为了解决即时通信的标准问题,i e t f ( i n t e r n e te n g i n e e r i n gt a s k f o r c e ,互联网工程任务组) 成立了专门的工作小组对相关协议进行研究和开发。m 的协议标准有四种:即时通信和出席协议i m p p ( i n s t a n tm e s s a g i n ga n dp r e s e n c e p r o t o c 0 1 ) 、出席和即时通信协议p r i m ( p r e s e n c ea n di n s t a n tm e s s a g i n gp r o t o c 0 1 ) 、 针对即时通信和出席扩展的会话初始协议s i m p l e ( s e s s i o ni n i t i a t i o np r o t o c o lf o r i n s t a n tm e s s a g i n ga n dp r e s e n c el e v e r a g i n ge x t e n s i o n s ) 以及可扩展消息处理与出席 协议x m p p ( e x t e n s i b l em e s s a g i n ga n dp r e s e n c ep r o t o c 0 1 ) 。最初研发i m p p 是为了创 建一种标准化的协议,而到现在i m p p 已发展成为基本的协议单元,定义了所有 即时通信协议应支持的核心功能集。x m p p 和s i m p l e 在实现i m p p 描述的规范 之上形成了即时通信的基本架构。p r i m 与x m p p 和s i m p l e 类似,但是目前已 经不再使用 2 8 1 。 s i m p l e 是目前制定得较为完善的一个协议体系。正如其名字所指示的那样, s i m p l e 的目的是通过s i p ( s e s s i o ni n i t i a t i o np r o t o c 0 1 ) 协议实现分布式的信息表示。 其研究目标是将s i p 协议应用于即时消息与在线检测业务【2 9 】。它对s i p 协议进行 了两个方面的扩展:对于在线检测的扩展和对于即时消息传递的扩展,目前, s i m p l e 协议已经被定义为一种建立即时信息会话的方法。m i c r o s o f t 和i b m 在其 即时信息系统中采用了该协议。对于s i m p l e 协议指责较多的是其融合语音和即 时信息的效率不高。 j a b b e r 开放源代码社区于1 9 9 9 年开发了x m p p 的基本语法语义。2 0 0 2 年, x m p p 工作组被授权开发和改编j a b b e r 协议以适应i e t f 的消息和出席信息技术, x m p p 是一种开放的基于x m l 的协议体系,它继承了x m l 环境的灵活性,采用 了分布式的网络体系架构,模块化可扩展的系统架构,使得基于它的开发和功能 扩展变得简单。目前,x m p p 协议体系在即时消息、交互媒体、多代理系统、云 计算等场景中都得到了广泛的应用【3 0 l ,从产业上看,s u n 、o r a c l e 和g o o g l e 都在 其i m 系统中使用这一协议,这将使得x m p p 的应用越来越普及。 1 2 2 服务器软件研究现状 作为一种网络应用,即时通信服务器与其他网络应用- 如w e b 应用相同,也 面临着网络瓶颈和服务器性能瓶颈问题,近年来,随着网络硬件的迅速发展,网 络带宽的瓶颈效应逐渐减弱p 1 6 1 ,服务器的性能问题逐渐突显出来。面对着用户 第一章绪论 3 量猛增对服务器性能的挑战,近年来,大量的研究人员开始致力于改善服务器性 能的研究。 对服务器性能问题的解决一般可以从硬件和软件两个方面入手,目前,主流 的硬件厂商都有自己的专业的服务器硬件解决方案,这些机器通常都配置了多核 的c p u ,大容量的内存,但是通过硬件配置提高即时通信服务器系统的性能通常 需要很高的成本投入,并且由于软件设计的问题可能会导致硬件资源的闲置而不 能达到预期的目的,因此,改善硬件配置并不能从根本上解决服务器性能问题。 目前,从软件设计层面入手构建高性能服务器系统是一个主流的研究方向, 而这又分为两种方式,一种是从体系结构入手,将服务器各种逻辑处理的实现相 分离,降低某个单独模块的处理负载,充分利用网络及单机性能优势,实现可扩 展的分布式系统1 7 j 。另一种是充分挖掘单个服务器硬件和软件的潜力,使其对于 特定的服务发挥最大的效能。 现今服务器结构主要分为两大类,一种是集中式的服务器结构,另一种则是 分布式服务器结构。集中式的结构将所有业务逻辑集中在一起,可管理性程度高, 但是过分依赖单台服务器性能,比较适合对扩展性要求不高的小规模应用场景; 而分布式结构通过分散业务逻辑而达到高可扩展性,成为构建大规模服务器系统 的解决方案,目前,腾讯、百度等拥有海量用户群的服务供应商都已经有了分布 式的服务器架构方案。 对于单个特定的服务,目前服务器软件的设计方法有: 多进程方法 多进程方法瑙j 的主要思想是一个进程服务一个用户,每个进程都被用来顺序 执行客户请求中的各个基本步骤,处理完毕后才会继续接受并处理新的用户请求, 多进程方法一般采用同步i o 的方式,编程实现比较容易。系统中,每个进程都 会有自己的私有地址空间,不会存在进程间同步问题。但它的缺点也是显而易见 的。通常系统中能同时存在的进程数是有限的。频繁的进程调度和上下文切换也 给操作系统造成了极大的负担。所以这种结构在负载小的情况下效率较高,当负 载增大,甚至遭遇巨量尖峰负载时,将引起服务器整体性能急剧下降。 多线程方法 多线程结构和多进程结构两者主要的区别在于:所有线程可以共享全局变量。 由于多线程结构使用一个共享地址空间,所以适用于那些依靠共享状态变量实现 的优化技术。但是,线程之间必须采用同步机制来控制共享数据的存储。要想实 现多线程结构的话,操作系统必须提供内核级的线程支持。也就是说,当一个线 程由于i o 操作而发生阻塞时,同一地址空间内的其它处在可运行状态的线程仍 然可被操作系统调度执行。 事件驱动方法 4 i n s t l i n k 服务器系统的改进与实现 事件驱动方法【9 】的主要思想是系统中有少量的进程或线程专用于非阻塞式 i o ,进程或线程在i o 操作后立即返回。系统通过事件通告机制通知i o 进程或 线程操作己就绪。服务器进程可对事件做出响应,而一般可保证不会阻塞。事件 驱动方法的主要优点是由于只使用少量的进程或线程,在高并发时只有少量的上 下文切换开销。 本文所研究的i n s t l i n k 系统基于x m p p 协议框架开发,在业务逻辑处理上采 用了分布式的体系结构,对于网络通信模块,则设计并实现了一套由线程池和完 成端口模型封装的事件驱动机制,从而实现了一个可扩展的高性能服务器系统。 1 3 论文的主要工作 论文的课题来源于西安电子科技通信软件实验室的i n s t l i n k 多媒体通信系统 项目。i n s t l i n k 系统是一个集端对端和群组的数据通信、音视频通信、文件传输、 多方协作和信息空间等应用于一身的多媒体统一通信平台。 论文从设计服务器所必须考虑的协议、实现机制及体系结构三个方面入手, 深入研究了高效率、高可扩展性的服务器系统的实现机制。在详细了解当前流行 的网络通信协议的基础上,对即时通信服务器端的程序设计框架进行了深入研究, 在对i n s t l i n k 服务器系统进行研究和分析之后,针对i n s t l i n k 服务器系统设计了 一套基于完成端口模型的系统框架,在此基础上对i n s t l i n k 多媒体通信服务器系 统进行了改进和优化。 1 4 论文的内容安排 本文按照服务器设计所必须经历的协议选择、底层i o 设计、系统结构等几 个方面进行组织。以下是论文各章的安排: 第一章,介绍了论文的研究背景,并对论文的研究工作进行了简单介绍。 第二章,描述了即时通信系统体系结构的演化,并对基于x m p p 协议的即时 通信系统进行了介绍。 第三章,研究了构建高性能的服务器系统所必须考虑的性能指标和关键技术 并给出了基于完成端口的高效网络通信模型框架。 第四章,从i o 实现机制的角度,以完成端口为基础为服务器底层设计了一 套网络通信框架并实现。 第五章,从系统结构的角度对i n s t l i n k 服务器系统的设计及实现进行了详细 介绍。 第六章,总结本文的主要内容和贡献,并在此基础上对下一步的工作做出一 些展望。 第二章即时通信系统技术背景 第二章即时通信系统技术背景 2 1 即时通信系统体系结构 由于计算机硬件设备的多样性以及不均衡性,处于通信体系的双方往往在带 宽、计算资源方面有着不对称性,为了让计算资源得到充分利用,人们提出了客 户机服务器( c l i e 州s e n ,e r ) 模型【1 0 1 ,简称c s 模型,c s 计算技术在信息产业中有 着非常重要的地位,在目前的互联网服务中占据了绝大多数。 c s 模型是一种非对称的编程模型。它的基本思想是把应用按其功能划分成 为不对等的两个部分,分别在不同的计算机上运行,并通过相互的分工合作来实 现完整的系统功能。其中服务器用来响应客户请求并为客户提供固定的服务;客 户机程序用来向服务器提出请求或要求某种服务。这种模式需要通过服务器对网 内的客户进行信息集中存储、通讯协调等。通过它可以充分协调两端的硬件环境, 将任务合理分配到c l i e n t 端或者s e r v e r 端来实现,从而使各部分都各尽其能。 客户机和服务器都是独立的计算机。当一台连入网络的计算机向其他计算机 提供各种网络服务时,它就扮演着服务器的角色。而那些消费服务的计算机则被 叫做客户机。严格说来,客户机服务器模型并不是从物理分布的角度定义的,它 所体现的是一种网络数据访问的实现方式。采用这种结构的系统目前有着非常广 泛的应用。并随着网络规模的扩张和新技术的涌现而产生了一系列的变化。 2 1 1 集中式结构 冈 i 一 客户端 o 图2 1 集中式c s 模型结构 传统的c s 模型采用的是集中式的体型结构,如图2 1 所示,在这种模型中, 6i n s t l i n k 服务器系统的改进与实现 服务器处于一个中心地位。整个系统的核心逻辑都放在服务器端实现,服务器负 责对系统中所有用户的管理和控制,用户之间的所有数据交互都通过服务器转发。 集中式系统的优势在于管理的集中化,能够对整个系统进行有效的控制。很 多互联网服务比如e m a i l 、f t p 等都采用了这种结构实现,但是集中式的模式会 造成服务器端设计的复杂性,特别是像即时通讯这类具有社区性、必须同时为大 量用户提供服务的服务器。即时通讯服务器是数据中心和客户交互的中介,需要 同时应对众多客户的请求,如果所有节点之间的信息交换都要经过服务器,服务 器本身就很容易成为限制系统工作效率和规模扩展的瓶颈。随着因特网在规模上 不断膨胀、在功能上不断扩展,服务器的负担越来越重,集中模式的低效率与难 以扩展的缺陷暴露出来,采用传统的集中式模型在服务器性能上面临着严峻的挑 战。 用户数量的上升以及通信业务的多样化,包括话音视频等业务的出现,使即 时通信服务器所承担的压力变得越来越大,逐渐成为整个系统的瓶颈所在,于是 人们在传统的集中式c s 模式上又引入了p 2 p ( p e e rt op e e r ,点对点) 技术i i ,p 2 p 技术又称对等网络技术,相对于c s 架构集中式的思想,p 2 p 技术是依赖网络中 参与者的计算能力和带宽,把计算任务分布到网络参与者中。引入p 2 p 技术后的 结构化对等网络即时通信系统架构如图2 2 所示。 r i _ j 客户端 o 服务器 媒体流 图2 2 结合p 2 p 的集中式c s 模型结构 结合p 2 p 的集中式c s 模型的思想是将小容量的信令流和大容量的媒体流分 离,对于用户之间的话音视频等大数据量的媒体通信,可以直接进行点对点的传 输而无需服务器转发,这样不但减少了信息传递过程的延迟,还可以减轻服务器 的负担,使服务器可以更加专注于处理客户的请求逻辑。基于这种模型也产生了 一系列优秀的网络应用,比如n a p s t e r 、b i t c o m e t 等。 第二章即时通信系统技术背景 2 1 2 分布式结构 尽管p 2 p 技术能够在一定程度上减轻服务器的负担,但用户数的爆炸性增长 对服务器资源的消耗也是巨大的,单一的服务器很容易达到其性能的瓶颈,针对 这种情况,人们又提出了一种新的分布式的网络拓补结构,如图2 3 所示。 冈 i 一 客户端 o 服务器 客户端客户端连接 客户端服务器星型结构 服务器服务器对等结构 客户端客户端对等结构 客户端服务器连接 服务器服务器连接 图2 3 分布式模型结构 这种分布式的体系结构是结合了c s 模式和p 2 p 技术而产生的一种更适合大 规模用户的体系架构,在这种架构中,没有了单一的中心服务器,取而代之的一 组业务服务器,这些服务器分别处理各自的业务逻辑,服务器之间使用低延迟、 高带宽的网络相互连接,他们之间的数据交换采用对等网络技术或c s 计算技术。 随着网络的不断发展,即时通信用户的数量也急剧上升,服务器的处理能力受到 了极其严峻的挑战。提高单台服务器的硬件性能已经不能满足用户日益增长的需 求对系统可扩展性提出的要求。而分布式体系结构具有高可扩展性和高性价比, 成为大规模即时通信系统的主流解决方案。 随着现代计算机体系朝着并行性的方向发展,网络服务也逐渐朝着并行化、 分布式的方向演进,基于分布式计算和分布式文件系统思想的云计算技术已经开 始显示出蓬勃的生命力和巨大的影响力,而x m p p 协议提出的系统框架正是采用 了分布式的结构,因此x m p p 协议很适合构建大规模的即时通信系统。 2 2 基于x m p p 协议的即时通信系统 x m p p ( e x t e n s i b l cm e s s a g i n ga n dp r e s e n c ep r o t o c 0 1 ) r 1 - 扩展消息与出席协议,是 8 i n s t l i n k 服务器系统的改进与实现 一种基于可扩展标记语言x m l 的开放式协议。x m p p 协议可以用来处理实时性 的消息请求和响应服务,利用其还可以实现不同种类的i m 系统间相互通信。 x m p p 协议采用的是一种类似于e m a i l 系统【1 2 】的客户端服务器架构,它采用 x m l 流传输协议消息,从而使得其能够应用在一个比其它网络通信协议更简便更 规范的基础上。x m p p 协议的核心是在网络上分片断的发送x m l 流的协议。这 个流协议是x m p p 的即时消息指令的传递手段,也是一个非常重要的可以被进一 步扩展和利用的网络基础协议。 x m p p 常被用来和s i p 协议做比较,s i p 协议首先是一个会话建立及管理的 协议,后来才增加了对i m 以及出席信息的支持,而x m p p 对i m 和出席信息提 供了原生的支持【l 引。 2 2 1 系统框架 x m p p 系统的整体框架如图所示,其中包含了三种实体( 不包括外部i m 服 务网络) ,它们分别为x m p p 服务器,x m p p 协议网关和x m p p 客户端,通过这 些实体的相互配合构成x m p p 服务网络。x m p p 服务器之间可以通信,x m p p 协 议网关负责将x m p p 系统与非x m p p 系统互联,从而形成了包含x m p p 服务器 的分布式网络。网络上的客户端可以发送消息给同一个服务器或i n t e m e t 上的其 他i m 服务网络中的用户。 图2 4 x m p p 框架 x m p p 服务器 x m p p 服务器在x m p p 通信中扮演了一个智能抽象层的角色,它主要负责管 理发出的连接以及与其他实体间的会话,通过x m l 流与授权的客户端、服务器 第二章即时通信系统技术背景 9 或其他实体进行通信。服务器也充当了存储服务器的功能,大部分客户端所使用 的数据也存储于服务器上。 x m p p 协议网关 网关是一种具有特殊用途的服务器端的服务,它承载着与其他i m 服务网络 互联互通的功能,主要作用是把x m p p 协议消息翻译成外部( 非x m p p 系统的) 消息,并把外界服务器返回的消息翻译成x m p p 消息。例如到e m a i l ,s m s 等的 网关;或者和别的i m 服务器的网关,比如i c q 、m s n 等。 客户端 客户端与服务器相连接,通过x m p p 协议来获取服务器提供的全部功能。多 个具有不同资源( 比如通过不同设备登录或者在不同地点登录) 的客户端可以同 时登录且并行的连接到同一个服务器,不同资源的客户端使用x m p p 的地址资源 标识符来区分,如 和 。 x m p p 网络 每个服务器都由一个唯一的网络地址来标识,服务器之间的通信通过c s 协 议的直接扩展进行,整个x m p p 网络是由多个互通的服务器构成的。例如, 可以和 交换出席信息和其他信息。 i 强c 3 9 2 0 中定义了x m p p 服务器的标准地址。x m p p 服务器之间通过相互寻址而 构成一个特定的x m p p 网络。 2 2 2 寻址方案 在x m p p 网络中,通过x m p p 协议通信的实体都具有一个唯一的地址标识, 这个地址标识一般被叫做j i d ( j a b b e ri d e n t i f i e r ) ,以类似n o d e d o m a i n r e s o u r c e 的 形式出现。它由三部分组成:节点标识符( n o d e ) ,域名标识符( d o m a i n ) 以及资源标 识符( r e s o u r c e ) 。比如j u l i e t e x a m p l e c o r n h o m e 就是一个合法的j i d ,j i d 地址标 识了用户的身份和路由信息。 域名 域名部分指定了实体连接的x m p p 服务器,每个可用的x m p p 服务器都拥有 一个完整域名,可在d n s ( d o m a i nn a m es y s t e m ,域名系统) 中查找。 节点标识符 节点标识符是一个可选的二级标识符,它放在域名标识符之前并用“ ”与 域名标识符分隔。通常情况下节点标识符和域名相组合,代表一个向服务器或网 关发出请求和网络访问的实体。 资源标识符 资源标识符是一个可选的三级标识符,它放在域标识符后面并用“”与域名 1 0 i n s t l i n k 服务器系统的改进与实现 标识符分隔。它通常代表一个特定的会话、连接或属于一个具有节点标识符的实 体的对象。资源的概念用于识别多个相同用户以不同的身份连接服务器。对于每 个用户来说,它的每个资源必须是唯一的。例如,两个不同的用户可以都有“h o m e ” 资源,但是同一个用户不能同时以两个实例用“h o m e 资源在线,而 j u l i e t e x a m p l e c o r n h o m e 与j u l i e t e x a m p l e c o r n w o r k 是同一个用户的不同资源, 因此可以同时登录同一个服务器。r e s o u r c e 是可选项目,它被用来识别属于用户 的特殊对象,比如用户设备或者位置。在有些情况下,消息可以直接发送到一个 特定的资源上,但是一般来说,系统会为用户的每一个资源设定优先级。这样, 消息会按照资源的优先级别高低来选择路径。若一条发往 j u l i e t e x a m p l e c o r n h o m e 的消息,由于没有被确切指定资源,该消息将被发往到 拥有最高优先级的终端上,如j u l i e t e x a m p l e c o r n w o r k 上( 其必须具有最高优先 级) 。 2 2 3x m p p 数据传输 2 2 3 1x m l 流与x m l 节 x m p p 是基于x m l 流的协议,它在网络上分片断地发送x m l 流,因为x m p p 信息不仅可以是简单的文本,而且可以携带复杂的数据或各种格式的文件。x m p p 的这种功能大大扩展了即时通信的范围。 为了使在线用户之间实现快速、异步的信息交换,协议定义了x m l 流和删l 节这两个概念。 x m l 流的定义: 一个x m l 流是网络中两个实体之间进行信息交换的容器。一个x m l 流以 为标签( 带有合适的属性和一些名字空间的声明) 为开始并以一个明确的 标签结束。在流的整个生命周期,初始化它的实体可以通过流发送大量 的x m l 元素,用于流的握手或x m l 节( 在这里指符合缺省名字空间的元素,包 括 、 或 元素) 的传输,从初始化实体发送出去的流可 以看成一个初始化实体和接收实体之间的一次会话。初始化流建立了一条从初始 化实体到接收实体之间的通道。为了进行信息交换接收实体必须返回一个响应流。 x m l 节的定义: 一个x m l 节是一个实体通过x m l 流向另一个实体发送的结构化信息中的一 个离散的语义单位。一个x m l 节直接存在于根元素 的下一级。任何x m l 节都是从一个x m l 流的下一级的某个打开标签( 虫i i ) 开始,到相应的 关闭标签( 如 ) 结束。一个x m l 节也可以包含子元素( 伴随着一定的 第二章即时通信系统技术背景 l l 属性,元素和x m l 数据) 来传输一些必要的信息。在x m p p 协议中定义了三个 x m l 节,分别为 吞吐量处理能力 处理能力又叫吞吐量,指的是单位时间内处理的用户请求数量。通常情况下, 吞吐量用请求数秒来衡量。从业务角度看,吞吐量也可以用同时在线人数来衡量。 响应时间 响应时间是可以判断一个系统是否存在性能瓶颈的最直观的要素。响应时间 包括用户请求在网络上的传输时间以及在服务器上处理时间,响应时间一般包括 最大响应时间和平均响应时间。如果用户数上升到一定程度后,系统的平均响应 时间高于最大响应时间,则可以判断系统的性能存在瓶颈,需要在硬件或者软件 结构上对系统进行优化。 并行处理能力 并行处理( p a r a l l e lp r o c e s s i n g ) 是计算机系统中同时利用多个c p u 的一种计算 方法,其主要目的是节省大型和复杂问题的计算时间。在服务器系统的设计中, 采用高效的网络通信模型和并发设计模型可以提高其并行处理能力。通常服务器 系统并行处理能力与系统的吞吐量成正比。 在目前对服务器系统的研究方向中,无论是从实现机制还是从体系结构入手, 目的和核心都是研究如何提高服务器的并发处理能力,从而减小服务器系统对用 户请求的响应时间。而在实际应用中,影响服务器性能的因素主要包括了软件瓶 颈和硬件瓶颈,包括了i o 瓶颈、c p u 计算瓶颈、网络带宽瓶颈【2 l l 等,如何消除 这些瓶颈的影响使服务器系统保持稳定高效的运行变成为高性能服务器开发的关 键技术。 1 6i n s t l i n k 服务器系统的改进与实现 3 2 高性能服务器开发的关键技术 上一节介绍过影响服务器性能的因素存在于软件和硬件两个方面,与硬件瓶 颈相比,软件瓶颈是服务器系统开发中更应该着重考虑的问题,主要的原因在于: 1 1 通过良好的软件设计而得到的系统增益往往高于对提升硬件设备而获得的系统 性能提升;2 ) 高的硬件配置意味着高投入和高维护成本,并且往往会面临由于软 件设计不合理而出现的硬件资源闲置问题。 目前在服务器系统的开发过程中主要通过预读取、预创建和缓存( c a c h i n g ) 等 机制提高系统的性能,从而减少系统对用户请求的响应时间。这些技术归结起来 主要有线程池、对象池、缓存机制等。池类技术的主要思想是通过对资源的预分 配降低系统运行时开销从而提高系统性能,缓存机制则是通过对数据的预先读取 来解决c p u 和i o 的访问速度不匹配问题 2 2 j 。 3 2 1 线程池技术 目前大多数的服务器系统都有一个共同点,就是单位时间内必须处理数目巨 大的连接请求,但对请求的处理时间相对较短。在传统的多线程解决方案中,采 用的服务器模型一般是在接受到请求之后就创建一个新的线程并由新创建的线程 执行处理任务。待处理任务执行完毕后线程便退出,该策略可以叫做“即时创建, 即时销毁 。尽管与进程的创建比起来创建线程的时间已经缩短了很多,但是如果 线程执行任务的时间比较短但是需要执行的任务次数很频繁,那么服务器将处于 不断的创建并销毁线程的状态。 线程执行过程可以划分为三个过程,t l :线程创建时间;t 2 - 线程执行时间, 包括线程同步等时间,t 3 - 线程销毁时间。 可以得出线程本身的开销所占的比例为:( t i + t 3 ) ( t i + t 2 + t 3 ) 。如果线程执 行的时问很短而任务执行频率很高的话,这笔开销将是不可忽略的,线程间的切 换也会占用相当的c p u 时间而使服务器的吞吐量下降。 线程池技术的出现正是为了解决并发线程数量大而线程生存周期短的应用场 景下系统的性能问题,线程池基于预创建机制,在程序初始化时便创建一定数量 的线程,这些线程一般都处于阻塞状态,不消耗c p u 时间,只占用一定的内存空 间。有任务需要处理时,按一定的调度规则从池中选择一个空闲线程将其唤醒以 处理该任务,在处理完毕后该线程并不退出,而使继续挂起等待下一次执行任务, 可以形象的认为线程返回了线程池。为了使系统能够适应大量的突发任务,一般 当线程池中的所有线程都被唤醒后,线程池可以自动创建一定数量的新线程用于 处理新到来的更多任务。当系统空闲时即大部分线程处于挂起状态时线程池再自 动销毁一部分其动态创建的线程以回收系统资源。通常,线程池中并发运行的线 第三章高性能服务器技术研究 1 7 程也是有上限的,如果需要同时运行的线程数目超过线程池的上限,那么新到达 的请求将会被拒绝或者等待。 通过预创建的机制,线程池将线程创建和销毁的开销分摊到了线程所处理的 具体任务之上,线程执行的次数越多则每个具体任务所分摊到的线程本身的开销 就越小,虽然这样带来了一些线程同步的开销,但是针对大多数应用来说是利大 于弊的。 对于服务器系统来说,其线程池框架一般分为以下几个部分: ( 1 ) 线程池管理器:用于创建并管理线程,向任务队列投递数据包等,并可以 动态增加工作线程。 ( 2 ) i 作线程:线程池中的线程,用于执行实际的逻辑处理。 ( 3 ) 任务接口:每个任务必须实现的接口,以供工作线程调度任务使用。 ( 4 ) 任务队列:提供一种缓存机制,用于存放从网络层接收的数据包。 3 2 2 对象池技术 所谓对象池技术就是程序通过系统的内存分配调用预先一次性的申请适当大 小的内存块,然后根据特定对象的大小,将该块内存分割成一个个大小相同的对 象。当对象池中没有空闲对象使用时,再向系统申请内存块进行补充。对象使用 完毕后不是进行销毁,而使直接放到对象池中,这种内存管理策略能有效地提升 程序运行时性能。 利用默认的内存管理函数n e w d e l e t e 或m a l l o c f r e e 在堆上分配和释放内存会 有一些额外的开销。系统在接收到分配一定大小内存的请求时,首先查找内部维 护的内存空闲块表,并且需要根据一定的算法( 例如分配最先找到的不小于申请 大小的内存块给请求者,或者分配最适于申请大小的内存块,或者分配最大空闲 的内存块等) 找到合适大小的空闲内存块四j 。如果该空闲内存块过大,还需要切 割成已分配的部分和较小的空闲块。然后系统更新内存空闲块表,完成一次内存 分配。类似地,在释放内存时,系统把释放的内存块重新加入到空闲内存块表中。 如果有可能的话,可以把相邻的空闲块合并成较大的空闲块。默认的内存管理函 数还考虑到多线程的应用,需要在每次分配和释放内存时加锁,同样增加了开销。 可见,如果应用程序频繁地在堆上分配和释放内存,则会导致性能的损失。 并且会使系统中出现大量的内存碎片,降低内存的利用率。默认的分配和释放内 存算法自然也考虑了性能,然而这些内存管理算法的通用版本为了应付更复杂、 更广泛的情况,需要做更多的额外工作。而对于某一个具体的应用程序来说,适 合自身特定的内存分配释放模式的自定义对象池则可以获得更好的性能 与系统直接管理内存相比,对象池在系统性能优化方面主要有如下优点: 1 8i n s t l i n k 服务器系统的改进与实现 ( 1 ) 针对特殊情况,比如需要频繁地分配或释放固定大小的对象时,不需要复 杂的分配算法和线程同步。也不需要维护内存空闲表的额外开销,从而获得较好 的性能。 ( 2 ) r h 于直接分配一定数量的连续内存空间作为内存块,因此一定程度上提高 了程序局部性能,从而提升了应用程序的整体性能。 ( 3 ) 比较容易控制页边界对齐和内存字节对齐,对内存碎片问题也有很

温馨提示

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

评论

0/150

提交评论