首页> 中文学位 >基于Cassandra的MMO游戏数据管理和综合网站的实现
【6h】

基于Cassandra的MMO游戏数据管理和综合网站的实现

代理获取

摘要

近年来,随着网络大规模的多人线上游戏(MMOGs)的普及和成功,MMOGs的开发吸引了数量众多的开发者,而游戏玩家人数的巨大飞跃使得游戏收入快速增长,已达到每年数十亿美元。但是由于玩家数量巨大和游戏结构复杂,MMOGs在项目开发时存在巨大的成本投入和相当大的应用风险,有时候会导致项目无以为继。在一般情况下,MMOGs必须访问大量不同类型的数据,所以它需要具有高可用性、强容错性和高可扩展性的数据库作为支撑。随着越来越多的玩家加入,不断增长的数据量是关系数据库管理的一个巨大挑战,它无法通过简单地增加新的服务器来有效解决。
  本论文专注于使用SQL与NoSQL相结合的数据库支撑环境来解决结构数据与非结构数据并存的问题,使其可以完全满足大型网络的需求,其中MMO游戏在本论文是NoSQL数据库的应用对象,而有关用户、帐号等数据还是采用SQL数据库来进行存储与管理。通过深入的研究和分析,本文主要分为两部分:第一部分论述我们提出的使用Cassandra NoSQL数据库方案来存储MMO游戏数据的方案,第二部分论述开发一个综合网络游戏网站的关键技术与实现方案,这个网站实现了游戏和对外服务网站的主要功能并增加了一些特色功能如通过卡序列号来支付的新方式和通过朋友邀请来实现的新的广告方法。
  为了提高MMO游戏系统的性能,我们首先分析了大型Web应用的数据分类,在游戏系统应用和网站应用这两个应用中,我们根据数据的特点,出于获得更好使用性能的考虑,我们把MMO游戏数据分为两个大类:
  1.游戏数据:这些数据包括游戏世界数据、State数据和记录数据
  游戏数据的管理面临着许多挑战,因为其数据的海量性、结构的不一致性及用户访问数据的频繁性,主要存在性能、可用性、可扩展性和数据的一致性等方面的挑战性问题,我们针对实际需求,在本论文中总结了关键的挑战,并提出了我们对这些关键挑战的解决方法。
  由于游戏系统有数量庞大的同时在线的玩家,大量的并发数据库连接与时续不断的数据访问、修改等对服务器的数据吞吐量提出了挑战,用户要求操作必须实时执行,而磁盘上海量数据的响应效率就本身存在问题,MMO游戏应用程序只能在一定的时间范围内响应每个用户的请求,这就需要提供一个让用户感觉还不错的可用性,论文从多方面对此进行了论述与分析。系统还需要有一定的容忍数据丢失的能力以此来保证数据的容错性与一致性,论文从模型的角度提出数据同步方案与一致性校验来提高系统的容错性与一致性,尤其对于状态数据的变化我们保证在一定时间段内同步到相关的玩家用户中。通常情况下,庞大用户的同时启动会给系统的运行性能带来挑战,系统的可展性在高峰时段显得非常关键,我们在网络游戏运行策略中控制小或中等数量的用户同时启动以此来保证用户启动游戏的成功率,但在广告时段允许用户数量快速增长。
  论文通过对游戏数据特点的深入分析,对其响应的实时性与可用性、容错性与一致性、可扩展性与应用性等方面的平衡提出了思路,为开发一个成功的MMO游戏克服数据管理挑战性问题提出了技术参考方案。
  2.帐户数据:包括用户帐号、用户详细信息、定单、用户游戏状态、用户日志等数据
  帐户数据数据经分析不需要大数据技术工具,如采用统一的NoSQL数据库存储则效率非常低下,因此我们选用MySQL数据库系统来存储和管理这些数据从而保证数据的存取的高效性与管理的便利性,因为MySQL数据库系统是一个典型的SQL系统,同时也是开源的、简单易用的系统。论文还设计了一个MMO游戏网站并采用了一种新颖的支付方式,此部分数据的管理也同样由MySQL数据库系统负责。论文还设计了由朋友邀请而发起的广告模式,并采用电子邮件提醒注册用户,相关的广告、朋友关系及以整个过程产生的数据也都由管理MySQL数据库系统负责。
  由于完整的游戏系统有前台与后台,结构化数据与非结构化数据既有明显的区别又有一定的关联关系,部分数据还需要和其他数据进行交换,由于管理软件存在NoSQL与SQL明显的不同,所以我们对这种数据进行了深入的分析并力争提供好的处理方法。论文推荐了一个新技术方法专门满足需要游戏数据类型一致性要求的,这个方法是通过增加一个数据层能够利用Cassandra中的timestamp来解决和克服不同类型数据的一致性挑战。
  为了整体提高系统的性能保证系统有较好的数据一致性与较好的可扩展性,论文分析了MMOGs的关键技术,通过以下三个步骤进行了详细的论述:
  第一步是分析了游戏数据的需求并根据该需求对游戏数据进行了详细分类。按照我们对实例系统的研究和分析(专门研究了三个游戏)和整个MMO游戏的应用系统和数据库系统的特点,我们分析得出了五个方面的主要数据需求,其中包括一致性、可用性、可扩展性、分布性和高性能。我们对游戏据进行了分组,根据其需求特征分为4组,每一种数据类别确定了一个重要性的需求,我们将重要性划分为3级,并对每一种数据指出其面临的主要挑战与解决方法。
  第二步,我们选择了合适的数据管理工具——Cassandra数据管理系统,研究表明Cassandra可以响应大部分的游戏数据需求包括可用性、可扩展性、分布性与高性能。但是由于CAP定理,Cassandra不能满足一致性问题,所以Cassandra无法处理state和账号数据的一致性要求,对这个问题我们提出了基于MMOG方面的额外数据层方案,它是针对Cassandra的特点而专门设计解决一致性问题的方案。Cassandra在每行都有记录时间戳,并利用它作为版本标识(ID),因此,我们可从服务器端和Cassandra的某个区域服务器记录的时间戳获取数据的相关性以解决数据一致性问题。当我们读取Cassandra状态数据时,记录在服务器端的时间戳将根据相应的读取请求进行响应。通过这种方式,我们就可以方便地找出最新的数据。这层包含数据访问服务机制的实现主要就是为了解决state数据和账号数据的一致性问题。
  数据访问服务器负责内存中的数据库和Cassandra的数据之间的交换。它们确保状态数据的一致性,保持时间戳的表。但为了平衡工作量,防止服务器故障,几个数据访问服务器需要在一个区域的服务器上运行。数据访问服务器需要彼此系统时钟自动同步。然而要实现完全同步是非常困难的。经分析我们得出时间差小于数据备份的频率是可以接受的。我们研究了详细的同步过程,我们知道,在数据访问服务器的一个重要组成部分是时间戳表,其中存储状态数据的ID,最后的修改时间(LMT)和日志状态(LS)。如果在游戏中的一个字符或一个对象是激活的,LS的其值是“登录”。否则,LS的值是“注销”。我们利用哈希函数将IDs的数据映射到不同的时间戳表,也把它分布和分区到数据访问的服务器。然后因为时间戳表采用相同的哈希函数,每个数据访问服务器会定期获得从快照中相应的状态数据。为了减少Cassandra的I/O工作负载,数据访问服务器会生成一个消息包括其所有负责state数据以及新的时间戳TS,然后将其发送到Cassandra的存储系统。通过这种方式,一个状态数据的更新失败不会阻止提交其他状态数据。这些消息路由到适当的节点,当一个节点接收到一个消息时,它会立即将更改写入到提交日志,并记录TS作为每列中的版本号。如果TS比已经有的状态数据LMT高,则数据访问服务器使用TS更换LMT。
  第三步是通过游戏后台获取数据,我们通过用Cassandra监控工具获取不同数量的Cassandra节点数据,并且进行测试和评估。通过用后台造机器人玩家功能的方式记录玩家对游戏数据的影响,通过游戏后台跳变条件获取游戏注册率、游戏创建率、在线率和玩家参加某个操作点的参加率等数据。在监控过程中用Cassandra的监控功能来记录read和write数据的差别。通过增加Cassandra节点的数量测来获取不同的测试数据,并分析不同的Cassandra节点数量与对系统整体性能的影响。
  论文为了满足MMO游戏的可用性需求、克服存在的挑战,我们选择了利用NoSQL和SQL相结合的方式来满足实用的大型MMO游戏的整体性能要求,通过提供简单有效的实现方案来满足MMO游戏开发商、分销商和广大用户各自的需求。
  论文通过研究关键技术、设计技术方案、实施主要功能来提供大型MMO游戏系统的整体解决方案,实际测试结果表明我们的方法有很好的适用性,能够达到所需要的性能。

著录项

相似文献

  • 中文文献
  • 外文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号