This is not the shape a rented network usually wants. If you are running a handful of servers on a panel host, everything is one geo and none of this applies. It is here because the design has to answer the question.
What is local and what is global
Redis is per geo and carries the hot path: ghost frames, block deltas, transfer offers between neighbours. Every node subscribes only to its own geo’s Redis. A message for a node elsewhere is published onto that geo’s Redis instead. MongoDB is the one global thing: player records, the topology of who serves which region, and the block journal. That is what lets a proxy in one geo route a player to a shard in another.Two ways over the border
The cheap way is a bridge. Shards publish an address reachable from outside their own cluster, every proxy registers the far ones as ordinary servers, and a cross-geo crossing becomes a plain server switch. The client keeps its world and the border is invisible, but the player is now proxied through a machine on the wrong continent. The other way is a handover: the client is sent a transfer packet, disconnects, and reconnects to the other geo’s proxy. Seconds of reconnect, but afterwards they are talking to the proxy nearest them.Why a handover usually buys nothing
The ocean is in the path either way. It only moves:When the handover happens
Bridge first, hand over later, and only once the player has settled. In order of preference:1
They cross back
Nothing happens at all. No reconnect was ever paid for, and a border you pace over is free in both directions. This is the case the whole design exists for.
2
They cross again, deeper in, having settled
The reconnect replaces a server switch that was going to happen anyway, at a border, where a moment of hesitation is expected and already masked.
3
Neither, for long enough
It happens anyway. A whole session played across an ocean is worse than one loading screen.