可扩展的配对服务

时间:2019-05-23 06:59:18

标签: node.js redis matchmaking

我们正在为我们的游戏开发多人后端。我们的后端提供婚介服务。我们正在使用Heroku,并且计划将Web dynos处理传入的配对请求到队列中。然后,我们的工作人员dynos将可以访问此队列,并且可以通过将队列中的用户彼此进行比较来形成匹配项。用户可能一次坐在队列中几分钟,直到形成适当的匹配为止。用户坐在队列中的时间越长,他们对婚介条件的要求就越“灵活”。

问题是,我们不确定如何扩大此操作。只要我们只有一个工人dyno,这个问题就很容易解决。工作人员每隔一段时间(大约每秒)迭代一次队列中的所有匹配请求,并在兼容用户之间形成匹配。任何不匹配的用户都将进入队列,他们的要求将被放宽,以便下次有机会找到匹配的用户。此操作会无限期重复,不断地使用户彼此匹配。

如果我们将工人的dyno缩放到2,那么这个问题就很难解决了。我们不希望将请求划分为多个dyno,因为这会增加对接时间,并可能导致玩家错过良好的比赛,因为他们的理想比赛已分配给另一个dyno。因此,理想情况下,工作人员dynos都将处理相同的请求池。从理论上讲,他们将不断地互相踩脚趾-当1号工人dyno与6个玩家组成比赛时,2号工人dyno本身可能会与6个玩家组成另一场比赛。

有什么办法可以解决这个问题?

0 个答案:

没有答案
相关问题