Documentation ¶
Index ¶
- Constants
- Variables
- func ApplyOperator(mc *mockcluster.Cluster, op *operator.Operator)
- func ApplyOperatorStep(region *core.RegionInfo, op *operator.Operator) *core.RegionInfo
- func DecodeConfig(data []byte, v interface{}) error
- func EncodeConfig(v interface{}) ([]byte, error)
- func FindSchedulerTypeByName(name string) string
- func IsSchedulerRegistered(name string) bool
- func NewTotalOpInfluence(operators []*operator.Operator, cluster opt.Cluster) operator.OpInfluence
- func RegisterScheduler(typ string, createFn CreateSchedulerFunc)
- func RegisterSliceDecoderBuilder(typ string, builder ConfigSliceDecoderBuilder)
- type Bucket
- type CheckerController
- type ConfigDecoder
- type ConfigSliceDecoderBuilder
- type CreateSchedulerFunc
- type OperatorController
- func (oc *OperatorController) AddOperator(ops ...*operator.Operator) bool
- func (oc *OperatorController) AddWaitingOperator(ops ...*operator.Operator) int
- func (oc *OperatorController) CollectStoreLimitMetrics()
- func (oc *OperatorController) Ctx() context.Context
- func (oc *OperatorController) Dispatch(region *core.RegionInfo, source string)
- func (oc *OperatorController) GetCluster() opt.Cluster
- func (oc *OperatorController) GetHistory(start time.Time) []operator.OpHistory
- func (oc *OperatorController) GetLeaderSchedulePolicy() core.SchedulePolicy
- func (oc *OperatorController) GetOpInfluence(cluster opt.Cluster) operator.OpInfluence
- func (oc *OperatorController) GetOperator(regionID uint64) *operator.Operator
- func (oc *OperatorController) GetOperatorStatus(id uint64) *OperatorWithStatus
- func (oc *OperatorController) GetOperators() []*operator.Operator
- func (oc *OperatorController) GetWaitingOperators() []*operator.Operator
- func (oc *OperatorController) OperatorCount(mask operator.OpKind) uint64
- func (oc *OperatorController) PromoteWaitingOperator()
- func (oc *OperatorController) PruneHistory()
- func (oc *OperatorController) PushOperators()
- func (oc *OperatorController) RemoveOperator(op *operator.Operator, extraFileds ...zap.Field) bool
- func (oc *OperatorController) SendScheduleCommand(region *core.RegionInfo, step operator.OpStep, source string)
- func (oc *OperatorController) SetOperator(op *operator.Operator)
- type OperatorRecords
- type OperatorWithStatus
- type PluginInterface
- type RandBuckets
- type RangeCluster
- func (r *RangeCluster) GetAverageRegionSize() int64
- func (r *RangeCluster) GetFollowerStores(region *core.RegionInfo) []*core.StoreInfo
- func (r *RangeCluster) GetLeaderStore(region *core.RegionInfo) *core.StoreInfo
- func (r *RangeCluster) GetRegionStores(region *core.RegionInfo) []*core.StoreInfo
- func (r *RangeCluster) GetStore(id uint64) *core.StoreInfo
- func (r *RangeCluster) GetStores() []*core.StoreInfo
- func (r *RangeCluster) GetTolerantSizeRatio() float64
- func (r *RangeCluster) RandFollowerRegion(storeID uint64, ranges []core.KeyRange, opts ...core.RegionOption) *core.RegionInfo
- func (r *RangeCluster) RandLeaderRegion(storeID uint64, ranges []core.KeyRange, opts ...core.RegionOption) *core.RegionInfo
- func (r *RangeCluster) SetTolerantSizeRatio(ratio float64)
- type RegionScatterer
- type Scheduler
- type WaitingOperator
- type WaitingOperatorStatus
Constants ¶
const ( DispatchFromHeartBeat = "heartbeat" DispatchFromNotifierQueue = "active push" DispatchFromCreate = "create" )
The source of dispatched region.
Variables ¶
var ( // PushOperatorTickInterval is the interval try to push the operator. PushOperatorTickInterval = 500 * time.Millisecond // StoreBalanceBaseTime represents the base time of balance rate. StoreBalanceBaseTime float64 = 60 )
var PriorityWeight = []float64{1.0, 4.0, 9.0}
PriorityWeight is used to represent the weight of different priorities of operators.
Functions ¶
func ApplyOperator ¶
func ApplyOperator(mc *mockcluster.Cluster, op *operator.Operator)
ApplyOperator applies operator. Only for test purpose.
func ApplyOperatorStep ¶
func ApplyOperatorStep(region *core.RegionInfo, op *operator.Operator) *core.RegionInfo
ApplyOperatorStep applies operator step. Only for test purpose.
func DecodeConfig ¶
DecodeConfig decode the custom config for each scheduler.
func EncodeConfig ¶
EncodeConfig encode the custom config for each scheduler.
func FindSchedulerTypeByName ¶
FindSchedulerTypeByName finds the type of the specified name.
func IsSchedulerRegistered ¶
IsSchedulerRegistered check where the named scheduler type is registered.
func NewTotalOpInfluence ¶
NewTotalOpInfluence creates a OpInfluence.
func RegisterScheduler ¶
func RegisterScheduler(typ string, createFn CreateSchedulerFunc)
RegisterScheduler binds a scheduler creator. It should be called in init() func of a package.
func RegisterSliceDecoderBuilder ¶
func RegisterSliceDecoderBuilder(typ string, builder ConfigSliceDecoderBuilder)
RegisterSliceDecoderBuilder convert arguments to config. It should be called in init() func of package.
Types ¶
type Bucket ¶
type Bucket struct {
// contains filtered or unexported fields
}
Bucket is used to maintain the operators created by a specific scheduler.
type CheckerController ¶
type CheckerController struct {
// contains filtered or unexported fields
}
CheckerController is used to manage all checkers.
func NewCheckerController ¶
func NewCheckerController(ctx context.Context, cluster opt.Cluster, ruleManager *placement.RuleManager, opController *OperatorController) *CheckerController
NewCheckerController create a new CheckerController. TODO: isSupportMerge should be removed.
func (*CheckerController) CheckRegion ¶
func (c *CheckerController) CheckRegion(region *core.RegionInfo) (bool, []*operator.Operator)
CheckRegion will check the region and add a new operator if needed.
func (*CheckerController) GetMergeChecker ¶
func (c *CheckerController) GetMergeChecker() *checker.MergeChecker
GetMergeChecker returns the merge checker.
type ConfigDecoder ¶
type ConfigDecoder func(v interface{}) error
ConfigDecoder used to decode the config.
func ConfigJSONDecoder ¶
func ConfigJSONDecoder(data []byte) ConfigDecoder
ConfigJSONDecoder used to build a json decoder of the config.
func ConfigSliceDecoder ¶
func ConfigSliceDecoder(name string, args []string) ConfigDecoder
ConfigSliceDecoder the default decode for the config.
type ConfigSliceDecoderBuilder ¶
type ConfigSliceDecoderBuilder func([]string) ConfigDecoder
ConfigSliceDecoderBuilder used to build slice decoder of the config.
type CreateSchedulerFunc ¶
type CreateSchedulerFunc func(opController *OperatorController, storage *core.Storage, dec ConfigDecoder) (Scheduler, error)
CreateSchedulerFunc is for creating scheduler.
type OperatorController ¶
OperatorController is used to limit the speed of scheduling.
func NewOperatorController ¶
func NewOperatorController(ctx context.Context, cluster opt.Cluster, hbStreams opt.HeartbeatStreams) *OperatorController
NewOperatorController creates a OperatorController.
func (*OperatorController) AddOperator ¶
func (oc *OperatorController) AddOperator(ops ...*operator.Operator) bool
AddOperator adds operators to the running operators.
func (*OperatorController) AddWaitingOperator ¶
func (oc *OperatorController) AddWaitingOperator(ops ...*operator.Operator) int
AddWaitingOperator adds operators to waiting operators.
func (*OperatorController) CollectStoreLimitMetrics ¶ added in v4.0.2
func (oc *OperatorController) CollectStoreLimitMetrics()
CollectStoreLimitMetrics collects the metrics about store limit
func (*OperatorController) Ctx ¶
func (oc *OperatorController) Ctx() context.Context
Ctx returns a context which will be canceled once RaftCluster is stopped. For now, it is only used to control the lifetime of TTL cache in schedulers.
func (*OperatorController) Dispatch ¶
func (oc *OperatorController) Dispatch(region *core.RegionInfo, source string)
Dispatch is used to dispatch the operator of a region.
func (*OperatorController) GetCluster ¶
func (oc *OperatorController) GetCluster() opt.Cluster
GetCluster exports cluster to evict-scheduler for check sctore status.
func (*OperatorController) GetHistory ¶
func (oc *OperatorController) GetHistory(start time.Time) []operator.OpHistory
GetHistory gets operators' history.
func (*OperatorController) GetLeaderSchedulePolicy ¶
func (oc *OperatorController) GetLeaderSchedulePolicy() core.SchedulePolicy
GetLeaderSchedulePolicy is to get leader schedule policy.
func (*OperatorController) GetOpInfluence ¶
func (oc *OperatorController) GetOpInfluence(cluster opt.Cluster) operator.OpInfluence
GetOpInfluence gets OpInfluence.
func (*OperatorController) GetOperator ¶
func (oc *OperatorController) GetOperator(regionID uint64) *operator.Operator
GetOperator gets a operator from the given region.
func (*OperatorController) GetOperatorStatus ¶
func (oc *OperatorController) GetOperatorStatus(id uint64) *OperatorWithStatus
GetOperatorStatus gets the operator and its status with the specify id.
func (*OperatorController) GetOperators ¶
func (oc *OperatorController) GetOperators() []*operator.Operator
GetOperators gets operators from the running operators.
func (*OperatorController) GetWaitingOperators ¶
func (oc *OperatorController) GetWaitingOperators() []*operator.Operator
GetWaitingOperators gets operators from the waiting operators.
func (*OperatorController) OperatorCount ¶
func (oc *OperatorController) OperatorCount(mask operator.OpKind) uint64
OperatorCount gets the count of operators filtered by mask.
func (*OperatorController) PromoteWaitingOperator ¶
func (oc *OperatorController) PromoteWaitingOperator()
PromoteWaitingOperator promotes operators from waiting operators.
func (*OperatorController) PruneHistory ¶
func (oc *OperatorController) PruneHistory()
PruneHistory prunes a part of operators' history.
func (*OperatorController) PushOperators ¶
func (oc *OperatorController) PushOperators()
PushOperators periodically pushes the unfinished operator to the executor(TiKV).
func (*OperatorController) RemoveOperator ¶
RemoveOperator removes a operator from the running operators.
func (*OperatorController) SendScheduleCommand ¶
func (oc *OperatorController) SendScheduleCommand(region *core.RegionInfo, step operator.OpStep, source string)
SendScheduleCommand sends a command to the region.
func (*OperatorController) SetOperator ¶
func (oc *OperatorController) SetOperator(op *operator.Operator)
SetOperator is only used for test.
type OperatorRecords ¶
type OperatorRecords struct {
// contains filtered or unexported fields
}
OperatorRecords remains the operator and its status for a while.
func NewOperatorRecords ¶
func NewOperatorRecords(ctx context.Context) *OperatorRecords
NewOperatorRecords returns a OperatorRecords.
func (*OperatorRecords) Get ¶
func (o *OperatorRecords) Get(id uint64) *OperatorWithStatus
Get gets the operator and its status.
func (*OperatorRecords) Put ¶
func (o *OperatorRecords) Put(op *operator.Operator)
Put puts the operator and its status.
type OperatorWithStatus ¶
type OperatorWithStatus struct { Op *operator.Operator Status pdpb.OperatorStatus }
OperatorWithStatus records the operator and its status.
func NewOperatorWithStatus ¶
func NewOperatorWithStatus(op *operator.Operator) *OperatorWithStatus
NewOperatorWithStatus creates an OperatorStatus from an operator.
func (*OperatorWithStatus) MarshalJSON ¶
func (o *OperatorWithStatus) MarshalJSON() ([]byte, error)
MarshalJSON returns the status of operator as a JSON string
type PluginInterface ¶
type PluginInterface struct {
// contains filtered or unexported fields
}
PluginInterface is used to manage all plugin.
func NewPluginInterface ¶
func NewPluginInterface() *PluginInterface
NewPluginInterface create a plugin interface
func (*PluginInterface) GetFunction ¶
GetFunction gets func by funcName from plugin(.so)
type RandBuckets ¶
type RandBuckets struct {
// contains filtered or unexported fields
}
RandBuckets is an implementation of waiting operators
func (*RandBuckets) GetOperator ¶
func (b *RandBuckets) GetOperator() []*operator.Operator
GetOperator gets an operator from the random buckets.
func (*RandBuckets) ListOperator ¶
func (b *RandBuckets) ListOperator() []*operator.Operator
ListOperator lists all operator in the random buckets.
func (*RandBuckets) PutOperator ¶
func (b *RandBuckets) PutOperator(op *operator.Operator)
PutOperator puts an operator into the random buckets.
type RangeCluster ¶
RangeCluster isolates the cluster by range.
func GenRangeCluster ¶
func GenRangeCluster(cluster opt.Cluster, startKey, endKey []byte) *RangeCluster
GenRangeCluster gets a range cluster by specifying start key and end key. The cluster can only know the regions within [startKey, endKey].
func (*RangeCluster) GetAverageRegionSize ¶
func (r *RangeCluster) GetAverageRegionSize() int64
GetAverageRegionSize returns the average region approximate size.
func (*RangeCluster) GetFollowerStores ¶
func (r *RangeCluster) GetFollowerStores(region *core.RegionInfo) []*core.StoreInfo
GetFollowerStores returns all stores that contains the region's follower peer.
func (*RangeCluster) GetLeaderStore ¶
func (r *RangeCluster) GetLeaderStore(region *core.RegionInfo) *core.StoreInfo
GetLeaderStore returns all stores that contains the region's leader peer.
func (*RangeCluster) GetRegionStores ¶
func (r *RangeCluster) GetRegionStores(region *core.RegionInfo) []*core.StoreInfo
GetRegionStores returns all stores that contains the region's peer.
func (*RangeCluster) GetStore ¶
func (r *RangeCluster) GetStore(id uint64) *core.StoreInfo
GetStore searches for a store by ID.
func (*RangeCluster) GetStores ¶
func (r *RangeCluster) GetStores() []*core.StoreInfo
GetStores returns all Stores in the cluster.
func (*RangeCluster) GetTolerantSizeRatio ¶
func (r *RangeCluster) GetTolerantSizeRatio() float64
GetTolerantSizeRatio gets the tolerant size ratio.
func (*RangeCluster) RandFollowerRegion ¶
func (r *RangeCluster) RandFollowerRegion(storeID uint64, ranges []core.KeyRange, opts ...core.RegionOption) *core.RegionInfo
RandFollowerRegion returns a random region that has a follower on the store.
func (*RangeCluster) RandLeaderRegion ¶
func (r *RangeCluster) RandLeaderRegion(storeID uint64, ranges []core.KeyRange, opts ...core.RegionOption) *core.RegionInfo
RandLeaderRegion returns a random region that has leader on the store.
func (*RangeCluster) SetTolerantSizeRatio ¶
func (r *RangeCluster) SetTolerantSizeRatio(ratio float64)
SetTolerantSizeRatio sets the tolerant size ratio.
type RegionScatterer ¶
type RegionScatterer struct {
// contains filtered or unexported fields
}
RegionScatterer scatters regions.
func NewRegionScatterer ¶
func NewRegionScatterer(cluster opt.Cluster) *RegionScatterer
NewRegionScatterer creates a region scatterer. RegionScatter is used for the `Lightning`, it will scatter the specified regions before import data.
func (*RegionScatterer) Scatter ¶
func (r *RegionScatterer) Scatter(region *core.RegionInfo) (*operator.Operator, error)
Scatter relocates the region.
type Scheduler ¶
type Scheduler interface { http.Handler GetName() string // GetType should in accordance with the name passing to schedule.RegisterScheduler() GetType() string EncodeConfig() ([]byte, error) GetMinInterval() time.Duration GetNextInterval(interval time.Duration) time.Duration Prepare(cluster opt.Cluster) error Cleanup(cluster opt.Cluster) Schedule(cluster opt.Cluster) []*operator.Operator IsScheduleAllowed(cluster opt.Cluster) bool }
Scheduler is an interface to schedule resources.
func CreateScheduler ¶
func CreateScheduler(typ string, opController *OperatorController, storage *core.Storage, dec ConfigDecoder) (Scheduler, error)
CreateScheduler creates a scheduler with registered creator func.
type WaitingOperator ¶
type WaitingOperator interface { PutOperator(op *operator.Operator) GetOperator() []*operator.Operator ListOperator() []*operator.Operator }
WaitingOperator is an interface of waiting operators.
type WaitingOperatorStatus ¶
type WaitingOperatorStatus struct {
// contains filtered or unexported fields
}
WaitingOperatorStatus is used to limit the count of each kind of operators.
func NewWaitingOperatorStatus ¶
func NewWaitingOperatorStatus() *WaitingOperatorStatus
NewWaitingOperatorStatus creates a new WaitingOperatorStatus.