Skip to content
elandau edited this page Nov 7, 2014 · 14 revisions

Full documentation

RxLoadBalancer is a reactive implementation of a client side load balancer with support for

  • Streaming source of host membership
  • Pluggable load balancing algorithms (round robin, weighted round robin)
  • Pluggable statistics and failure detection
  • LoadBalancer partitioning

RxLoadBalancer makes use of RxJava to provide a composable load balancer implementation that through which complex selection, retry and failover policies may be implemented.

What does it do?

TODO

Hello world

TODO

Binaries

TODO

Build

Bugs and feedback

The following is a living list of requirements and design philosophies used to drive the development of this project.

Guidelines/Design Philosophy

  • Minimize or eliminate table (map) lookup.
  • Abstract various components of the load balancer so they can be customized separately
  • Configuration free or minimal configuration
  • Policy driven approach to load balancer behaviors
  • Design should allow for robust simulations
  • Simplified retries - The retry count is left to the caller and uses the Rx retry() function
  • Custom mapping function from error response (i.e. not a socket error) to exception: Response -> Throwable

Features to consider

  • Pin operations to a specific server : this could be accomplished by performing all operations within the same operation callback
  • Max total connections
  • Zone stickiness (prefer hosts in same zone as traffic to them is cheaper)
  • Prime connections