You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
738 B
38 lines
738 B
package selector |
|
|
|
import ( |
|
"context" |
|
"time" |
|
) |
|
|
|
// Balancer is balancer interface |
|
type Balancer interface { |
|
Pick(ctx context.Context, nodes []WeightedNode) (selected WeightedNode, done DoneFunc, err error) |
|
} |
|
|
|
// BalancerBuilder build balancer |
|
type BalancerBuilder interface { |
|
Build() Balancer |
|
} |
|
|
|
// WeightedNode calculates scheduling weight in real time |
|
type WeightedNode interface { |
|
Node |
|
|
|
// Raw returns the original node |
|
Raw() Node |
|
|
|
// Weight is the runtime calculated weight |
|
Weight() float64 |
|
|
|
// Pick the node |
|
Pick() DoneFunc |
|
|
|
// PickElapsed is time elapsed since the latest pick |
|
PickElapsed() time.Duration |
|
} |
|
|
|
// WeightedNodeBuilder is WeightedNode Builder |
|
type WeightedNodeBuilder interface { |
|
Build(Node) WeightedNode |
|
}
|
|
|