Object

com.twitter.finagle.loadbalancer

Balancers

Related Doc: package loadbalancer

Permalink

object Balancers

Constructor methods for various load balancers. The methods take balancer specific parameters and return a LoadBalancerFactory that allows you to easily inject a balancer into the Finagle stack via client configuration.

See also

The user guide for more details.

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Balancers
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. val MaxEffort: Int

    Permalink

    This is a fixed number of retries, a LB are willing to make if the dead node is returned from the underlying distributor.

    This is a fixed number of retries, a LB are willing to make if the dead node is returned from the underlying distributor.

    For randomized LBs (P2C/LeastLoaded, P2C/EWMA, and Aperture) this value has an additional meaning: it determines how often the LB will be failing to pick a healthy node out of the partially-unhealthy replica set. For example, imagine that half of the replica set is down, the probably of picking two dead nodes is 0.25. If we repeat that process for 5 times, the total probability of seeing 5 dead nodes in a row, will be (0.25 ^ 5) = 0.1%. This means that if half of the cluster is down, the LB will be making a bad choice (when better choice may have been available) for 0.1% of requests.

    Please, note that this doesn't mean that 0.1% of requests will be failed by P2C operating on a half-dead cluster since there is an additional layer of requeues (see Retries module) involved above those "bad picks".

  5. def aperture(smoothWin: Duration = 5.seconds, lowLoad: Double = 0.5, highLoad: Double = 2.0, minAperture: Int = 1, timer: Timer = DefaultTimer.twitter, maxEffort: Int = MaxEffort, rng: Rng = Rng.threadLocal): LoadBalancerFactory

    Permalink

    The aperture load-band balancer balances load to the smallest subset ("aperture") of services so that:

    The aperture load-band balancer balances load to the smallest subset ("aperture") of services so that:

    1. The concurrent load, measured over a window specified by smoothWin, to each service stays within the load band, delimited by lowLoad and highLoad.

    2. Services receive load proportional to the ratio of their weights.

    Unavailable services are not counted--the aperture expands as needed to cover those that are available.

    See also

    The user guide for more details.

  6. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  7. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  9. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  11. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  12. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  13. def heap(rng: Random = new Random): LoadBalancerFactory

    Permalink

    An efficient strictly least-loaded balancer that maintains an internal heap.

    An efficient strictly least-loaded balancer that maintains an internal heap. Note, because weights are not supported by the HeapBalancer they are ignored when the balancer is constructed.

    See also

    The user guide for more details.

  14. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  15. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  16. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  17. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  18. def p2c(maxEffort: Int = MaxEffort, rng: Rng = Rng.threadLocal): LoadBalancerFactory

    Permalink

    An O(1), concurrent, weighted least-loaded fair load balancer.

    An O(1), concurrent, weighted least-loaded fair load balancer. This uses the ideas behind "power of 2 choices" [1] combined with O(1) biased coin flipping through the aliasing method, described in Drv.

    maxEffort

    the maximum amount of "effort" we're willing to expend on a load balancing decision without reweighing.

    rng

    The PRNG used for flipping coins. Override for deterministic tests. [1] Michael Mitzenmacher. 2001. The Power of Two Choices in Randomized Load Balancing. IEEE Trans. Parallel Distrib. Syst. 12, 10 (October 2001), 1094-1104.

  19. def p2cPeakEwma(decayTime: Duration = 10.seconds, maxEffort: Int = MaxEffort, rng: Rng = Rng.threadLocal): LoadBalancerFactory

    Permalink

    Like p2c but using the Peak EWMA load metric.

    Like p2c but using the Peak EWMA load metric.

    Peak EWMA uses a moving average over an endpoint's round-trip time (RTT) that is highly sensitive to peaks. This average is then weighted by the number of outstanding requests, effectively increasing our resolution per-request. It is designed to react to slow endpoints more quickly than least-loaded by penalizing them when they exhibit slow response times. This load metric operates under the assumption that a loaded endpoint takes time to recover and so it is generally safe for the advertised load to incorporate an endpoint's history. However, this assumption breaks down in the presence of long polling clients.

    decayTime

    The window of latency observations.

    maxEffort

    the maximum amount of "effort" we're willing to expend on a load balancing decision without reweighing.

    rng

    The PRNG used for flipping coins. Override for deterministic tests.

    See also

    The user guide for more details.

  20. def roundRobin(maxEffort: Int = MaxEffort): LoadBalancerFactory

    Permalink

    A simple round robin balancer that chooses the next backend in the list for each request.

    A simple round robin balancer that chooses the next backend in the list for each request.

    WARNING: Unlike other balancers available in finagle, this does not take latency into account and will happily direct load to slow or oversubscribed services. We recommend using one of the other load balancers for typical production use.

    maxEffort

    the maximum amount of "effort" we're willing to expend on a load balancing decision without reweighing.

  21. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  22. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  23. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  24. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  25. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped