对于mmo,应该使用哪种关于cap定理的数据库?

时间:2011-11-17 20:09:45

标签: mmo distributed-database

让我们假设一个mmo正在创建,具有第一人称视角的特征,每个人都玩一个世界(如在线前夕),并且是沙盒游戏。哪个数据库最符合cap theorem的需求? CA,AP,CP和为什么?

1 个答案:

答案 0 :(得分:3)

所有CAP理论的租户都必须在MMO中​​解决。数据库不会做所有繁重的工作 - 服务器应用程序同样重要,如果不是更重要的话。

视频游戏需要比数据库能够提供的更快的响应时间。这并不是说IT基础架构和架构工作在各个层面都没有用来尽可能地挤出瓶颈,但是数据库不是唯一负责平滑MMO体验的部分。< / p>

MMO服务器进程中的大多数工作可能首先提交到内存,然后才会假脱机到数据库。如果您要在应用程序启动时缓存需要快速访问的所有内容,则不需要数据库甚至有200毫秒的响应时间。如果您不进行此缓存,那么无论您的数据库速度有多快或多么激进,都不会为客户端提供200毫秒的响应时间。具有正确数据结构的内存速度更快。

通过所有缓存,大多数CAP保证变得不那么有意义且不那么重要。

来自the wiki article on CAP theorem

  

... CAP通常被用来排除在现代云计算系统的高弹性第一层中运行的服务的一致性。这些服务通常需要无状态或仅维护软状态(缓存数据),即使内层服务暂时无法访问,也必须具有响应能力......

这与MMO的要求不符。 MMO服务器进程无状态,并且不仅仅包含软状态(缓存数据)。他们将积极预先缓存大量的世界数据,以弥补数据库缺乏提供近乎即时响应时间保证的能力。

MMO如何解决这些问题的示例(基本上是缓存):

  • C onsistency - 您可以使用数据位置轻松解决此问题。 MMO世界中的大多数东西都不会对其他任何东西产生影响。你不需要知道星系中有一半人正在做什么,更不用说他们遇到的怪物,或者他们正在掠夺的东西。所以你不需要DB来提供它。因此,可以以多个DB之间的一致性无关紧要的方式对数据进行分区。你需要保持一致的东西(不多 - 主要是你的角色/库存/邮件/银行/拍卖行)可以留在记忆中,因此具有高度一致性,或者可以忍受其他两个CAP轴中的一个。 / p>

  • A可用性 - 您可以通过积极的和算法侵入式缓存轻松解决此问题。某些数据很重要,在这种情况下您可以缓存它。其他数据并不重要,在这种情况下,您并不总是需要它可用(例如我在Consistency中提到的事情,这可能会导致可用性失效)。

  • P artition Tolerance - 您可以通过缓存轻松解决部分数据访问问题。记忆总是可用的,你会把它塞满任何重要的东西。总是有权访问的任何 重要的东西可能会失去访问权限,玩家的痛苦阈值会降低(例如,一致性中提到的内容)。

因此,C onsistency是最有价值的,因为可用性和分区容忍性已经在超级攻击性和算法侵入性缓存中得到解决。即使这样,一致性对于某些数据也很重要。