tworandomchoices

package
v1.40.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 19, 2019 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package tworandomchoices provides a load balancer implementation that picks two peers at random and chooses the one with fewer pending requests.

The Power of Two Choices in Randomized Load Balancing: https://www.eecs.harvard.edu/~michaelm/postscripts/tpds2001.pdf

The Power of Two Random Choices: A Survey of Techniques and Results: https://www.eecs.harvard.edu/~michaelm/postscripts/handbook2001.pdf

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Spec

Spec returns a configuration specification for the "fewest pending requests of two random peers" implementation, making it possible to select the better of two random peer with transports that use outbound peer list configuration (like HTTP).

cfg := yarpcconfig.New()
cfg.MustRegisterPeerList(tworandomchoices.Spec())

This enables the random peer list:

outbounds:
  otherservice:
    unary:
      http:
        url: https://host:port/rpc
        two-random-choices:
          peers:
            - 127.0.0.1:8080
            - 127.0.0.1:8081

Types

type List

type List struct {
	*peerlist.List
}

List is a PeerList that rotates which peers are to be selected randomly

func New

func New(transport peer.Transport, opts ...ListOption) *List

New creates a new fewest pending requests of two random peers peer list.

type ListOption

type ListOption interface {
	// contains filtered or unexported methods
}

ListOption customizes the behavior of a fewest pending of two random peers list.

func Capacity

func Capacity(capacity int) ListOption

Capacity specifies the default capacity of the underlying data structures for this list.

Defaults to 10.

func Seed

func Seed(seed int64) ListOption

Seed specifies the seed for generating random choices.

func Source

func Source(source rand.Source) ListOption

Source is a source of randomness for the peer list.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL