社交游戏服务器端软件设计与实现.docx
《社交游戏服务器端软件设计与实现.docx》由会员分享,可在线阅读,更多相关《社交游戏服务器端软件设计与实现.docx(60页珍藏版)》请在冰点文库上搜索。
![社交游戏服务器端软件设计与实现.docx](https://file1.bingdoc.com/fileroot1/2023-5/2/06e2c329-c00e-4631-9f2c-5ae7fddeabf5/06e2c329-c00e-4631-9f2c-5ae7fddeabf51.gif)
社交游戏服务器端软件设计与实现
中图分类号:
TP3
论文编号:
10006GS1221388
专业硕士学位论文
社交游戏服务器端软件的
设计与实现
作者姓名刘宗涛
学科专业软件工程
指导教师林广艳教授
林军高工
培养院系软件学院
DesignandRealizationofControlSystemBasedonSOA
ADissertationSubmittedfortheDegreeofMaster
Candidate:
LiMing
Supervisor:
prof.LinJun
CollegeofSoftware
BeihangUniversity,Beijing,China
中图分类号:
TP3
论文编号:
10006GS1221388
硕士学位论文
社交游戏服务器端软件的设计与实现
作者姓名刘宗涛申请学位级别工程硕士
指导教师姓名林广艳职称教授
指导教师姓名林军职称高级工程师
学科专业软件工程研究方向移动云计算
学习时间自2012年09月10日起至2015年07月18日止
论文提交日期2015年09月15日论文答辩日期2015年00月00日
学位授予单位北京航空航天大学学位授予日期年月日
关于学位论文的独创性声明
本人郑重声明:
所呈交的论文是本人在指导教师指导下独立进行研究工作所取得的成果,论文中有关资料和数据是实事求是的。
尽我所知,除文中已经加以标注和致谢外,本论文不包含其他人已经发表或撰写的研究成果,也不包含本人或他人为获得北京航空航天大学或其它教育机构的学位或学历证书而使用过的材料。
与我一同工作的同志对研究所做的任何贡献均已在论文中做出了明确的说明。
若有不实之处,本人愿意承担相关法律责任。
学位论文作者签名:
日期:
年月日
学位论文使用授权书
本人完全同意北京航空航天大学有权使用本学位论文(包括但不限于其印刷版和电子版),使用方式包括但不限于:
保留学位论文,按规定向国家有关部门(机构)送交学位论文,以学术交流为目的赠送和交换学位论文,允许学位论文被查阅、借阅和复印,将学位论文的全部或部分内容编入有关数据库进行检索,采用影印、缩印或其他复制手段保存学位论文。
保密学位论文在解密后的使用授权同上。
学位论文作者签名:
日期:
年月日
指导教师签名:
日期:
年月日
摘要
网络游戏已经成为互动娱乐产业乃至整个国民经济中上升速度最快的产业之一。
国内自主研发的网络游戏产品数量和质量都在不断提升,众多科研院所也加入到相关技术领域(主要是图形学、信息安全)的研发队伍。
社交游戏作为网络游戏中的重要组成部分也逐渐成为了一个研究热点。
本文分析了社交网络游戏架构,重点对网络传输、服务集群技术、负载均衡技术、数据缓存技术深入探讨,并对若干关键技术进行了详细设计与实现。
本文立足实际应用,针对参与研发的“塔防三国志”游戏完成了以下研究工作:
首先,本文介绍了社交游戏服务器端软件设计与实现的研究背景与研究意义,之后通过对国内外现状分析对比提出了本文的研究内容和研究方法,然后在此基础上对相关理论和关键技术进行了深入探讨,这其中包括了网络传输协议、线程池技术和阻塞队列、服务器集群技术、负载均衡技术、数据库及其缓存技术等。
其次,本文根据社交游戏的特点,给出了本文社交游戏设计原则,根据这些原则,本文对游戏的功能服务器架构、软件架构、服务器集群方案、负载均衡方案、服务器集群中的HTTP管理等方面进行了详细设计。
其中,本文将游戏服务器分为了数据服务器、数据缓存服务器、登陆服务器、大厅服务器、游戏服务器、中央控制服务器、日志服务器等7个不同功能的服务器组。
在逻辑层次划分方面,参考了MVC的分层思想将软件分为了表现层、应用服务层、调度层、消息层、数据层。
最后,本文介绍课题的平台原型的设计与实现,首先介绍了平台的运行环境,为Flex+Java的运行环境,分析了Flex作为前台表形层技术的优势,接下来讲述了平台的各个模块的设计理念与重要技术的实现方案,包括了:
登录服务模块、大厅服务模块、游戏服务模块、重要控制模块、日志服务模块、数据库服务模块、缓存服务模块。
关键词:
社交游戏、服务器、服务器集群、负载均衡
Abstract
Networkgameshavebecomeoneofthefastestrisingindustriesintheareaofinteractiveentertainmentindustryandthewholenationaleconomy.Withdevelopmentofthequantityandqualityofonlinegames,manyresearchinstituteswiththerelevantart(mainlygraphics,informationsecurity)havejoinedtheR&Dteam.Thesocialgaming,asanimportantpartofnetworkgame,isbecomingaresearchhotspot.
Thispaperanalyzedthearchitectureofsocialnetworkgame,andfocusedonthetechnologyofnetworktransmission,serviceclusteringtechnology,loadbalancing,datacachingtechnology,thendidthedetaileddesignandimplementation.Themainresearchworkareasfollows:
Firstly,thispaperintroducedtheresearchbackgroundandsignificanceoftheproject,andthenonthebasisofcurrentresearchofsocialgamesserverpresentedtheresearchcontentandresearchmethods.Inaddition,thepaperhaddonedepthdiscussionsinrelatedtheoriesandkeytechnologies,thekeytechnologiesincludingnetworktransmissionprotocol,threadpoolandblockingqueue,serverclusteringtechnology,loadbalancing,databaseandcachingtechnology.
Secondly,accordingtothecharacteristicsofthesocialgame,thispaperpresentedthedesignprinciples,andthendidthedetaileddesignonthegameserverarchitecture,softwarearchitecture,serverclusteringsolutions,loadbalancingscheme,serverclustermanagementandotheraspectsofHTTPandsoon.Inthispaper,thegameserverwasdividedintodataservers,datacacheserver,loginserver,lobbyserver,gameservers,centralcontrolserver,logservers.Intermsoflogiclevelclassification,withreferencetothehierarchicalthinkingMVCsoftware,thispaperframewasseparatedintothepresentationlayer,applicationservicelayer,schedulinglayer,messagelayer,datalayer..
Finally,thispaperintroducedthedesignandimplementationofthesubject.ThispaperusedFlex+Javaasthesystemrunningenvironment,andrealizedthefunctionoftheservicemodule,theservicemodule,theservicemodule,thekeycontrolmodule,thelogservicemodule,thedatabaseservicemoduleandthecacheservicemoduleandsoon.
KeyWords:
Socialgame,server,servercluster,loadbalance.
第一章绪论
1.1课题背景与意义
1.1.1课题背景
计算机网络技术的快速发展使得人们的生活的方式进入了信息化时代。
而网络游戏也随着互联网的发展和普及出现在了人们视野中。
经过近十年的发展,网络游戏已经成为了一种文化,成为了主流的社会娱乐方式。
网络游戏产业作为一个高科技产业,有着非常大的发展潜力,一已经可以和影视、音乐等产业并驾齐驱成为全球重要的娱乐产业之一。
不仅如此,网络游戏产业的发展还可以带动其他相关产业的发展,网络游戏已渐渐地成为了互联网经济和数字娱乐产业的重要支撑,也成为了文化产业的一个增长点,对国家的经济和社会的发展有着非常大的推动作用,不少的国家也越来越重视网络游戏。
2012上半年,中国游戏市场(包括PC网络游戏市场、移动网络游戏市场、PC单机游戏市场等)实际销售收入248.4亿元人民币,比2011上半年增长了18.5%。
其中中国PC网络游戏市场实际销售收入(包括了客户端网游、社交游戏、社交游戏及游戏平台的市场销售额)为235.5亿元人民币,比2011上半年增长了16.9%。
2013年网络游戏市场规模达到891.6亿,根据目前的发展趋势,网络游戏市场会不断的增长,到2017年将会达到2245.7亿元[1]。
与此同时,社交网站迅速发展,不管是国内腾讯、人人网、微信等还是全球性的社交平台facebook,再到每个国家自己的社交平台,在这些平台上的网络游戏都是很受欢迎的。
这些平台上的游戏有一个非常重要的部分,就是社交功能。
所以,社交类网络游戏的发展前景不可限量[2]。
1.1.2课题意义
上游互动公司发现了这个蓝海市场,研发出深受广大玩家喜爱的社交类网络游戏《塔防三国志》。
社交版《塔防三国志》截至2013年6月,累计注册玩家超过4300万,累计充值金额超过1.49亿元。
2013年6月《塔防三国志》IOS版在苹果AppStore平台正式上线,在AppStore的畅销游戏排行榜中最好排位为第8名。
截止目前,最高的每日在线用户曾达到280万人。
目前接入的平台有国内腾讯的朋友网、QQ空间、3366、QQGame和联盟区,还有手游平台IOS和andorid。
还有国外市场,facebook、台湾、越南、韩国、新加坡和马来西亚等。
《塔防三国志》的成功离不开一个稳定、可扩展的服务器端架构。
虽然现在框架已经稳定,但是依旧存在一些问题。
首先,各个平台之间的兼容问题,当接入一个新平台时需要分出一个分支,当有新功能时,其他平台很难整合。
其次,随着服务器和分区逐渐增多,对配置文件的管理问题越来越严重,需要进行优化处理。
再次,目前一些挂机、作弊软件泛滥,给游戏玩家带来了心理不平衡问题及数据一致性问题。
还有,在服务器之间进行的通讯目前并不规范,需要有一个更好的解决方案,来解决现有问题,并为将来新游戏提供理论和实践基础。
1.2国内外研究现状分析
目前针对于社交类游戏服务器集群的专业研究还不存在,但是已经有了关于游戏服务器的设计与实现、关于游戏服务器实现所使用的技术都有了研究。
周宇辉等人设计开发了带有中心服务器的分布式结构网络游戏,针对游戏引擎、分布式结构、动态路网寻路算法做了详细介绍[3]。
其中游戏引擎和动态路网寻路算法是针对前端做的介绍,在分布式结构一章介绍了通讯流程,对具体如何实现并为做介绍。
所以,该文献只对流程做了介绍,并不能指导架构的具体技术实现。
吴欣铠等结合人人城市游戏,介绍了该游戏的整体架构,并介绍了Velocity技术,缓存技术Memcached和人人的开放平台,着重介绍了缓存技术Memcached[4]。
张越在《网络游戏平台服务器端的设计与实现》中详细介绍了各模块实现过程中的关键技术,其中有通信协议设计、同步设计、线程池技术以及异常处理等,但与社交类游戏的结合并不完善[5]。
通过对上述一些关于游戏服务器架构类文献的研究,并结合相关技术的文档,总结发现,使用Java语言比较适合目前的社交游戏开发。
因为社交游戏服务器端处理的逻辑量大,且具有支持多社交平台、大用户量,高并发访问等特点,所以该服务器集群应该具有支撑高并发,高负载,且需要快速响应的能力。
但是依旧存在以下相关问题:
1)负载均衡问题处理现状
在大量玩家同时在线的情况下,服务器端还要处理复杂逻辑,要想提高服务器响应速度,对服务器需要做负载均衡的处理。
目前国内外处理负载均衡的方式有很多,其中也不乏优秀的负载均衡算法,比如:
web服务器集群应用中使用的Pick-T算法,以及Linux虚拟服务器(LVS)技术[6,7]。
但是,在网络游戏服务器内应用成本偏高,并且不能很好的和游戏应用相联接。
所以,该论题只能对其主要思想进行借鉴,将它融合到现有的廉价的工具上。
同时,负载均衡还涉及到另一个层面,就是服务器访问数据库,当对数据库的操作频繁时,需要在数据的持久层也要考虑到负载均衡的问题。
2)服务器通讯问题现状
目前的游戏玩家、功能以及相关的游戏服务器成正比快速增长,多功能服务器、多个分区服务器已经普遍存在,这就需要对游戏服务器之间的通讯加以重视。
同时还有前端和服务器之前的通讯问题,这主要包括通讯方式和通讯安全等问题。
随着Java的不断发展,其通讯框架也有多种,较为流行的框架有Grizzly,JBossNetty,NIOFramework,QuickServer,xSocket,MINA[8,9]。
虽然种类很多,但是要考虑到游戏通讯的安全问题,简单的使用某个框架并不能满足多平台、多服务器集群的需求。
所以,目前的方案并不能完全满足游戏服务器集群的需求,本论题则会根据具体的情况来使用相应的通讯方式,甚至需要混合使用,提出更加合适的解决方案。
3)数据库及相关技术现状
市面上数据库技术非常丰富,国内外的技术也是相差无几,目前有关系型数据库,mysql,Oracle等和非关系型数据库Nosql,其中包括Membase和MongoDB等。
虽然非关系型数据库比较流行,但是刚刚起步使用并不广泛,尤其在网络游戏行业,可能相关应用并不成熟,存在学习成本高的弊端。
而关系型数据库中MySQL是免费的、成本低、成熟稳定,受到广大游戏开发者的喜爱。
可是在处理高并发的时候,容易出现读写线程阻塞问题,因此,大多数服务器架构会引入Memcached缓存技术[10]。
它不仅解决了阻塞问题,还解决了内存共享问题,并提高了访问获取数据的速度。
但是,在大数据量并发处理时,很如何才能和游戏逻辑很好的融合在一起,还需要深入研究和实践。
1.3研究目标及主要内容
1.3.1研究目标
目前网络游戏呈爆炸性增长,充分利用社交平台则加大了游戏成功的机会。
所以,本论题计划为满足快速发展的游戏行业,提供一个全面的、性能能良好的、适合社交类游戏的游戏服务器集群框架,并通过详细的测试,给出该框架能够承载的范围。
通过使用该框架,游戏开发者只需要关注游戏内的逻辑处理,而且能够使用为该框架服务的代码生成工具实现快速开发。
让运维人员能够更方便的开服、和服和关服,更加容易的管理集群中服务器的相关配置信息。
网络游戏面向Interact的连接人数巨大,为保证其平滑,稳定的运行,需要复杂的技术作为支持,而此项技术的核心内容之一就是服务器端的设计,它是游戏是否能够生存的关键。
作为游戏服务器端程序员,主要工作是分析游戏服务器的特点,并结合项目自身的特定需求,在已有服务器结构的基础上,加以研究和应用,设计了一套完整的网络游戏服务器开发方案,以满足网络游戏服务器复杂功能的需求。
1.3.2主要内容
为了实现该游戏服务器集群框架,需要总结目前应用的游戏集群框架技术及相关的最新技术,进行优劣对比,并且分析游戏服务器集群架构中所需功能,完成如下方面的工作:
负载均衡算法实现。
虽然现在已经存在了很多负载均衡算法,在游戏架构中也有部分应用,但是仍需要实现更适合社交游戏服务器集群的负载均衡算法
网络传输模式研究。
总结现有游戏前后端网络通讯传输模式,实现优化后的前后端通讯方式,实现服务器之间的传输通讯方式。
数据库及缓存技术。
总结并实现Java级别的数据库连接及缓存技术,优化并发问题的处理。
服务器集群管理。
实现对集群中配置文件管理设计以及集群中服务器的管理。
1.4论文主要框架
全文共分五章,对网络游戏服务器设计进行了研究和讨论。
具体的章节安排如下:
第一章:
绪论。
主要介绍了本文的研究背景与研究意义,然后总结分析国内外的研究现状,在此基础上提出本文的研究目标和研究内容。
第二章:
相关理论和关键技术。
此第一章基础上对本文的相关理论和关键技术进行了深入探讨,这其中包括了网络传输协议、线程池技术和阻塞队列、服务器集群技术、负载均衡技术、数据库及其缓存技术等。
第三章:
软件通用架构设计开发。
本文根据社交游戏的特点,给出了本文社交游戏设计原则,根据这些原则,本文对游戏的功能服务器架构、软件架构、服务器集群方案、负载均衡方案、服务器集群中的HTTP管理等方面进行了详细设计。
第四章:
这一章是介绍课题的平台原型的设计与实现,首先介绍了平台的运行环境,为Flex+Java的运行环境,分析了Flex作为前台表形层技术的优势,接下来讲述了平台的各个模块的设计理念与重要技术的实现方案,包括了:
登录服务模块、大厅服务模块、游戏服务模块、重要控制模块、日志服务模块、数据库服务模块、缓存服务模块。
第五章:
总结与展望。
第二章相关理论与关键技术
2.1网络传输协议
协议是用来描述进程之间信息交换数据时的规则术语。
在计算机网络中,两个相互通信的实体处在不同的地理位置,其上的两个进程相互通信,需要通过交换信息来协调它们的动作和达到同步,而信息的交换必须按照预先共同约定好的过程进行。
一个网络协议至少包含三要素:
语法:
用来规范信息格式,数据及控制信息的格式。
语义:
用来说明通讯双方应该怎么做,用来协调及差错处理的控制信息。
定时:
定义了何时进行通讯,先讲什么,后讲什么,讲话的速度等等。
2.1.1OSI参考模型与TCP/IP协议
使网络中的两台计算机系统通信需要一致的协议,同时不通主机、不同厂商的网络互联需要统一的标准。
国际标准化组织(ISO)早在20多年前就提出了开放系统互联(OSI)参考模型。
OSI模型提出后的20多年来,有关网络协议设计的思想已经有了很大发展,许多现代的网络协议(如现在流行的TCP/IP协议)也不完全符合OSI模型,但是OSI的概念与思想仍然被保留了下来[11]。
图1OSI参考模型与TCP/IP参考模型对比图
1.OSI参考模型
OSI只是给出了计算机网络传输的参考性说明,并不是一个具体的网络协议的实现。
它把整个网络功能划分为七层,分别为:
物理层、数据链路层、网络层、传输层、会话层、表现层、应用层。
层与层之间的联系是通过各层之间的接口来进行的,上层通过接口向下层提出服务请求,而下层通过接口向上层提供服务。
除了物理层之外,各对等层之间不存在直接的通讯,而是通过各对等层之间的协议进行通讯,只有物理层是通过物理媒介进行的直接通讯。
各层的功能如下[12]:
物理层:
为数据链路层提供物理连接,在其上串行传送比特流,即所传送数据的单位是比特。
此外,该层中还具有确定连接设备的电气特性和物理特性等功能。
数据链路层:
负责在网络节点间的线路上通过检测、流量控制和重发等手段,无差错地传送以帧为单位的数据。
为做到这一点,在每一帧中必须同时带有同步、地址、差错控制及流量控制等控制信息。
网络层:
为了将数据分组从源(源端系统)送到目的地(目标端系统),网络层的任务就是选择合适的路由和交换节点,使源的传输层传下来的分组信息能够正确无误地按照地址找到目的地,并交付给相应的传输层,即完成网络的寻址功能。
传输层:
传输层是高低层之间衔接的接口层。
数据传输的单位是报文,当报文较长时将它分割成若干分组,然后交给网络层进行传输。
传输层是计算机网络协议分层中的最关键一层,该层以上各层将不再管理信息传输问题。
会话层:
该层对传输的报文提供同步管理服务。
在两个不同系统的互相通信的应用进程之间建立、组织和协调交互。
例如,确定是双工还是半双工工作。
表示层:
该层的主要任务是把所传送的数据的抽象语法变换为传送语法,即把不同计算机内部的不同表示形式转换成网络通信中的标准表示形式。
此外,对传送的数据加密(或解密)、正文压缩(或还原)也是表示层的任务。
应用层:
该层直接面向用户,是OSI中的最高层。
它的主要任务是为用户提供应用的接口,即提供不同计算机间的文件传送、访问与管理,电子邮件的内容处理,不同计算机通过网络交互访问的虚拟终端功能等。
2.TCP/IP模型
TCP/IP是TransmissionControlProtocol/InternetProtocol(传输控制协议/互联网协议)的缩写。
美国国防部高级研究计划局DARPA为了实现异种网络之间的互连与互通,大力资助互联网技术的开发,于1977年到1979年间推出目前形式的TCP/IP体系结构和协议。
1980年左右,ARPA开始将ARPANET上的所有机器转向TCP/IP协议,并以ARPANET为主干建立Internet。
为推广TCP/IP协议,ARPA以低价出售TCP/IP的使用权,还资助一些机构来开发用于UNIX操作系统中的TCP/IP协议。
TCP/IP是TransmissionControlProtocol/InternetProtocol(传输控制协议/互联网协议)的缩写。
美国国防部高级研究计划局DARPA为了实现异种网络之间的互连与互通,大力资助互联网技术的开发,于1977年到1979年间推出目前形式的TCP/IP体系结构和协议。
1980年左右,ARPA开始将ARPANET上的所有机器转向TCP/IP协议,并以ARPANET为主干建立Internet。
为推广TC