Git Product home page Git Product logo

tower's Introduction

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-service: The foundational traits upon which Tower is built (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-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 (docs).

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

  • tower-watch: A middleware that rebinds the inner service each time a watch is notified (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.

tower's People

Contributors

alexcrichton avatar aturon avatar briansmith avatar carllerche avatar cpick avatar feynmanliang avatar frewsxcv avatar hawkw avatar johncf avatar king6cong avatar kristoff3r avatar markusjais avatar olix0r avatar seanmonstar avatar steveklabnik avatar withoutboats avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.