Design a matchmaking service for a multiplayer game that supports millions of concurrent players. Players enter a queue with a skill rating (MMR), region, party size, and preferred game mode. The system must form balanced 5v5 matches while minimizing wait time. Players should be matched with others of similar skill, but the acceptable skill gap can widen the longer they wait. The service must handle parties of varying sizes (1–5), ensure low latency by preferring the same region, and gracefully handle players who disconnect after a match is found but before the game starts. Describe the high-level architecture, data structures, queueing mechanism, matchmaking algorithm, game-server allocation strategy, and how you would scale the system globally.