Go to file
Oliver Gould 18b30eb70e
balance: Only balance over ready endpoints (#293)
In 03ec4aa, the balancer was changed to make a quick endpoint decision.
This, however, means that the balancer can return NotReady when it does
in fact have a ready endpoint.

This changes the balancer to separate unready endpoints, only
performing p2c over ready endpoints. Unready endpoints are tracked with
a FuturesUnordered that supports eviction via oneshots.

The main downside of this change is that the Balancer must become
generic over the Request type.
2019-07-05 20:46:33 -07:00
ci spawn-ready: Drives a service's readiness on an executor (#283) 2019-05-29 09:57:46 -07:00
tower Greatly improve Debug output of ServiceBuilder (#280) 2019-05-09 08:44:40 -07:00
tower-balance balance: Only balance over ready endpoints (#293) 2019-07-05 20:46:33 -07:00
tower-buffer Greatly improve Debug output of ServiceBuilder (#280) 2019-05-09 08:44:40 -07:00
tower-discover chore: fix small errors in Cargo files 2019-04-26 22:31:07 -07:00
tower-filter Add hedge retry middleware (#236) 2019-04-27 09:32:26 -07:00
tower-hedge Fix tower-hedge tests and add to CI (#287) 2019-05-28 13:33:42 -07:00
tower-layer chore: fix small errors in Cargo files 2019-04-26 22:31:07 -07:00
tower-limit chore: fix small errors in Cargo files 2019-04-26 22:31:07 -07:00
tower-load Extract tower-load from tower-balance (#285) 2019-05-29 10:32:02 -07:00
tower-load-shed Fix some simple compile-time warnings (#297) 2019-07-05 17:10:11 -04:00
tower-reconnect chore: fix small errors in Cargo files 2019-04-26 22:31:07 -07:00
tower-retry Fix some simple compile-time warnings (#297) 2019-07-05 17:10:11 -04:00
tower-service chore: fix small errors in Cargo files 2019-04-26 22:31:07 -07:00
tower-spawn-ready spawn-ready: Change layer to operate over MakeSpawnReady (#290) 2019-05-30 12:07:08 -07:00
tower-test Fix some simple compile-time warnings (#297) 2019-07-05 17:10:11 -04:00
tower-timeout chore: fix small errors in Cargo files 2019-04-26 22:31:07 -07:00
tower-util Greatly improve Debug output of ServiceBuilder (#280) 2019-05-09 08:44:40 -07:00
.gitignore Initial commit 2016-08-26 16:26:03 -07:00
Cargo.toml Extract tower-load from tower-balance (#285) 2019-05-29 10:32:02 -07:00
LICENSE Update the license for 2019 and tower contributors (#148) 2019-01-15 17:29:08 -05:00
README.md Create `tower-test` and include tower-mock. (#237) 2019-04-07 20:42:18 -07:00
azure-pipelines.yml Extract tower-load from tower-balance (#285) 2019-05-29 10:32:02 -07:00

README.md

Tower

Tower is a library of modular and reusable components for building robust networking clients and servers.

Build Status Gitter

Overview

Tower aims to make it as easy as possible to build robust networking clients and servers. It is protocol agnostic, but is designed around a request / response pattern. If your protocol is entirely stream based, Tower may not be a good fit.

Project Layout

Tower consists of a number of components, each of which live in their own sub crates.

  • tower: The main user facing crate that provides batteries included tower services (docs).

  • tower-service: The foundational traits upon which Tower is built (docs).

  • tower-layer: The foundational trait to compose services together (docs).

  • tower-balance: A load balancer. Load is balanced across a number of services (docs).

  • tower-buffer: A buffering middleware. If the inner service is not ready to handle the next request, tower-buffer stores the request in an internal queue (docs).

  • tower-discover: Service discovery abstraction (docs).

  • tower-filter: Middleware that conditionally dispatch requests to the inner service based on a predicate (docs).

  • tower-limit: Middleware limiting the number of requests that are processed (docs).

  • tower-reconnect: Middleware that automatically reconnects the inner service when it becomes degraded (docs).

  • tower-retry: Middleware that retries requests based on a given Policy (docs).

  • tower-test: Testing utilies (docs).

  • tower-timeout: Middleware that applies a timeout to requests (docs).

  • tower-util: Miscellaneous additional utilities for Tower (docs).

Status

Currently, only tower-service, the foundational trait, has been released to crates.io. The rest of the library will be following shortly.

License

This project is licensed under the MIT license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Tower by you, shall be licensed as MIT, without any additional terms or conditions.