gpt4 book ai didi

MMORPG 的 NoSql 选项

转载 作者:行者123 更新时间:2023-12-04 18:15:26 25 4
gpt4 key购买 nike

我想知道对于典型的 MMORPG,nosql 选项可以代替 rdbms 或与 rdbms 一起带来什么样的好处。特别是,我很好奇在 nosql 下如何保持数据完整性。

我将举几个例子,让我对服务器逻辑的运行方式感到困惑:

场景1:假设玩家A和B同时攻击玩家C。无论哪个玩家杀死玩家 C,都会更新 player_stats.kill_count。通常,可以通过以下方式处理此 AttackPlayerRequest:

开始交易
{
攻击者健康=新攻击者健康

defender.health = newDefenderHealth

如果防御者.健康 == 0
{
攻击者.stats.kills += 1
}
}

场景 2:玩家 A 将一件元素卖给 NPC 供应商,并迅速尝试将同一元素从他们的库存中丢到地上。 (即使您的 UI 不允许这样做,他们当然也可以将事件放在网络上)。

这个列表显然还在继续,并且影响了几乎每个玩家-玩家-玩家-世界的交互。最后一条信息是服务器是线程化的,因为我们不希望任何特别冗长的请求阻止其他玩家在游戏中做简单的事情。

我想我的大问题是,我是否误解了关于 nosql 的一些问题,其中这是一个微不足道的问题?如果不是,这是否超出了 nosql 选项旨在解决的范围?在典型的 MMO 下,可以在哪里注入(inject) nosql 选项来提高服务器性能?

最佳答案

这一切都取决于您的游戏如何运作。

NoSQL

Facebook 上的 Farmville 使用 NoSQL。 Farmville 就像一台巨大的服务器,每个人都在使用。假设 Farmville 在其数据库集群中使用 3 台计算机。圣地亚哥的计算机 1。纽约的计算机 2。莫斯科的计算机 3。我从圣地亚哥登录 Facebook,所以我
在这里连接数据库。我升级并退出。最终,计算机 1 会告诉计算机 2 和 3 我是如何升级的,但俄罗斯的人可能需要一个小时才能看到我帐户的这些更改。

NoSQL 扩展就像将另一台计算机添加到集群并告诉该区域的网站使用该计算机一样简单。

SQL

有几种方法可以使 SQL 工作,但我将解释一种使其类似于 NoSQL 的方法

每个数据中心将有 10 个游戏服务器,每个游戏服务器都有自己的 SQL 数据库 + 1 个子主数据库。子主数据库在所有 10 台服务器之间共享信息,因此如果您登录服务器 1 并制作角色 John Doe,然后注销,如果您接下来登录该服务器,服务器 10 将拥有您的角色。

然后,子主服务器与您总部的主服务器共享其信息。然后,主服务器将把 John Doe 共享给所有其他数据中心的所有其他子主服务器,这些子主服务器将更新他们的游戏服务器。此配置将允许您登录到旧金山的 Weed 服务器,播放您的角色,注销,登录到莫斯科的 Vodka 服务器,仍然可以看到您的角色。

魔兽世界等游戏使用 SQL,但只有数据库的某些部分是共享的。这允许减少每台计算机上的数据库大小,并降低硬件要求。

在现实生活中,每个 Sub Master 都会有一个备份 Sub Master,并且您的 Master 服务器会有一些备份服务器,以防一台服务器出现故障,您的整个网络不会锁定。

关于MMORPG 的 NoSql 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4413483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com