Roblox hosts millions of multiplayer game sessions daily. It is planning to release a Matchmaking Service for game developers such that users can join a waiting queue, be grouped together by skill level and join a new gameserver at the same time.
A popular game may have upto 500k concurrent players, hundreds of players joining per second.
A user may have a skill level e.g userid : skill (0-100)
Design a service to help organize these users into groups of 16 before allocating them a new empty gameserver.
A user may only queue for 1 game at a time
You may assume the following ID types exist:
long GameID
long UserID
long ServerID
And the following table:
Table UserSkill -
long GameID
long UserID
int Skill