每秒处理数百万个请求的数据库硬件和软件?

Pla*_*gue 5 database-design database-recommendation

我很好奇支持强大的 MMORPG 所需的硬件和软件要求。例如,如果我要构建一个可以同时包含数百万个请求并避免延迟的系统,我需要什么样的需求(硬件和软件)?如何通过有效处理请求来防止游戏出现故障?

我理解这取决于正确的编程和数据库结构。假设有 1 个表将为每个请求更新 2 行,并且有一百万个请求,我需要什么样的系统和数据库才能完美无延迟地做到这一点?处理所有这些请求需要多长时间?

只是想知道如果我要开发 MMORPG,我应该期待什么。

我真的很想得到您对此的反馈/回应。

Ker*_*tts 6

这真的不是数据库平台问题。如果提供足够的硬件和足够的内存、磁盘和网络带宽,所有主要的数据库和操作系统都可以正常工作。

所有数据库都是为这种场景构建的——也就是说,您需要一直更新来自不同客户端的大量行。这就是索引和主键的用途,并且数据库针对以这种方式更新进行了优化。(即,更新 your_table SET your_column=your_value where your_key=12)

硬件要求将是您最大的问题,我怀疑您需要在这里考虑很多,包括:

  • 故障转移(当您的主服务器出现故障时会发生什么?)
  • 集群(您可能只需要拥有多个数据库服务器来处理您的负载)
  • 处理器(2?4?8?16?多核?数据库是否提供优化的多核支持?)
  • 内存(越快越好,但您的芯片组也必须能够处理带宽)
  • 磁盘(I/O 越快越好。eSATA/SATA 或光纤等)
  • 网络(您需要大量带宽来处理此类流量)
  • 虚拟化(将其构建为真正的硬件有意义吗?为什么不作为云中的虚拟服务器?Amazon / Rackspace / 等?)

值得庆幸的是,大部分缩放问题都是在硬件或数据库级别处理的。也就是说,您现在可以在慢速服务器上启动数据库,随着流量的增加,您可以对代码或数据库结构进行最少的更改进行相应的调整。将会改变的是你的硬件和你的数据库配置。大多数数据库服务器将支持故障转移/集群,而对您现有的代码或结构几乎没有更改。(但一定要先研究可能的成本和效率)

  • 所有数据最终都必须写入磁盘。如果它没有写入磁盘,并且断电,你就失去了一切。磁盘总是很重要,因为磁盘(几乎)总是最慢的组件。 (2认同)
  • 与 SQL Server 的情况相同,脏页在检查点写入磁盘。但是,仍然有 SQL 的事务日志记录或 Oracle 的重做日志,必须在每次提交时写入磁盘。 (2认同)