【问题标题】:Server architecture for a scalable Facebook game可扩展 Facebook 游戏的服务器架构
【发布时间】:2011-06-20 19:09:37
【问题描述】:

我和一些朋友为 Facebook 编写了一款游戏,但并未考虑游戏的实际架构 - 想象一下,当我们每月拥有超过 300,000 名独立玩家并且我们的服务器崩溃时,我们会感到惊讶。

现在我们正在重新设计游戏的整个服务器端,以使其更具可扩展性,并能够支持数十万甚至数百万的用户。

目前我对整个缩放概念还是个新手,但据我了解,这或多或少是我们需要的: 1.负载均衡器 2. 每 20,000~ 个并发用户一个 Web 服务器(我们联系了第 3 方 Comet 开发人员,声称他们每个节点最多可以支持 20,000 个并发连接) 3.一个缓存集群 4. 数据库集群

现在这显然是非常抽象的,但我错过了什么吗? 如果我们在 .NET 中开发这个,谁能推荐一个好的集群缓存服务器技术?

请记住:

  1. 我们的目标是覆盖数百万玩家
  2. 我们的目标是覆盖成千上万的并发用户中的 10 到 100 位
  3. 我们需要在缓存中保留尽可能多的数据,并每隔一段时间将其转储到数据库中
  4. 我们确实在玩家之间进行了某种交互(获取玩家分数更新等),我们需要一个集中或复制的缓存来处理(基本上意味着我们需要所有 Web 服务器访问的缓存数据完全同步)

【问题讨论】:

    标签: .net facebook caching scalability cluster-computing


    【解决方案1】:

    如何将其部署到 Azure 云中?相信他们所说的,可扩展性将不再是您关心的问题。

    与其创建数据库集群,不如将玩家拆分到不同的“服务器”、“世界”或您在游戏中的名称。我不知道你在说什么类型的游戏,但我玩的大多数浏览器游戏都这样做是为了能够处理负载。

    【讨论】:

    • 好的,这是一个选项,但是 Azure 云是否允许我们使用以下内容? * 数据库集群 * 缓存集群 另外,请记住,我们的目标是 100,000s/1,000,000s 并发用户,有些操作需要不同玩家的即时和同步信息。
    • Azure 会为您处理负载平衡,因此在一个角色下添加更多实例会自动将玩家路由到不同的实例(服务器)。你用什么做数据库?在 azure 中也有许多不同的选项来处理这个问题。
    猜你喜欢
    • 2013-02-01
    • 2016-12-18
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 2013-06-26
    相关资源
    最近更新 更多