1、中图分类号:TP3 论文编号:10006GS1221388专业硕士学位论文社交游戏服务器端软件的设计与实现作者姓名 刘宗涛学科专业 软件工程指导教师 林广艳 教授林军 高工培养院系 软件学院Design and Realization of Control System Based on SOA A Dissertation Submitted for the Degree of MasterCandidate:Li MingSupervisor:prof.Lin JunCollege of SoftwareBeihang University, Beijing, China中图分类号:TP3
2、论文编号:10006GS1221388硕 士 学 位 论 文社交游戏服务器端软件的设计与实现作者姓名 刘宗涛 申请学位级别 工程硕士指导教师姓名 林广艳 职 称 教 授指导教师姓名 林 军 职 称 高级工程师学科专业 软件工程 研究方向 移动云计算 学习时间自 2012 年 09 月 10日 起至 2015 年07 月 18日止论文提交日期 2015年 09 月 15 日 论文答辩日期 2015 年 00月 00 日学位授予单位 北京航空航天大学 学位授予日期 年 月 日关于学位论文的独创性声明本人郑重声明:所呈交的论文是本人在指导教师指导下独立进行研究工作所取得的成果,论文中有关资料和数据是
3、实事求是的。尽我所知,除文中已经加以标注和致谢外,本论文不包含其他人已经发表或撰写的研究成果,也不包含本人或他人为获得北京航空航天大学或其它教育机构的学位或学历证书而使用过的材料。与我一同工作的同志对研究所做的任何贡献均已在论文中做出了明确的说明。若有不实之处,本人愿意承担相关法律责任。学位论文作者签名: 日期: 年 月 日学位论文使用授权书本人完全同意北京航空航天大学有权使用本学位论文(包括但不限于其印刷版和电子版),使用方式包括但不限于:保留学位论文,按规定向国家有关部门(机构)送交学位论文,以学术交流为目的赠送和交换学位论文,允许学位论文被查阅、借阅和复印,将学位论文的全部或部分内容编入
4、有关数据库进行检索,采用影印、缩印或其他复制手段保存学位论文。保密学位论文在解密后的使用授权同上。学位论文作者签名: 日期: 年 月 日指导教师签名: 日期: 年 月 日I摘 要网络游戏已经成为互动娱乐产业乃至整个国民经济中上升速度最快的产业之一。国内自主研发的网络游戏产品数量和质量都在不断提升,众多科研院所也加入到相关技术领域(主要是图形学、信息安全)的研发队伍。社交游戏作为网络游戏中的重要组成部分也逐渐成为了一个研究热点。本文分析了社交网络游戏架构,重点对网络传输、服务集群技术、负载均衡技术、数据缓存技术深入探讨,并对若干关键技术进行了详细设计与实现。本文立足实际应用,针对参与研发的“塔防
5、三国志”游戏完成了以下研究工作:首先,本文介绍了社交游戏服务器端软件设计与实现的研究背景与研究意义,之后通过对国内外现状分析对比提出了本文的研究内容和研究方法,然后在此基础上对相关理论和关键技术进行了深入探讨,这其中包括了网络传输协议、线程池技术和阻塞队列、服务器集群技术、负载均衡技术、数据库及其缓存技术等。其次,本文根据社交游戏的特点,给出了本文社交游戏设计原则,根据这些原则,本文对游戏的功能服务器架构、软件架构、服务器集群方案、负载均衡方案、服务器集群中的HTTP管理等方面进行了详细设计。其中,本文将游戏服务器分为了数据服务器、数据缓存服务器、登陆服务器、大厅服务器、游戏服务器、中央控制服
6、务器、日志服务器等7 个不同功能的服务器组。在逻辑层次划分方面,参考了MVC的分层思想将软件分为了表现层、应用服务层、调度层、消息层、数据层。最后,本文介绍课题的平台原型的设计与实现,首先介绍了平台的运行环境,为 Flex+Java的运行环境,分析了Flex作为前台表形层技术的优势,接下来讲述了平台的各个模块的设计理念与重要技术的实现方案,包括了:登录服务模块、大厅服务模块、游戏服务模块、重要控制模块、日志服务模块、数据库服务模块、缓存服务模块。关键词:社交游戏、服务器、服务器集群、负载均衡 53Abstract Network games have become one of the fas
7、test rising industries in the area of interactive entertainment industry and the whole national economy. With development of the quantity and quality of online games, many research institutes with the relevant art (mainly graphics, information security) have joined the R & D team. The social gaming,
8、 as an important part of network game, is becoming a research hotspot.This paper analyzed the architecture of social network game, and focused on the technology of network transmission, service clustering technology, load balancing, data caching technology, then did the detailed design and implement
9、ation. The main research work are as follows:Firstly, this paper introduced the research background and significance of the project, and then on the basis of current research of social games server presented the research content and research methods. In addition, the paper had done depth discussions
10、 in related theories and key technologies, the key technologies including network transmission protocol, thread pool and blocking queue, server clustering technology, load balancing, database and caching technology. Secondly, according to the characteristics of the social game, this paper presented
11、the design principles, and then did the detailed design on the game server architecture, software architecture, server clustering solutions, load balancing scheme, server cluster management and other aspects of HTTP and so on. In this paper, the game server was divided into data servers, data cache
12、server, login server, lobby server, game servers, central control server, log servers. In terms of logic level classification, with reference to the hierarchical thinking MVC software, this paper frame was separated into the presentation layer, application service layer, scheduling layer, message la
13、yer, data layer.Finally, this paper introduced the design and implementation of the subject. This paper used Flex+Java as the system running environment, and realized the function of the service module, the service module, the service module, the key control module, the log service module, the datab
14、ase service module and the cache service module and so on.Key Words: Social game, server, server cluster, load balance.目 录摘 要IAbstractI目 录II第一章 绪论11.1课题背景与意义11.1.1 课题背景11.1.2 课题意义11.2 国内外研究现状分析21.3 研究目标及主要内容31.3.1研究目标31.3.2主要内容41.4论文主要框架4第二章 相关理论与关键技术62.1 网络传输协议62.1.1 OSI 参考模型与 TCP/IP 协议62.1.2 TCP 服
15、务与 UDP 服务82.2 线程池技术及阻塞队列92.2.1 线程池技术92.2.2 阻塞队列92.3 服务器集群技术102.3.1 集群的概念102.3.2 集群系统的特点102.3.3 集群的分类112.4 负载均衡技术122.4.1 概述122.4.2 负载均衡原理122.4.3 常见的负载均衡方案132.5 数据库及数据缓存技术162.5.1 数据库主从备份172.5.2 数据缓存技术182.6 本章小结19第三章 基于服务器集群技术的社交游戏平台的通用架构设计213.1 社交游戏平台特点213.2设计原则223.3 功能服务器架构223.3.1 功能服务器的功能分析和总体规划223.
16、3.2 各组服务器功能和职责243.4 软件架构293.4.1MVC模型293.4.2MVC模型的优点303.4.3 社交游戏平台的层次划分方案303.5服务器集群方案353.5.1 服务器集群方案的设计原则353.5.2 服务器集群方案的选择353.6 负载均衡方案353.6.1 节点服务器健康状态检查363.6.2 负载均衡系统的工作流程373.7 服务器集群中的http会话管理393.8 本章小结40第四章 游戏服务器端软件的设计与实现414.1 系统运行环境414.2 登录服务模块424.3 大厅服务模块434.4 游戏服务模块434.5 中央控制服务模块444.6 数据库服务模块45
17、4.7 数据缓存服务464.8 本章小结47第五章 总结与展望495.1 总结495.2 展望49参考文献52致 谢54北京航空航天大学硕士学位论文第一章 绪论1.1课题背景与意义1.1.1 课题背景计算机网络技术的快速发展使得人们的生活的方式进入了信息化时代。而网络游戏也随着互联网的发展和普及出现在了人们视野中。经过近十年的发展,网络游戏已经成为了一种文化,成为了主流的社会娱乐方式。网络游戏产业作为一个高科技产业,有着非常大的发展潜力,一已经可以和影视、音乐等产业并驾齐驱成为全球重要的娱乐产业之一。不仅如此,网络游戏产业的发展还可以带动其他相关产业的发展,网络游戏已渐渐地成为了互联网经济和数
18、字娱乐产业的重要支撑,也成为了文化产业的一个增长点,对国家的经济和社会的发展有着非常大的推动作用,不少的国家也越来越重视网络游戏。2012上半年,中国游戏市场(包括PC网络游戏市场、移动网络游戏市场、PC单机游戏市场等)实际销售收入248.4亿元人民币,比2011上半年增长了18.5%。其中中国PC网络游戏市场实际销售收入(包括了客户端网游、社交游戏、社交游戏及游戏平台的市场销售额)为235.5亿元人民币,比2011上半年增长了16.9%。2013年网络游戏市场规模达到891.6亿,根据目前的发展趋势,网络游戏市场会不断的增长,到2017年将会达到2245.7亿元1。与此同时,社交网站迅速发展
19、,不管是国内腾讯、人人网、微信等还是全球性的社交平台facebook,再到每个国家自己的社交平台,在这些平台上的网络游戏都是很受欢迎的。这些平台上的游戏有一个非常重要的部分,就是社交功能。所以,社交类网络游戏的发展前景不可限量2。1.1.2 课题意义上游互动公司发现了这个蓝海市场,研发出深受广大玩家喜爱的社交类网络游戏塔防三国志。社交版塔防三国志截至2013年6月,累计注册玩家超过4300万,累计充值金额超过1.49亿元。2013年6月塔防三国志IOS版在苹果AppStore平台正式上线,在AppStore的畅销游戏排行榜中最好排位为第8名。截止目前,最高的每日在线用户曾达到280万人。目前接
20、入的平台有国内腾讯的朋友网、QQ空间、3366、QQGame和联盟区,还有手游平台IOS和andorid。还有国外市场,facebook、台湾、越南、韩国、新加坡和马来西亚等。塔防三国志的成功离不开一个稳定、可扩展的服务器端架构。虽然现在框架已经稳定,但是依旧存在一些问题。首先,各个平台之间的兼容问题,当接入一个新平台时需要分出一个分支,当有新功能时,其他平台很难整合。其次,随着服务器和分区逐渐增多,对配置文件的管理问题越来越严重,需要进行优化处理。再次,目前一些挂机、作弊软件泛滥,给游戏玩家带来了心理不平衡问题及数据一致性问题。还有,在服务器之间进行的通讯目前并不规范,需要有一个更好的解决方
21、案,来解决现有问题,并为将来新游戏提供理论和实践基础。1.2 国内外研究现状分析目前针对于社交类游戏服务器集群的专业研究还不存在,但是已经有了关于游戏服务器的设计与实现、关于游戏服务器实现所使用的技术都有了研究。周宇辉等人设计开发了带有中心服务器的分布式结构网络游戏,针对游戏引擎、分布式结构、动态路网寻路算法做了详细介绍3。其中游戏引擎和动态路网寻路算法是针对前端做的介绍,在分布式结构一章介绍了通讯流程,对具体如何实现并为做介绍。所以,该文献只对流程做了介绍,并不能指导架构的具体技术实现。吴欣铠等结合人人城市游戏,介绍了该游戏的整体架构,并介绍了Velocity技术,缓存技术Memcached
22、和人人的开放平台,着重介绍了缓存技术Memcached4。张越在网络游戏平台服务器端的设计与实现中详细介绍了各模块实现过程中的关键技术,其中有通信协议设计、同步设计、线程池技术以及异常处理等,但与社交类游戏的结合并不完善5。通过对上述一些关于游戏服务器架构类文献的研究,并结合相关技术的文档,总结发现,使用Java语言比较适合目前的社交游戏开发。因为社交游戏服务器端处理的逻辑量大,且具有支持多社交平台、大用户量,高并发访问等特点,所以该服务器集群应该具有支撑高并发,高负载,且需要快速响应的能力。但是依旧存在以下相关问题:1)负载均衡问题处理现状在大量玩家同时在线的情况下,服务器端还要处理复杂逻辑
23、,要想提高服务器响应速度,对服务器需要做负载均衡的处理。目前国内外处理负载均衡的方式有很多,其中也不乏优秀的负载均衡算法,比如:web服务器集群应用中使用的Pick-T算法,以及Linux虚拟服务器(LVS)技术6, 7。但是,在网络游戏服务器内应用成本偏高,并且不能很好的和游戏应用相联接。所以,该论题只能对其主要思想进行借鉴,将它融合到现有的廉价的工具上。同时,负载均衡还涉及到另一个层面,就是服务器访问数据库,当对数据库的操作频繁时,需要在数据的持久层也要考虑到负载均衡的问题。2)服务器通讯问题现状目前的游戏玩家、功能以及相关的游戏服务器成正比快速增长,多功能服务器、多个分区服务器已经普遍存
24、在,这就需要对游戏服务器之间的通讯加以重视。同时还有前端和服务器之前的通讯问题,这主要包括通讯方式和通讯安全等问题。随着Java的不断发展,其通讯框架也有多种,较为流行的框架有Grizzly,JBoss Netty,NIO Framework,QuickServer,xSocket,MINA8, 9。虽然种类很多,但是要考虑到游戏通讯的安全问题,简单的使用某个框架并不能满足多平台、多服务器集群的需求。所以,目前的方案并不能完全满足游戏服务器集群的需求,本论题则会根据具体的情况来使用相应的通讯方式,甚至需要混合使用,提出更加合适的解决方案。3)数据库及相关技术现状市面上数据库技术非常丰富,国内外
25、的技术也是相差无几,目前有关系型数据库,mysql,Oracle等和非关系型数据库Nosql,其中包括Membase和MongoDB等。虽然非关系型数据库比较流行,但是刚刚起步使用并不广泛,尤其在网络游戏行业,可能相关应用并不成熟,存在学习成本高的弊端。而关系型数据库中MySQL是免费的、成本低、成熟稳定,受到广大游戏开发者的喜爱。可是在处理高并发的时候,容易出现读写线程阻塞问题,因此,大多数服务器架构会引入Memcached缓存技术10。它不仅解决了阻塞问题,还解决了内存共享问题,并提高了访问获取数据的速度。但是,在大数据量并发处理时,很如何才能和游戏逻辑很好的融合在一起,还需要深入研究和实
26、践。1.3 研究目标及主要内容1.3.1研究目标目前网络游戏呈爆炸性增长,充分利用社交平台则加大了游戏成功的机会。所以,本论题计划为满足快速发展的游戏行业,提供一个全面的、性能能良好的、适合社交类游戏的游戏服务器集群框架,并通过详细的测试,给出该框架能够承载的范围。通过使用该框架,游戏开发者只需要关注游戏内的逻辑处理,而且能够使用为该框架服务的代码生成工具实现快速开发。让运维人员能够更方便的开服、和服和关服,更加容易的管理集群中服务器的相关配置信息。 网络游戏面向Interact的连接人数巨大,为保证其平滑,稳定的运行,需要复杂的技术作为支持,而此项技术的核心内容之一就是服务器端的设计,它是游
27、戏是否能够生存的关键。作为游戏服务器端程序员,主要工作是分析游戏服务器的特点,并结合项目自身的特定需求,在已有服务器结构的基础上,加以研究和应用,设计了一套完整的网络游戏服务器开发方案,以满足网络游戏服务器复杂功能的需求。1.3.2主要内容为了实现该游戏服务器集群框架,需要总结目前应用的游戏集群框架技术及相关的最新技术,进行优劣对比,并且分析游戏服务器集群架构中所需功能,完成如下方面的工作:负载均衡算法实现。虽然现在已经存在了很多负载均衡算法,在游戏架构中也有部分应用,但是仍需要实现更适合社交游戏服务器集群的负载均衡算法网络传输模式研究。总结现有游戏前后端网络通讯传输模式,实现优化后的前后端通
28、讯方式,实现服务器之间的传输通讯方式。数据库及缓存技术。总结并实现Java级别的数据库连接及缓存技术,优化并发问题的处理。服务器集群管理。实现对集群中配置文件管理设计以及集群中服务器的管理。1.4论文主要框架全文共分五章,对网络游戏服务器设计进行了研究和讨论。具体的章节安排如下:第一章:绪论。主要介绍了本文的研究背景与研究意义,然后总结分析国内外的研究现状,在此基础上提出本文的研究目标和研究内容。第二章:相关理论和关键技术。此第一章基础上对本文的相关理论和关键技术进行了深入探讨,这其中包括了网络传输协议、线程池技术和阻塞队列、服务器集群技术、负载均衡技术、数据库及其缓存技术等。第三章:软件通用
29、架构设计开发。本文根据社交游戏的特点,给出了本文社交游戏设计原则,根据这些原则,本文对游戏的功能服务器架构、软件架构、服务器集群方案、负载均衡方案、服务器集群中的HTTP管理等方面进行了详细设计。第四章:这一章是介绍课题的平台原型的设计与实现,首先介绍了平台的运行环境,为 Flex+Java 的运行环境,分析了 Flex作为前台表形层技术的优势,接下来讲述了平台的各个模块的设计理念与重要技术的实现方案,包括了:登录服务模块、大厅服务模块、游戏服务模块、重要控制模块、日志服务模块、数据库服务模块、缓存服务模块。第五章:总结与展望。第二章 相关理论与关键技术2.1 网络传输协议协议是用来描述进程之
30、间信息交换数据时的规则术语。在计算机网络中,两个相互通信的实体处在不同的地理位置,其上的两个进程相互通信,需要通过交换信息来协调它们的动作和达到同步,而信息的交换必须按照预先共同约定好的过程进行。一个网络协议至少包含三要素:语法:用来规范信息格式,数据及控制信息的格式。语义:用来说明通讯双方应该怎么做,用来协调及差错处理的控制信息。定时:定义了何时进行通讯,先讲什么,后讲什么,讲话的速度等等。2.1.1 OSI 参考模型与 TCP/IP 协议使网络中的两台计算机系统通信需要一致的协议,同时不通主机、不同厂商的网络互联需要统一的标准。国际标准化组织(ISO)早在 20 多年前就提出了开放系统互联
31、(OSI)参考模型。OSI 模型提出后的 20 多年来,有关网络协议设计的思想已经有了很大发展,许多现代的网络协议(如现在流行的 TCP/IP 协议)也不完全符合 OSI 模型,但是 OSI 的概念与思想仍然被保留了下来11。图1 OSI参考模型与TCP/IP参考模型对比图1. OSI 参考模型OSI 只是给出了计算机网络传输的参考性说明,并不是一个具体的网络协议的实现。它把整个网络功能划分为七层,分别为:物理层、数据链路层、网络层、传输层、会话层、表现层、应用层。层与层之间的联系是通过各层之间的接口来进行的,上层通过接口向下层提出服务请求,而下层通过接口向上层提供服务。除了物理层之外,各对等
32、层之间不存在直接的通讯,而是通过各对等层之间的协议进行通讯,只有物理层是通过物理媒介进行的直接通讯。各层的功能如下12:物理层:为数据链路层提供物理连接,在其上串行传送比特流,即所传送数据的单位是比特。此外,该层中还具有确定连接设备的电气特性和物理特性等功能。 数据链路层:负责在网络节点间的线路上通过检测、流量控制和重发等手段,无差错地传送以帧为单位的数据。为做到这一点,在每一帧中必须同时带有同步、地址、差错控制及流量控制等控制信息。网络层:为了将数据分组从源(源端系统)送到目的地(目标端系统),网络层的任务就是选择合适的路由和交换节点,使源的传输层传下来的分组信息能够正确无误地按照地址找到目
33、的地,并交付给相应的传输层,即完成网络的寻址功能。传输层:传输层是高低层之间衔接的接口层。数据传输的单位是报文,当报文较长时将它分割成若干分组,然后交给网络层进行传输。传输层是计算机网络协议分层中的最关键一层,该层以上各层将不再管理信息传输问题。 会话层:该层对传输的报文提供同步管理服务。在两个不同系统的互相通信的应用进程之间建立、组织和协调交互。例如,确定是双工还是半双工工作。表示层:该层的主要任务是把所传送的数据的抽象语法变换为传送语法,即把不同计算机内部的不同表示形式转换成网络通信中的标准表示形式。此外,对传送的数据加密(或解密)、正文压缩(或还原)也是表示层的任务。应用层:该层直接面向
34、用户,是 OSI 中的最高层。它的主要任务是为用户提供应用的接口,即提供不同计算机间的文件传送、访问与管理,电子邮件的内容处理,不同计算机通过网络交互访问的虚拟终端功能等。2. TCP/IP 模型TCP/IP 是 Transmission Control Protocol/Internet Protocol(传输控制协议/互联网协议)的缩写。美国国防部高级研究计划局 DARPA 为了实现异种网络之间的互连与互通,大力资助互联网技术的开发,于 1977 年到 1979 年间推出目前形式的 TCP/IP 体系结构和协议。1980 年左右,ARPA 开始将 ARPANET 上的所有机器转向 TCP/
35、IP 协议,并以ARPANET 为主干建立 Internet。为推广 TCP/IP 协议,ARPA 以低价出售 TCP/IP 的使用权,还资助一些机构来开发用于 UNIX 操作系统中的 TCP/IP 协议。TCP/IP 是 Transmission Control Protocol/Internet Protocol(传输控制协议互联网协议)的缩写。美国国防部高级研究计划局 DARPA 为了实现异种网络之间的互连与互通,大力资助互联网技术的开发,于 1977 年到 1979 年间推出目前形式的 TCP/IP 体系结构和协议。1980 年左右,ARPA 开始将 ARPANET 上的所有机器转向
36、TCP/IP 协议,并以ARPANET 为主干建立 Internet。为推广 TCP/IP 协议,ARPA 以低价出售 TCP/IP 的使用权,还资助一些机构来开发用于 UNIX 操作系统中的 TCP/IP 协议。TCP/IP 协议显然参照了 OSI 的分层协议,不过它与 OSI 协议还是有些不一致,它只划分了 4 层,从底至定分别为:网络接口层、网际层、传输层、应用层。各层功能如下13, 14:网络接口层:这是 TCP/IP 协议的最低一层,包括有多种逻辑链路控制和媒体访问协议。网络接口层的功能是接收 IP 数据报并通过特定的网络进行传输,或从网络上接收物理帧,抽取出 IP 数据报并转交给网
37、际层。网际网层(IP 层):该层包括以下协议:IP(网际协议)、ICMP(Internet Control MessageProtocol,因特网控制报文协议)、ARP(Address Resolution Protocol,地址解析协议)、RARP(Reverse Address Resolution Protocol,反向地址解析协议)。该层负责相同或不同网络中计算机之间的通信,主要处理数据报和路由。在 IP 层中,ARP 协议用于将 IP 地址转换成物理地址,RARP 协议用于将物理地址转换成 IP 地址,ICMP协议用于报告差错和传送控制信息。IP 协议在 TCP/IP 协议组中处于核
38、心地位。传输层:该层提供 TCP(传输控制协议)和 UDP(User Datagram Protocol,用户数据报文协议)两个协议,它们都建立在 IP 协议的基础上,其中 TCP 提供可靠的面向连接服务,UDP 提供简单的无连接服务。传输层提供端到端,即应用程序之间的通信,主要功能是数据格式化、数据确认和丢失重传等。应用层 TCP/IP 协议的应用层相当于 OSI 模型的会话层、表示层和应用层,它向用户提供一组常用的应用层协议,其中包括:Telnet、SMTP、DNS 等。此外,在应用层中还包含有用户应用程序,它们均是建立在 TCP/IP 协议组之上的专用程序。2.1.2 TCP 服务与 U
39、DP 服务TCP 和 UDP 是迥异的传输层协议,被设计为做不同的事情。二者的共性是都使用IP 作为其网络层协议15。TCP 和 UDP 之间的主要差别在于可靠性。TCP 是高度可靠的,而 UDP 是一个简单的、尽力数据报转发协议。这个基本的差别暗示 TCP 更复杂,需要大量功能开销,然而 UDP 是简单和高效的。UDP 经常被认为是不可靠的,因为它不具有任何 TcP 的可靠性机制。UDP 不可靠,是因为其不具有 TCP 的接收应答机制、乱序到达数据的顺序化,甚至不具有对接收到损坏报文的重传机制。也就是说 UDP 不保证数据不受损害地到达目的端!因此,UDP 最适合于小的发送(也就是单独的报文
40、),对于数据分成多个报文且需要对数据流进行调节的情况, TCP 更适合。有必要对 UDP 的不可靠性和 UDP 的优点作一折衷。UDP 是小的、节约资源的传输层协议。它的操作执行比TCP 快得多。因此,它适合于不断出现的、和时间相关的应用如 IP 上传输语音和实时的可视会议。在游戏开发上,则可应用于对实时性要求较高的游戏类型。2.2 线程池技术及阻塞队列2.2.1 线程池技术在传统服务器结构中,当用户请求达到服务器的时候,服务器会有一个总的监听线程,为当前用户请求启动一个线程,并把该线程分配给这次用户请求。当用户请求结束时,该线程被销毁。由此可以看出,每次的用户连接都会频繁的开启和销毁线程,这
41、样就消耗了大量的服务器端性能。线程池技术就是为了解决这个问题而产生的,它在服务启动的时候,开启若干个线程,这些线程组成了线程池,当有用户请求达到的时候,从这些若干线程中分配一个空闲线程来处理用户请求16。若是线程池中没有空闲线程,就将这些请求放入任务队列中,等线程池中有线程空闲出来时,从任务队列中取出该任务交给空闲线程处理。当该请求完成时,线程不销毁,重新放入线程池中,并改变其状态为空闲。这样,就可以不用每次都去开启和销毁线程,系统资源得到了有效的利用,当用户请求达到时,已经有了线程对象,可以大大提高系统的相应速度,从而使系统性能得到很大的提升。2.2.2 阻塞队列队列是一种常见的数据结构,一
42、般而言它有两个基本操作:在队列尾部加入一个元素,从队列头部移除一个元素,队列是以一种先进先出的的方式管理数据。阻塞队列的概念是,一个指定长度的队列,如果队列满了,添加新元素的操作被阻塞,知道有空位为止。同样,当队列为空的时候,请求队列元素的操作同样会被阻塞,知道有新的元素为止。这里的阻塞,就是线程睡眠。由此可以看出,阻塞队列非常适合做为线程池中任务队列的实现方式。在队列已经满的时候,客户端不能的请求不能再被处理了,系统负荷已经达到最大,这时候所有用户请求被阻塞,直到阻塞队列中的元素被消费。当队列为空时,监听线程也不需要从队列中读请求到给线程池中的空闲线程处理。这时候产生阻塞,释放 cpu 资源
43、,缓解系统负荷。2.3 服务器集群技术2.3.1 集群的概念集群技术是指17, 18:一组组相互独立的服务器在网络上表现为单一的系统,并以单一的模式加以管理。此单一系统为客户工作站提供高效稳定的服务。从外边来看,集群的服务器就像一个服务器整体,而非多个服务器,集群系统可以方便的增加或删减服务器,而不会影响系统的正常运行19。集群中的各个服务器之间有共享内存空间,这些服务器通过局域网方式互联,当有一台服务器出现故障的时候,集群系统可以把这台服务器的处理任务分配当系统的其他服务器上,外界客户端并不会觉察到这种变化,很好的增加了系统的稳定性和容错能力。图2 不同的多服务器系统的性能对比2.3.2 集
44、群系统的特点由于集群系统的多服务器统一对外提供服务,他们是一组互联的服务器集合,因此可以发挥整体优势,提高服务质量。一个典型的集群系统应该有以下特点20, 21:可易用性:因为集群系统的单个节点依旧是传统的服务器,用户仍然可以在平时熟悉的环境下面开发和运行程序。同时,这也可以让许多现有的程序不用任何修改就可以运行在处理能力强大的集群系统平台上,非常有利于重用现有软件资源。高可用性:高可用性包含可靠性和可用性等。在传统的系统中,通常是以高费用为代价来提供高可用性,在集群系统中,使用价格低廉的组件也可以提供较好的可用性。集群系统可用性的实现,其关键技术是开发共享组件可用的软件。可伸缩性:集群系统可
45、以通过方便的增加或删除服务器节点来调节系统性能。集群的可伸缩性包含很多方面,如硬件资源的可伸缩性、软件资源的可伸缩性和技术的可伸缩性。透明性强:服务器集群系统对外变现为单一的高性能服务器,服务器节点的增删和其他调整不会影响对外服务。性价比高:组成集群系统的服务器和网络设备都可以采用成熟的商用产品,它把一些廉价的系统组件组合在一起,使他们协同工作,在总体性能上可以达到大型机或巨型计算机的水平。2.3.3 集群的分类目前最广泛的计算机集群可以分为三大类:高可用性集群、高性能计算集群和负载均衡集群。下面对这三种集群逐一做简单介绍22-24。1. 高可用性(High Availability)集群,也
46、称为 HA 集群。高可用性集群的设计思想是要最大限度的缩短服务中断时间,提供高度可靠的服务。它利用集群系统中的冗余节点,当系统中的某台服务器发生损坏的时候,这些冗余节点可以迅速接替它来启动服务,直到故障机器被修复。这样就可以最大限度的保证集群服务的稳定。这类系统一般在银行,电信等对系统可靠性有着较高要求的领域应用广泛。2. 高性能计算(High Performance Computing)集群,也称为 HPC 集群。这类集群以提高科学计算能力为目的,它是计算机科学的一个分支,致力于开发超级计算机。它是利用一个集群中的多台机器共同完成同一件任务,使完成任务的时耗远远小于单机运行效果。搞集群一般用在数据量大,计算复杂的环境中,比如灾害预报,航空航天等科技领域。3. 负载均衡(Load Balance)集群,也称为LB集群。它利用一个集群中的多个单机,完成许多并行的小任务,提供和节点数相对应的负载能力。一般来说,当一个系统的用户请求数量增加时,用户的请求处理相应时间也会相应的增大,系统的性能会下降,负载均衡集群会选择当前负