代码之家  ›  专栏  ›  技术社区  ›  MikeWyatt

Django后端处理

  •  4
  • MikeWyatt  · 技术社区  · 14 年前

    我正在开发一款基于回合的网络游戏,它将在服务器上执行所有的世界更新(玩家指令、物理、脚本事件等)。现在,我只需在一个Web请求回调中更新这个世界。不幸的是,这种幼稚的方法根本无法扩展。当我开始运行许多并发游戏时,我不想让我的网络服务器陷入困境。

    那么,将负载与Web服务器分离的最佳方法是什么,理想情况下甚至可以在单独的机器上运行?

    • 一个带有无限循环的简单python模块?
    • 分布式任务 Celery ?
    • 某种跨平台cron调度程序?
    • 其他一些我不知道的奇特的django特性或第三方库?

    我还希望通过使用相同的模型层来最小化代码重复。这可能意味着我的服务需要访问django模型代码,所以这就确定了我如何构建服务。

    2 回复  |  直到 14 年前
        1
  •  6
  •   Daniel Roseman    14 年前

    我认为芹菜,你在问题中提到的,是到这里的路。它将很好地与您的其他设置接口,支持您最终分离系统的目标,并且与Django兼容。

        2
  •  0
  •   Mike DeSimone    14 年前

    我只需要编写后端来使用django数据库接口(查看您的 manage.py )将其作为自己的进程生成,并与 Protocol Buffers . 那条路线应该移到一台工作很少的独立机器上。 MPI 可能也是一种选择。

    管道、FIFOS和大多数其他IPC都要求两个进程在同一个框中。

    尽管我必须指出你的前提中的一个缺陷:

    不幸的是,这种幼稚的方法根本无法扩展。当我开始运行许多并发游戏时,我不想让我的网络服务器陷入困境。

    如果您运行并发游戏,只要您将给定游戏的所有部分保存在同一台服务器上,这是没有问题的,除非所有游戏都需要一个公共资源。然后真正的问题就变成了跨服务器的负载平衡。