A purpose-built proxy for the Linkerd service mesh. Written in Rust.
Go to file
Oliver Gould 9c02c4d6e7 Use a load-aware balancer (#251)
Currently, the conduit proxy uses a simplistic Round-Robin load
balancing algorithm. This strategy degrades severely when individual
endpoints exhibit abnormally high latency.

This change improves this situation somewhat by making the load balancer
aware of the number of outstanding requests to each endpoint. When nodes
exhibit high latency, they should tend to have more pending requests
than faster nodes; and the Power-of-Two-Choices node selector can be
used to distribute requests to lesser-loaded instances.

From the finagle guide:

    The algorithm randomly picks two nodes from the set of ready endpoints
    and selects the least loaded of the two. By repeatedly using this
    strategy, we can expect a manageable upper bound on the maximum load of
    any server.

    The maximum load variance between any two servers is bound by
    ln(ln(n))` where `n` is the number of servers in the cluster.

Signed-off-by: Oliver Gould <ver@buoyant.io>
2018-02-07 09:39:31 -08:00
.github Add a newline to dco.yml (#254) 2018-02-01 15:16:02 -08:00
proxy Use a load-aware balancer (#251) 2018-02-07 09:39:31 -08:00
CONTRIBUTING.md Add contributing doc and DCO file (#88) 2017-12-22 14:54:27 -08:00
Cargo.lock Use a load-aware balancer (#251) 2018-02-07 09:39:31 -08:00
Cargo.toml Move the Rust gRPC bindings to a dedicated crate (#275) 2018-02-06 10:31:48 -08:00
DCO Add contributing doc and DCO file (#88) 2017-12-22 14:54:27 -08:00
LICENSE Introducing Conduit, the ultralight service mesh 2017-12-05 00:24:55 +00:00