@startuml 'https://plantuml.com/sequence-diagram participant Matchmaker participant Agones participant "Canary Fleet\nResource" as CanaryFleet participant "Stable Fleet\nResource" as StableFleet Matchmaker -> Agones: Create: GameServerAllocation note left GameServerAllocation is implemented to prefer allocating from the Canary Fleet, but if a Ready GameServer cannot be found in the Canary Fleet, to fall back to the Stable Fleet. end note group GameServerAllocation else Check Canary Fleet first Agones -> CanaryFleet: Check if GameServer is available note right The Canary Fleet is usually a small, fixed size end note else None available in Canary Fleet Agones -> StableFleet: Check if GameServer is available note right When the Canary Fleet is fully allocated, the allocation falls over to the Stable Fleet. end note end group Matchmaker <-- Agones: returns Allocated GameServer record @enduml