package aperture
- Alphabetic
- Public
- All
Value Members
-
object
DeterministicOrdering
DeterministicOrdering exposes a mechanism that allows a process to be furnished with a coordinate which is used to derive ordering in an Aperture implementation.
DeterministicOrdering exposes a mechanism that allows a process to be furnished with a coordinate which is used to derive ordering in an Aperture implementation. The coordinate is calculated relative to other nodes in the process' peer group such that each coordinate is uniformly spaced from another given a shared coordinate space (in our case, [-1.0, 1.0]). The result is that each process that is part of the respective group is now part of a topology with a sense of order and proximity.
A unique permutation for a group of servers (that
Apertures
expand over) can be then derived by mapping the servers to the same coordinate space and iterating through the space using a uniform traversal (see the Iterators defined on Ring for more details). Thus, when the group of peers converges on an aperture size, the servers are equally represented across the peer's aperture.This remedies a shortcoming with the default Aperture implementation where peers randomly select the servers in their aperture and, consequently, create load imbalances since servers have a well understood probability of being non-uniformly represented across client apertures.
- Note
To use this, the coordinate needs to be set via
setCoordinate
and the implementation used by the client must have theuseDeterministicOrdering
set to true.