1
0
mirror of https://github.com/go-kratos/kratos.git synced 2025-02-05 13:15:11 +02:00
kratos/selector/balancer.go

39 lines
738 B
Go
Raw Normal View History

package selector
import (
"context"
"time"
)
// Balancer is balancer interface
type Balancer interface {
Pick(ctx context.Context, nodes []WeightedNode) (selected WeightedNode, done DoneFunc, err error)
}
2021-10-18 19:26:00 +08:00
// 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
}