最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何缩放状态的NodeJS应用

IT培训 admin 10浏览 0评论

如何缩放状态的NodeJS应用

我目前工作的一个基于Web的MMORPG游戏,并希望建立基于泊坞窗和DigitalOcean液滴的自动缩放策略。

不过,我想知道我怎么能管理这样做:

我的游戏服务器将不得不在不同的Docker容器但每一个游戏服务器实例应该采取行动,如果它只是一个巨大的游戏服务器可分开。这意味着,每次修改在一个(字符移动)发生也应在每一个其他游戏服务器进行镜像。

我试图得到这个工作(至少在概念上),但不能找到一种方法,我所有的情况下正确地同步。我应该使用一个主只有广播的事件或者是有其他选择吗?

我想知道我的MySQL数据库同样的事情:因为每一个游戏服务器将不得不读/从/写入数据库,我将如何使其正常规模的游戏变得越来越大?我能想到的最好的解决办法是保持数据库这将是非常强大的一台服务器上。

据我所知,这可能是容易的,如果所有的游戏服务器没有“分享”他们的状态,但是这主要是认为,这样我可以在活动中突然出现大幅波动的情况下,迅速形成规模。

(会有不同的“全球性”的游戏服务器,比如A,B,C ......但每个那些全球性的游戏服务器的应该是,在幕后,1-X泊坞窗容器组成运行的“真实”的游戏服务器,以便后面的“全球性”的游戏服务器仅仅是一个概念)

回答如下:

你的国家的问题是太普通,它是很难给出一个具体的回应。然而让我鲁莽,并给你一些通用的比例建议:

  • 从数据库中删除计数器。相反,主键是自动递增的ID,尝试分配随机的UUID。
  • 必须针对中心点由是自包含的数据进行验证的变化数据。例如,对于身份验证,而不必在DB的用户凭据,使用可以通过任何主机进行验证JSON网络令牌。
  • 使用诸如一致的哈希值,而不需要负载均衡来平衡负载。当然,使用该散列分布以及功能,避免/最小化冲突。

上述建议基本上都是关于改变设计,从状态迁移到无国籍尽可能多的方面,你可以。如果你反正需要提供有状态的部分,试图猜测哪些实体将有更多的机会分享状态数据,并在同一个(或接近服务器)进行分配。例如,如果在你的游戏中的城市,尝试在同一台服务器是在同一个城市的用户分配,因为他们更愿意在它们之间进行交互(和共享状态数据)相比,在不同城市的用户。

当然,如果这个城市太大了,这是非常拥挤的,你可能需要在城市中更多的服务器进行分区,以避免服务器过载。

如何缩放状态的NodeJS应用

我目前工作的一个基于Web的MMORPG游戏,并希望建立基于泊坞窗和DigitalOcean液滴的自动缩放策略。

不过,我想知道我怎么能管理这样做:

我的游戏服务器将不得不在不同的Docker容器但每一个游戏服务器实例应该采取行动,如果它只是一个巨大的游戏服务器可分开。这意味着,每次修改在一个(字符移动)发生也应在每一个其他游戏服务器进行镜像。

我试图得到这个工作(至少在概念上),但不能找到一种方法,我所有的情况下正确地同步。我应该使用一个主只有广播的事件或者是有其他选择吗?

我想知道我的MySQL数据库同样的事情:因为每一个游戏服务器将不得不读/从/写入数据库,我将如何使其正常规模的游戏变得越来越大?我能想到的最好的解决办法是保持数据库这将是非常强大的一台服务器上。

据我所知,这可能是容易的,如果所有的游戏服务器没有“分享”他们的状态,但是这主要是认为,这样我可以在活动中突然出现大幅波动的情况下,迅速形成规模。

(会有不同的“全球性”的游戏服务器,比如A,B,C ......但每个那些全球性的游戏服务器的应该是,在幕后,1-X泊坞窗容器组成运行的“真实”的游戏服务器,以便后面的“全球性”的游戏服务器仅仅是一个概念)

回答如下:

你的国家的问题是太普通,它是很难给出一个具体的回应。然而让我鲁莽,并给你一些通用的比例建议:

  • 从数据库中删除计数器。相反,主键是自动递增的ID,尝试分配随机的UUID。
  • 必须针对中心点由是自包含的数据进行验证的变化数据。例如,对于身份验证,而不必在DB的用户凭据,使用可以通过任何主机进行验证JSON网络令牌。
  • 使用诸如一致的哈希值,而不需要负载均衡来平衡负载。当然,使用该散列分布以及功能,避免/最小化冲突。

上述建议基本上都是关于改变设计,从状态迁移到无国籍尽可能多的方面,你可以。如果你反正需要提供有状态的部分,试图猜测哪些实体将有更多的机会分享状态数据,并在同一个(或接近服务器)进行分配。例如,如果在你的游戏中的城市,尝试在同一台服务器是在同一个城市的用户分配,因为他们更愿意在它们之间进行交互(和共享状态数据)相比,在不同城市的用户。

当然,如果这个城市太大了,这是非常拥挤的,你可能需要在城市中更多的服务器进行分区,以避免服务器过载。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论