1、摘要随着 Internet 和计算机网络的普及,网络已经走进千家万户,人们的生活越来越 离不开网络。学习,工作闲暇之余人们可以通过网络来放松自己,也正因为如此网 络游戏开始走进我们的生活。比如说日本麻将就是一个必须依托于互联网进行,可 以允许多人同时参与的网络游戏,通过用户与用户之间的互动达到交流,休闲和娱 乐的目的。正由于网洛游戏允许多用户参与,所以在后台对与用户的管理是必不可 缺的。针对麻将游戏系统后台用户管理的需要,构建了一个基于 PHP 与 MySQL 的麻 将用户管理系统。该系统运用健全的网络体系,建立一个集与 B/S 结构与先进的 PHP 加 MySQL 技术为一体的系统。系统中涉
2、及到用户登陆,用户信息管理,用户游 戏得分排名,大会的具体情况等各个环节,具有对多层次用户的完善的管理功能。设计时使用了 Apache+PHP+MySQL 三者结合的先进开发模式。通过使用系统, 用户可以更好地了解游戏,进入游戏,享受游戏。同时也方便管理员更好的管理用 户的信息,满足了系统管理员和游戏玩家等的信息管理需求,达到了用户,游戏, 管理员三者一体的目的。用户只需要在浏览器上操作就可以实现系统的所有功能。 系统的界面人性化,操作方便。系统使用了多级安全保护措施,充分保证了系统的 安全运行。关键词:网络游戏后台管理系统PHP 语言B/S 模型安全IAbstractWith the pop
3、ularization of the Internet and computer network, the network has entered the life of countless families. The peoples lives became more and more reliant on this network. People can frequently use the Internet to entertain themselves. This is when online games come in, such as the Japanese mahjong, a
4、 game that relies on the Internet and allows many people to participate. Through the interaction between users, people can communicate with each other and enjoy each others company without having to meet each other in person. Because Internet allows many people to watch the Los Angeles games even if
5、 they cannot go to the actual game, it is indispensable for time management and entertainment.Aiming for the use of user background management for the mahjong game system, construct one based on the PHP+MYSQL. Using a perfect network system, I established the perfect multi-user system which concentr
6、ates the B/S structure and the PHP+MYSQL, which is an advanced technology and includes the log-in of the user, management of the users information, and the scores and rankings of the users.Design the Multiplayer Online Game System. This system has using PHP + MySQL + Apache Server. Through this syst
7、em, users can understand the game, enter the game, and enjoy the it by managing the users information. The management of the information by the system administrator and gamers, User can realize the functions of the system necessary to operated it in the browser. The system interface is humanization,
8、 convenient to operate. The system is using Multilevel security protection measures guarantee the safe operation of the system.Key words:Multiplayer Online Gamebackground management system PHP LanguageBrowser/Server ModelsecurityII1绪论随着 IT 产业的高速发展,信息技术正以其强大的渗透力渗透到人们的生活,而 网络游戏也正是此飞速发展信息时代的产物。网络游戏经过了四
9、代的发展,在游戏 市场占领了一席之位,也招来了越来越多的游戏玩家,为了游戏个更好地被运用, 也方便管理员更好地管理玩家信息,后台管理系统也成为游戏中的不可缺的部分。1.1课题背景1)网络游戏的发展历史网络游戏自从 1969 年诞生以前,至今为止已经有 40 多年的发展历史,在这 40多年中网络游戏经历了四个重要发展阶段1。(1)第一代网络游戏 1969 年至 1977 年 背景:由于当时的计算机硬件和软件尚无统一的技术标准,因此第一代网络游戏的平台、操作系统和语言各不相同。它们大多为试验品,运行在高等院校的大型 主机上,如美国的麻省理工学院、弗吉尼亚大学,以及英国的埃塞克斯大学。游戏特征:非持
10、续性,机器重启后游戏的相关信息即会丢失,因此无法模拟一 个持续发展的世界;游戏只能在同一服务器/终端机系统内部执行,无法跨系统运 行。(2)第二代网络游戏 1978 年至 1995 年 背景:一些专业的游戏开发商和发行商开始涉足网络游戏,如 Activision、Interplay、Sierra Online、Stormfront Studios、Virgin Interactive、SSI 和 TSR 等,都 曾在这一阶段试探性地进入过这一新兴产业,它们与 GEnie、Prodigy、AOL 和 CompuServe 等运营商合作,推出了第一批具有普及意义的网络游戏。游戏特征: 网络游戏出现
11、了“可持续性”的概念,玩家所扮演的角色可以成 年累月地在同一世界内不断发展,而不像 PLATO 上的游戏那样,只能在其中扮演 一个匆匆过客。 游戏可以跨系统运行,只要玩家拥有电脑和调制解调器,且硬 件兼容,就能连入当时的任何一款网络游戏。56华中科技大学硕士学位论文(3)第三代网络游戏 1996 年到 2006 年 背景:越来越多的专业游戏开发商和发行商介入网络游戏,一个规模庞大、分工明确的产业生态环境最终形成。人们开始认真思考网络游戏的设计方法和经营方 法,希望归纳出一套系统的理论基础,这是长久以来所一直缺乏的。游戏特征:“大型网络游戏”(MMOG)的概念浮出水面,网络游戏不再依托于 单一的
12、服务商和服务平台而存在,而是直接接入互联网,在全球范围内形成了一个 大一统的市场。(4)第四代网络游戏 2006 年开始随着 WEB 技术的发展,在网站技术上各个层面得到提升,国外已经开始兴新 许多的“无端网游”,即不用客户端也能玩的游戏,也叫网页游戏或 webgame web 游 戏 ,也有一些公司宣称“老板眼皮底下也能玩的游戏”,确实,网页游戏依靠 WEB 技术支持就能玩的在线多人游戏类型,受到许多办公室白领一族的追捧,2007 年开 始,中国大陆也陆续开始有许多网页游戏开始较大规模的运营,网页游戏作为网络 游戏的一个分支已经逐渐形成。2)网络游戏的发展趋势自网络游戏的出现至今,从单纯文字
13、类网络游戏到 3D 大型场景类网络游戏, 网络游戏的类型已经没有早年那么容易定义了,网络游戏的形式也是趋于多样 化。短短几年发展时间,网络游戏也在世界范围内已经趋向成熟,发达国家的网 络游戏与生活、商业联系密切,已经形成了一套严密规则的产业链,不止带动网 络业的发展,由此涉及的其他周边产业,比如玩具、动漫,以及电信业,带来的 商业价值不容小视,就国内网络游戏市场而言,已经造就了多位亿万富翁。产业 利润成倍增加,必定会促进竞争的加剧。在未来几年,网络游戏将朝以下的趋势 发展。(1)趋势一:游戏更多样化(2)趋势二:网络游戏媒体化进程加速(3)趋势三:道具收费模式已成主流,计时收费模式将长期存在(
14、4)趋势四:网络游戏技术更加成熟华中科技大学硕士学位论文1.2课题的研究目的及意义本课题主要开发和研究了在网络游戏中管理系统的设计与实现。随着 Internet 和计算机网络的普及,网络已经走进千家万户,人们的生活越来越 离不开网络。学习,工作闲暇之余人们可以通过网络来放松自己,也因为如此网络 游戏开始走进我们的生活。比如说日本麻将就是一个必须依托于互联网进行,可以 允许多人同时参与的网络游戏,通过用户与用户之间的互动达到交流,休闲和娱乐 的目的。正由于网洛游戏允许多用户参与,所以在后台对与用户的管理是必不可缺 的。本文针对麻将游戏系统后台用户管理的需要,构建了一个“基于 PHP 与 MySQ
15、L 的麻将用户后台管理系统”。该系统运用健全的网络体系,建立一个集与 B/S 结构与 先进的 PHP 加 MySQL 技术为一体的,涉及到用户登陆,用户信息管理,用户游戏 得分排名,大会的具体情况等各个环节,具有多层次用户的完善的用户管理系统。 PHP 和 MySQL 都是如今比较流行的开放源代码技术,而且它们都是便于使用、运 行速度快且功能十分强大的免费软件包,非常适用于开发面向数据库的 Web 应用程 序。而且 PHP 使用了 Smarty 的模版,使其具有速度更快,编译型,缓存技术等特 点。PHP 是一种服务器端解释的脚本语言,它是目前最流行的 Web 编程脚本语言之 一。PHP 可以产
16、生动态网页。它功能强大,和 HTML 脚本融合在一起,并内置有访 问数据库的功能。从版本 5 开始,PHP 提供了全面的面向对象支持,可以说是继 C+和 Java 以后又一个全面实现了面向对象概念的编程语言2。MySQL 是基于 SQL 的、完全网络化的跨平台关系型数据库系统,同时是具有 客户机/服务器体系结构的分布式数据库管理系统。它具有功能强、使用简便、管理 方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问 MySQL 数 据库的程序3。在 PHP 所支持的数据库中,PHP+MySQL 为最佳组合。因为在传统 的主从式数据库的架构中,每个 Client 均需专门的应用程序才
17、能取得与后台数据库 的连接成功,因此造成了 Client 端软件的更新,网络的连接以及传输安全等各种问 题。而在 N-Tiers 数据库程序架构中,PHP 做成的网页程序和 MySQL 数据库都存放在 主机服务器上,任何 Client 端仅仅只是需要通过浏览器就可以直接访问网页程序,华中科技大学硕士学位论文只要网页的程序改变了,所有的 Client 也随之改变,这样就确保了所有 Client 端程 序版本的一致性。由于 PHP 网页程序和 Mysql 数据库均在服务器端,所以在连接与 传输安全上更有保障。在网络游戏,web 游戏如此盛行的今天,游戏用户不断增加,本课题就是针对 基于 PHP 和
18、 MySQL 技术开发出游戏后台对用户的管理与实现。旨在通过此系统使 用户更好地了解游戏,进入游戏,享受游戏,也方便管理员更好的管理用户的信息 的基础上,以达到用户,游戏,管理员三者一体的目的。1.3 国内外相关研究情况随着网络游戏的盛行,不仅仅是国内,国外网络游戏市场规模也逐渐扩大。自 网络游戏的出现至今,从单纯文字类网络游戏到 3D 大型场景类网络游戏,网络游 戏的类型已经没有早年那么容易定义了,网络游戏的形式也是趋于多样化。短短几 年发展时间,网络游戏也在世界范围内已经趋向成熟,发达国家的网络游戏与生 活、商业联系密切,已经形成了一套严密规则的产业链,不止带动网络业的发展, 由此涉及的其
19、他周边产业,比如玩具、动漫,以及电信业,带来的商业价值不容小 视,就国内网络游戏市场而言,已经造就了多位亿万富翁。产业利润成倍增加,必 定会促进竞争的加剧。一项调查显示 2007 年中国网络游戏市场规模为 128 亿元,同比增长 66.7%。 2007 年中国网络游戏用户达到 4800 万,环比增长 17.1%。用户增长一方面来自休闲 游戏用户的增加,另外一方面来自于各游戏厂商对二三级等城市的开发。预计在未 来的 4-5 年间,网络游戏还将继续保持 20%以上的增幅。而网络游戏必须是基于用 户的,是用户与用户之间的游戏。网络游戏与后台对于用户的管理密不可分。而 PHP 以其自己的优势在 web
20、 开发中占据了一席之位。PHP 是以 Apache 服务器组件为动作的脚本语言实行环境,一项调查表明,全世 界网站 70%是利用 Apache 作为服务器,而且还在增加。PHP 可以作为一个模块插入 到 Apache 中,从而使其运行速度更快,PHP 极易开发,容易执行,有非常丰富的函 数库,还可以与 JavaScript,AJAX 结合起来。版本 6,支持 Unicode 字符解码, (Unicode)支持广泛的字母,使系统的多国应用能更简易地实现。华中科技大学硕士学位论文现在以 Linux,Apache,MySQL,PHP(或者 Perl,Python)结合,有着独立的 开发和自由的反馈体
21、制,相信以后在 web 开发方向会被广泛的利用。1.4本文的主要研究内容其次课题开发的主要任务和内容为:“游戏后台管理系统”运行的软件及所需开发工具的安装。具体包括:(1)服务器软件 Apache 的安装配置;(2)PHP 的获得与安装;(3)PHP 代码开发工具的安装;(4)Smarty 的安装;(5)数据库设计工具的安装;(6)建立“游戏后台管理系统”的总体框架,也就是程序的总框架;(7)建立 PHP 与 MYSQL 的连接;(8)系统功能模块的设计与实现。 预计达到的要求就是:通过深入的理论研究和编程实践,全面认真的完成上述几个内容。1.5论文研究内容本文是的主要工作包括:第一章 包括本
22、课题的背景(主要介绍了网络游戏的发展历史和发展趋势)、本课 题的研究目的和意义、国内外相关研究情况以及本文的主要研究内容,最后介绍了 本文的具体大纲。第二章 主要介绍了基于 web 的网络游戏管理系统的相关技术。其中包括系统采 用的 web 服务器平台 Apache 的相关介绍以及其配置方法,系统采用的脚本语言 PHP 的相关介绍,系统采用的数据服务器 MySql 的相关介绍及其与 PHP 的连接方法, Ajax 的相关介绍等。第三章 主要介绍了基于 PHP 的网络游戏管理系统的总体架构,系统的硬件以及华中科技大学硕士学位论文软件运行环境,数据库的设计以及针对管理员和用户的不同功能模块的设计,
23、并给 出相应的功能模块图。还包括系统安全性设计。第四章 主要介绍了网络游戏管理系统的关键模块的实现,以及实现这些关键模 块的相关关键代码,还包括系统安全性的实现。第五章 主要针对系统所有功能模块的可运行性进行测试,并得出相关结论。 第六章 对整个项目以及论文的完成进行总结,介绍其特点及对以后的开发和研究工作进行展望。华中科技大学硕士学位论文2关键技术研究本次网络游戏后台管理系统的设计分析中,我们采用了 PHP 技术作为脚本语言 开发,WEB 服务器采用的是 Apache Web Sever,数据库服务器采用的是 MySQL。 这三者的结合不管是从系统运行的效率,稳定性考虑,还是从经济效益等方面
24、出 发,都可以算说得上是最佳组合。在要实现用户图像的显示中还结合了 AJAX 以及 整个过程中都离不开 Smarty,在选择开发模型时考虑到系统的灵活性及可维护性,决 定采用 B/S 模型。本章主要针对这些相关的技术进行阐述和分析。4.2 WEB 服务器 ApacheApache 是世界使用排名第一的 web 服务器2。它几乎可以运行于所有广泛使用 的计算机平台。Apache 源于 NCS Ahttpd 服务器,经过多次修改,成为世界上最流 行的 Web 服务器软件之一。它简单,速度快,性能稳定,并可做代理服务器来使用 等。Apache 2.2 为一个标准的安装包,其安装方法同其他软件一样,从
25、官方网站下 载安装包,解压并编译安装就可以了,安装完后主要是能结合 PHP5 能够顺利运 行,所以必须加一些手动的配置。具体包括以下几个操作:(1)安装 PHP5 后,在(C:php)中 install.txt 里就有下列提示。 Installing as a CGI binaryYou need to insert these three lines to your Apache httpd.conf configuration file to set up the CGI binary:Example 2-5. PHP and Apache 2.0 as CGI ScriptAlias /
26、php/ c:/php/AddType application/x-httpd-php .php# For PHP 4Action application/x-httpd-php /php/php.exe# For PHP 5Action application/x-httpd-php /php/php-cgi.exe华中科技大学硕士学位论文因为此系统用到的是 PHP5,所以只需要在(./Apache2.2/conf)文件中的 http.conf中加入两条信息。ScriptAlias /php/ c:/php/AddType application/x-httpd-php .php# For
27、PHP 5Action application/x-httpd-php /php/php-cgi.exe(2)在(./Apache2.2/conf)中的 http.conf 的配置文件中加入。 LoadFile C:/php/php5ts.dllLoadFile C:/php/libmysql.dllLoadModule php5_module C:/php/php5apache2_2.dll PHPIniDir C:/php指是以 module 方式加载了 PHP 并指明了 PHP 的配置文件 php.ini 的位置。这样PHP 就可以成功地与 Apache 结合运行了。4.3 PHP 技术
28、2.2.1什么是 PHP 技术PHP,即”PHP: Hypertext Preprocessor”,是一种被广泛使用的开放源代码多用 途脚本语言,尤其适用于 web 开发并可以嵌入到 HTML 中去3。其语法利用了 C,Java 和 Perl,非常容易学习。PHP 编写了一个 HTML 脚本,其中嵌入了一些 代码来做一些事情。PHP 代码被包含在特殊的起始符和结束符中,使得可以进出 “PHP 模式”。和客户端的 JavaScript 不同的是,PHP 代码是运行在服务端的。如果在服务 器上建立了如上例类似的代码,则在运行该脚本后,客户端就能接收到其结果,但 他们无法得知其背后的代码是如何运作的
29、。甚至可以将 web 服务器设置成让 PHP 来处理所有的 HTML 文件,这么一来,用户就无法得知服务端到底做了什么。使用 PHP 的一大好处是它对于初学者来说极其简单,同时也给专业的程序员 提供了各种高级的特性。尽管 PHP 的开发是以服务端脚本为目的,但事实上其功能 远不局限与此。下面就来详细介绍其特点及功能。华中科技大学硕士学位论文2.2.2PHP 的获得与安装在本次开发过程中使用的 PHP 版本为 php-5.2.5-Win32,因为 PHP 完全免费,所 以采用了在 PHP 的官方网站上获得了 PHP 的编译程序。官方网站 为:为了能够使 PHP 能够使用顺利,并且能够很好的与 M
30、ySQL 结合,还需要手动 配置一下。首先把 PHP 的配置文件命名为 php.ini,打开编辑找出一个 register_globals 设置 成 Off,这主要是从安全的角度出发,此值是用来打开全局变量,如果设置成 ON 的 话,采用任何一个$变量名就可以直接获取传过来的值,这样做很不安全,网页传 送的值会很容易被截取。如果设置成 OFF 的话,就只能用$_POST和$_GET来接 收传送过来的值了。其次是为了使 PHP 能够直接调用其他的模块,例如允许 MySQL 的使用,就需 要把 Windows Extensions 下的extension=php_mysql.dll前面的;去掉。还
31、要加载其 他模块的话直接把前面的;去掉就可以了。PHP 所使用的模块都存放在 ext 的目录 下,为了使用方便,在 Windows 中的环境变量把 PHP 安装路径下的 ext 指定到 windows 系统路径中。这样,整个 PHP 的配置已经结束。4.4 MySQL 数据库系统PHP 的优点中有一个比较吸引的地方就是支持多种数据库,如 Informix,SQL Server,Oracle,MySQL 等,在其支持的数据库中以 PHP+MySQL 为最佳组合,因 为在传统的主从式数据库的架构中,每个 Client 均需专门的应用程序才能取得与后 台数据库的连接成功,因此造成了 Client 端
32、软件的更新,网络的连接以及传输安全 等各种问题。而在 N-Tiers 数据库程序架构中,PHP 做成的网页程序和 MySQL 数据库 都存放在主机服务器上,任何 Client 端仅仅只是需要通过浏览器就可以直接访问网 页程序,只要网页的程序改变了,所有的 Client 也随之改变,这样就确保了所有华中科技大学硕士学位论文Client 端程序版本的一致性。由于 PHP 网页程序和 MySQL 数据库均在服务器端,所 以在连接与传输安全上更有保障。为了建立与 MySQL 服务器的连接,之前必须注意两点。(1)安装 php 时,在 php.ini 中是否存在这一语句:extension=php_my
33、sql.dll。 此语句是允许 Mysql 函数库可以执行。(2)PHP 目录中的 MySQL 相关函数库是否已经拷贝到系统安装目录的 system32 目录下。此时还有一点要注意就是 libmysql.dll 为 MySQL 4.1 之前版本的 扩展支持,libmysqli.dll 为 MySQL 4.1 之后版本的扩展支持。确保这两点已经完成就可以建立连接了。为了与 MySQL 服务器连接,PHP 中这个任务是通过 mysql_connect() 函数完成。 此函数的语法为 mysql_connect(servername,username,password); servername 可选
34、。规 定要连接的服务器。username 可选。规定登录所使用的用户名。password 可选。规 定登录所使用的密码。脚本一结束,就要关闭连接。如果不关闭的话大型系统速度 会很慢。此时就使用 mysql_close() 函数。还有几个关键函数,比如说 mysql_select_db, 此函数设置使用的数据库,如果成功则返回 true,否则返回 false。还有 mysql_query 函数。此函数执行一条 MySQL 查询。但是在此项目中,PHP 与 MySQL 的连接主要是 ADODB 来完成的,ADODB4 是 Active Data Objects Data Base 的简称,它是一种
35、 PHP 存取数据库的中间函式组件。 主要运用到了 ADONewConnection(),Connect()函数。具体的用法在第四章详细讲解。4.5 AJAX 技术在项目中,需要把 BASE64 的图片信息从数据库中提取,然后在页面上显示, 此时运用了 PHP 与 JavaScript 以及 AJAX 结合。在 Ajax 中主要使用组件 XMLHttpRequest 与 PHP 进行交互5,Ajax 通过对该组 件的使用,有效地降低了服务器的负担和用户的等待时间。Ajax 与 PHP 交互主要分 三步。(1)初始化 XMLHttpRequest 对象。华中科技大学硕士学位论文(2)设置请求状态
36、和返回码处理函数语法格式如下所示。xmlobj.onreadystatechange = function_name;其中,xmlobj 是 XMLHttpRequest 的对象,function_name 是用来处理请求状态 和返回码的函数名。(3)发送 HTTP 请求,语法格式如下所示。 xmlobj.open(send_method, url, flag);其中,xmlobj 是 XMLHttpRequest 的对象。send_method 是发送方法,可以是“GET”或“POST”,对应于表单的 GET 和 POST 方法。本系统的图片标示功能是用的 GET 方法。url 是页面要调用
37、的地址。flag 是一个标记位,如果为 true 则表示在等待 被调用页面响应的时间内可以继续执行页面代码,反之为 false。2.5 B/S 应用模式B/S 模式,即浏览器服务器模式(Browser/Server),是一种从传统的二层 C/S 模式发展起来的新的网络结构模式,其本质是三层结构 C/S 模式6。BS 网络结构 模式是基于 Internet 的需求而出现并发展的。Internet 是应用 TCP IP 协议建立的企事 业单位内部专用网络,它采用诸如 TCP IP、HTTP、SMTP 和 HTML 等 Internet 技术 和标准,能为企事业单位内部交换信息提供服务。同时,它具有
38、连接 Internet 的功能 和防止外界入侵的安全措施。另一方面,由于数据库具有强大的数据存储和管理能 力,并且能够动态地进行数据输入和输出,如果把数据库应用于 Internet 上,不仅可 以实现大量信息的网上发布,而且能够为广大用户提供动态的信息查询和数据处理 服务,进而加强企事业单位内部部门之间、上级部门与下级部门之间、企事业单位 员工之间、企事业单位与客户之间以及企事业单位与企事业单位之间的信息交流, 降低企事业单位的日常工作成本,提高企事业单位的经济效益。2.5.1 B/S 模式的工作原理在 B/S 模式中,客户端运行浏览器软件。浏览器以超文本形式向 Web 服务器提 出访问数据库
39、的要求,Web 服务器接受客户端请求后,将这个请求转化为 SQL 语 法,并交给数据库服务器,数据库服务器得到请求后,验证其合法性,并进行数据华中科技大学硕士学位论文处理,然后将处理后的结果返回给 Web 服务器,Web 服务器再一次将得到的所有结 果进行转化,变成 HTML 文档形式,转发给客户端浏览器以友好的 Web 页面形式显 示出来。2.6 本章小结本章主要介绍了基于 web 的网络游戏管理系统的相关技术。其中包括系统采用 的 web 服务器平台 Apache 的相关介绍以及其配置方法,系统采用的脚本语言 PHP 的相关介绍,系统采用的数据服务器 MySql 的相关介绍及其与 PHP
40、的连接方法, Ajax 的相关介绍等。华中科技大学硕士学位论文3系统的分析与设计本课题主要是针对一套已经成型的网络游戏系统而开发的管理系统,其主要目 的是通过此系统使用户更好地了解游戏,进入游戏,享受游戏,也方便管理员更好 的管理用户的信息的基础上,以达到用户,游戏,管理员三者一体的目的。3.1需求分析本系统基于 PHP 和 MySQL 技术开发出游戏后台对用户的管理与实现。在功能 上实现管理员方便管理用户的信息,用户可以通过此系统查询自己的各种信息,在 实现此系统功能的要求上数据完全准确,在安全性上实现高安全,多级安全保护措 施实现非法入侵不可等目的,通过此系统使用户更好地了解游戏,进入游戏
41、,享受 游戏,也方便管理员更好的管理用户的信息的基础上,以达到用户,游戏,管理员 三者一体的目的。3.2系统架构一个大型的网络游戏随着访问的人越来越多,响应速度会变得越来越慢,查找 原因,发现是访问数据库的操作太多,导致数据库连接竞争激烈,所以响应变慢。 但是数据库连接又不能开太多,否则数据库机器压力会很大,因此会考虑采用缓存 机制来减少数据库连接资源的竞争和对数据库读的压力,这时就需要做一些工作来 解决这个问题了。如图 3.1 所示,为了提高访问速度专门设置了缓存,包括前端缓存 Squid,后端 缓存 Memcached 以及创建了外部索引文件即使用 Sqhinx。还对数据库服务器的阵列 进
42、行了处理,包括将数据服务器分为主服务器和从服务器,主要是为了将数据库的 读写操作分开,以及将主从服务器分别按照一定规则设置成阵列。总之尽量减少对 数据库的请求数量,进一步使用了负载均衡,最大程度地降低了单台服务器的承载 压力。架构图如图 3.1 所示。华中科技大学硕士学位论文图 3.1游戏管理系统架构图Nginx 7 (engine x) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个IMAP/POP3/SMTP 代理服务器。使用它做负载均衡的理由:(1)可以免费使用。(2)能够高连接并发,可以支持高达 5 万个并发连接数的响应。(3)它主要是采 用 C 语言进行编写,不光是内存以及
43、 CPU 均开销少。(4)配置文件简单。(5)支 持 url 重写,支持 GZIP 压缩节省带宽。(6)很稳定,几乎可以做到 7*24 不间断地 运行。游戏管理的架构基本原理是客户端在浏览器的地址栏输入相关地址后,将首先 访问最前端的代理服务器,静态文本型文件如 HTML,js,css 等由此服务器直接返 回,因为此游戏项目涉及到很多图片,所以还设置了一个单独的图片服务器。此项 目还设置了一个后端的 Squid 服务器,可以将一部分特定的 url 代理到其中,Squid 服务器可以根据 URL 地址检查是否存在有缓存的内容,如果检查到有则返回给前端 服务器,否则就再访问后端的 PHP 应用,获
44、取相关内容并缓存以备下次访问。 FastCGI 组方式的 PHP 进程群,每个进程跑一份代码的拷贝,除逻辑外,还负责连华中科技大学硕士学位论文接数据库和内缓存的进程。因为需要考虑到客户端 session 回话的问题,所以统一使 用了数据缓存服务器 memcached 存储 session 记录。总结起来此游戏管理架构的优点包括以下几点:(1) 基于集群的负载均衡,失败恢复,包括应用服务器和数据库服务器。(2) 前端的基于静态页面缓存的 web 加速器,主要应用于前端代理服务器和 Squid 的应用。前端代理服务器将大部分的静态资源(图片,js,css,HTML 等)缓 存起来,直接返回给访问者
45、,减少应用服务器的负载。(3) 数据服务器采用 master-slave 模式,利用数据库服务器在主从服务器间进 行同步,应用只负责把数据写到主服务器,而从数据库读取数据是通过选择一台或 多台从服务器来完成。(4) 将数据按照不同策略方案划分到不同的服务器上,分散数据库的压力。(5) 利用 Memcached 进行缓存,用比较大的内存把这些不变的数据全部缓存 起来,可以更有效的利用资源。Memcached 是一个高性能的分布式内存对象缓存系统,通过在内存里维护一个 统一的巨大的 hash 表,它能够用来存储各种格式的数据,包括图像,视频,文件以 及数据库检索的结果等6。使用 Memcached
46、 做的网站一般流量会很大,为了缓解数 据库的压力,采用 Memcached 作为一个缓存区域,使得部分信息保存入内存,并且 在前端能够迅速的进行存取。Memcached 作为高速运行的分布式缓存服务器,具有 以下的特点7。(1) 协议简单- Memcached 的服务器客户端通信并不是使用复杂的 XML 等 格式,相反的是其使用简单的基本文 本行的协议,因此通过 telnet 也能在 Memcached 上取得数据和保存数据。(2) 基于 libevent 的事件处理- libevent 是一个程序库,它将 Linux 的 epoll, BSD 类操作系统的 kqueue 等事件处理功能封装成
47、统一的接口。即使对服务器的连接 数增加,也能发挥 O(1)的性能。Memcached 使用这个 libevent 库,因此能在 Linux, BSD,Solaris 等操作系统上发挥其高性能。(3) 内置内存存储方式-为了提高性能,Memcached 中保存的数据都存储在华中科技大学硕士学位论文Memcached 内置的内存存储空间中。因为数据仅存在内存中,只要重启 Memcached,或者重启操作系统就会丢失全部数据。而且,内容容量达到指定值 后,基于 LRU(Least Recently Used)算法就会自动删除不使用的缓存。(4) Memcached 不互相通信的分布式 - 服务器没有分布式功能,各个 Memcached 不会相互通信以共享信息。3.3 数据库的设