queryCoord的balancer分析

本文涉及的产品
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: queryCoord的balancer分析

queryCoord的balancer分析

milvus版本:v2.3.2

涉及到一个参数设置:

queryCoord.balancer = ScoreBasedBalancer

milvus内置的balancer有3种:

代码位置:internal\querycoordv2\balance\balance.go

var (
    RoundRobinBalancerName    = "RoundRobinBalancer"
    RowCountBasedBalancerName = "RowCountBasedBalancer"
    ScoreBasedBalancerName    = "ScoreBasedBalancer"
)

Balance接口:

type Balance interface {
   
    AssignSegment(collectionID int64, segments []*meta.Segment, nodes []int64) []SegmentAssignPlan
    AssignChannel(channels []*meta.DmChannel, nodes []int64) []ChannelAssignPlan
    BalanceReplica(replica *meta.Replica) ([]SegmentAssignPlan, []ChannelAssignPlan)
}

这个接口有3个实现。

ScoreBasedBalancer、RoundRobinBalancer、RowCountBasedBalancer。

func (controller *CheckerController) check(ctx context.Context, checkerType string) {
   
    checker := controller.checkers[checkerType]
    tasks := checker.Check(ctx)

    for _, task := range tasks {
   
        err := controller.scheduler.Add(task)
        if err != nil {
   
            task.Cancel(err)
            continue
        }
    }
}

checker.Check()有4个实现,会调用AssignSegment、AssignChannel、BalanceReplica方法。

目录
相关文章
|
1月前
|
负载均衡 网络协议 网络安全
SLB-Backend多实例部署配置健康检查
【10月更文挑战第22天】
73 3
|
1月前
|
运维 负载均衡 算法
|
1月前
|
弹性计算 运维 监控
SLB-Backend的高可用性
【10月更文挑战第19天】
52 5
|
1月前
|
负载均衡 算法
SLB-Backend的负载均衡算法
【10月更文挑战第19天】
62 5
|
1月前
|
监控 安全 网络安全
slb的性能瓶颈
【11月更文挑战第1天】
33 1
|
1月前
|
运维 负载均衡 监控
SLB-Backend健康检查
【10月更文挑战第20天】
39 2
|
5月前
|
负载均衡 监控 算法
|
7月前
|
负载均衡 算法 前端开发
SLB-负载均衡器(Load Balancer)
SLB-负载均衡器(Load Balancer)
215 0
|
域名解析 弹性计算 负载均衡
SLB Server Load Balancer
阿里云负载均衡(Server Load Balancer,简称SLB)是一种可水平扩展的高可用网络负载均衡服务。它可以将流量自动分配到多个ECS实例上,从而提高应用程序的可用性和可扩展性,同时减少了单个实例的负载压力。
234 1