-
Notifications
You must be signed in to change notification settings - Fork 24
Home
elandau edited this page Nov 7, 2014
·
14 revisions
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.
TODO
TODO
TODO
The following is a living list of requirements and design philosophies used to drive the development of this project.
- 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
- 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