Documentation
¶
Index ¶
- func SelectService(cs *ClusterState, retryIndex int, prevService string) (string, error)
- type ClusterState
- func (cs *ClusterState) GetError(service string) (uint64, error)
- func (cs *ClusterState) GetServices() []string
- func (cs *ClusterState) IncrementError(service string) error
- func (cs *ClusterState) ResetAllErrors() error
- func (cs *ClusterState) ResetError(service string) error
- func (cs *ClusterState) UpdateError(service string, errorcount uint64) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SelectService ¶
func SelectService(cs *ClusterState, retryIndex int, prevService string) (string, error)
SelectService implements the routing logic to the cluster of downstream services. On first try, an error log lookup is done to determine the service-wise error count and effective error is calculated. If no error found for any service, random service selection (equal probability) is done, else weighted random service selection is done, where weights are inversely proportional to error count on the particular service. If the request to the selected service fails, round robin selection is done to deterministically select the next service.
Types ¶
type ClusterState ¶
type ClusterState struct {
// contains filtered or unexported fields
}
func InitClusterState ¶
func InitClusterState(serviceList []string) (*ClusterState, error)
InitClusterState initializes cluster state with user provided serviceList, and zeroing error for each service.
func (*ClusterState) GetError ¶ added in v0.3.0
func (cs *ClusterState) GetError(service string) (uint64, error)
GetError returns current errorcount for a service.
func (*ClusterState) GetServices ¶ added in v1.1.0
func (cs *ClusterState) GetServices() []string
GetServices returns current list of services.
func (*ClusterState) IncrementError ¶
func (cs *ClusterState) IncrementError(service string) error
IncrementError increments errorcount by 1 for a service.
func (*ClusterState) ResetAllErrors ¶
func (cs *ClusterState) ResetAllErrors() error
ResetAllErrors resets errorcount for all services.
func (*ClusterState) ResetError ¶
func (cs *ClusterState) ResetError(service string) error
ResetError resets errorcount for a service.
func (*ClusterState) UpdateError ¶
func (cs *ClusterState) UpdateError(service string, errorcount uint64) error
UpdateError updates user provided errorcount for a service.