-
Notifications
You must be signed in to change notification settings - Fork 97
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement Phoenix Network Coordinates (#854)
* Use bounded channels to prevent backpressure * Add datacenter discovery This commit adds the concept of "datacenter" to our xDS protocol. Unlike other resources, there's slightly different behaviour between proxies to relays and relays to agents. When agent queries for a datacenter from the agent, it returns its own QCMP port and ICAO location. The host then adds the address of remote agent to identify the datacenter. The proxy then queries for datacenters, it gets all of agents addresses, ports, and ICAO codes. This will be used with a future commit to measure the distance between proxies and agents. * Implement Phoenix Network Coordinates This commit uses the previous commit of datacentre discovery with an implementation of Phoenix Network Coordinates[1], to build a decentralised network coordinate map of all the datacentres that the proxies know about, using that information, we expose a new HTTP server at the same QCMP port that a client can use to query what datacentres are the closest to the proxy. For identifying datacentres we use ICAO codes, this allows us to colnsildate multiple logical datacentres into a single location, for example if you have multiple zones allocated in the same physical datacentre, in order to reduce the amount of options a client has to pick from in that case they're consolidated under their ICAO code. This allows for clients to get their full latency to datacentres which allows operators to a allocate datacentres dynamically, and in the closest location available to players. [1]: https://www.researchgate.net/publication/221198962_Phoenix_Towards_an_Accurate_Practical_and_Decentralized_Network_Coordinate_System * Spawn phoenix task on load balancers * add update watcher to phoenix * Add shutdown handler * formatting * Slight adjustments * ubounded * Fix compilation * Oops * Ugly, but it works now * Increase timeout * Add documentation --------- Co-authored-by: Jake Shadle <[email protected]>
- Loading branch information
1 parent
80741fb
commit d22a444
Showing
20 changed files
with
1,512 additions
and
137 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.