Tower is a library of modular and reusable components for building robust
networking clients and servers.
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.
Tower consists of a number of components, each of which live in their own sub
tower-service: The foundational traits upon which Tower is built
tower-balance: A load balancer. Load is balanced across a number of
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
tower-discover: Service discovery abstraction (docs).
tower-filter: Middleware that conditionally dispatch requests to the inner
service based on a predicate (docs);
tower-in-flight-limit: Middleware limiting thee number of requests that
are in-flight for the inner service (docs).
tower-mock: Testing utility for mocking a
Service. This is useful for
testing middleware implemeentations (docs);
tower-rate-limit: Middleware limiting the number of requests to the inner
service over a period of time (docs).
tower-reconnect: Middleware that automatically reconnects the inner
service when it becomes degraded (docs).
tower-router: Routes requests to one of many inner inner services based on
the request (docs).
tower-timeout: Middleware that applies a timeout to requests
tower-util: Miscellaneous additional utilities for Tower
tower-watch: A middleware that rebinds the inner service each time a watch
is notified (docs).
tower-service, the foundational trait, has been released to
crates.io. The rest of the library will be following shortly.
This project is licensed under the MIT license.
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.