Documentation ¶
Overview ¶
package roundrobin implements dynamic weighted round robin load balancer http handler
Index ¶
- Constants
- func ErrorHandler(h utils.ErrorHandler) rrSetter
- func RebalancerBackoff(d time.Duration) rbOptSetter
- func RebalancerClock(clock timetools.TimeProvider) rbOptSetter
- func RebalancerLogger(log utils.Logger) rbOptSetter
- func RebalancerMeter(newMeter NewMeterFn) rbOptSetter
- func Weight(w int) serverSetter
- type Meter
- type NewMeterFn
- type Rebalancer
- func (rb *Rebalancer) RemoveServer(u *url.URL) error
- func (rb *Rebalancer) ServeHTTP(w http.ResponseWriter, req *http.Request)
- func (rb *Rebalancer) Servers() []*url.URL
- func (rb *Rebalancer) UpsertServer(u *url.URL, options ...serverSetter) error
- func (rb *Rebalancer) Wrap(next balancerHandler) error
- type RoundRobin
- func (r *RoundRobin) RemoveServer(u *url.URL) error
- func (r *RoundRobin) ServeHTTP(w http.ResponseWriter, req *http.Request)
- func (rr *RoundRobin) ServerWeight(u *url.URL) (int, bool)
- func (rr *RoundRobin) Servers() []*url.URL
- func (rr *RoundRobin) UpsertServer(u *url.URL, options ...serverSetter) error
Constants ¶
View Source
const ( // This is the maximum weight that handler will set for the server FSMMaxWeight = 4096 // Multiplier for the server weight FSMGrowFactor = 4 )
Variables ¶
This section is empty.
Functions ¶
func ErrorHandler ¶
func ErrorHandler(h utils.ErrorHandler) rrSetter
ErrorHandler is a functional argument that sets error handler of the server
func RebalancerBackoff ¶
func RebalancerClock ¶
func RebalancerClock(clock timetools.TimeProvider) rbOptSetter
func RebalancerLogger ¶
func RebalancerMeter ¶
func RebalancerMeter(newMeter NewMeterFn) rbOptSetter
Types ¶
type NewMeterFn ¶
type Rebalancer ¶
type Rebalancer struct {
// contains filtered or unexported fields
}
Rebalancer increases weights on servers that perform better than others. It also rolls back to original weights if the servers have changed. It is designed as a wrapper on top of the roundrobin.
func NewRebalancer ¶
func NewRebalancer(handler balancerHandler, opts ...rbOptSetter) (*Rebalancer, error)
func (*Rebalancer) RemoveServer ¶
func (rb *Rebalancer) RemoveServer(u *url.URL) error
func (*Rebalancer) ServeHTTP ¶
func (rb *Rebalancer) ServeHTTP(w http.ResponseWriter, req *http.Request)
func (*Rebalancer) Servers ¶
func (rb *Rebalancer) Servers() []*url.URL
func (*Rebalancer) UpsertServer ¶
func (rb *Rebalancer) UpsertServer(u *url.URL, options ...serverSetter) error
func (*Rebalancer) Wrap ¶
func (rb *Rebalancer) Wrap(next balancerHandler) error
type RoundRobin ¶
type RoundRobin struct {
// contains filtered or unexported fields
}
func (*RoundRobin) RemoveServer ¶
func (r *RoundRobin) RemoveServer(u *url.URL) error
func (*RoundRobin) ServeHTTP ¶
func (r *RoundRobin) ServeHTTP(w http.ResponseWriter, req *http.Request)
func (*RoundRobin) ServerWeight ¶
func (rr *RoundRobin) ServerWeight(u *url.URL) (int, bool)
func (*RoundRobin) Servers ¶
func (rr *RoundRobin) Servers() []*url.URL
func (*RoundRobin) UpsertServer ¶
func (rr *RoundRobin) UpsertServer(u *url.URL, options ...serverSetter) error
In case if server is already present in the load balancer, returns error
Click to show internal directories.
Click to hide internal directories.