queryCoord的checkerController分析

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

queryCoord的checkerController分析

milvus版本:v2.3.2

启动queryCoordv2的时候会启动几种类型的checker。

堆栈:

Run()(cmd\components\query_coord.go)
  |--qs.svr.Run()(同上)
    |--s.start()(\internal\distributed\querycoord\service.go)
      |--s.queryCoord.Start()(同上)
        |--Start()(internal\querycoordv2\server.go)
          |--s.startQueryCoord()(同上)
            |--s.startServerLoop()(同上)
              |--s.checkerController.Start()(同上)
                |--go controller.startChecker
AI 代码解读

代码如下:

func (controller *CheckerController) Start() {
   
   
    ctx, cancel := context.WithCancel(context.Background())
    controller.cancel = cancel

    for checkerType := range controller.checkers {
   
   
        go controller.startChecker(ctx, checkerType)
    }
}
AI 代码解读

controller.checkers有4个值:

channel_checker、segment_checker、balance_checker、index_checker。

每种类型的checker启动一个goroutine。

checkers.jpg

按类型启动checker:

func (controller *CheckerController) startChecker(ctx context.Context, checkerType string) {
   
   
    interval := getCheckerInterval(checkerType)
    ticker := time.NewTicker(interval)
    defer ticker.Stop()

    for {
   
   
        select {
   
   
        case <-ctx.Done():
            log.Info("Checker stopped",
                zap.String("type", checkerType))
            return

        case <-ticker.C:
            controller.check(ctx, checkerType)

        case <-controller.manualCheckChs[checkerType]:
            ticker.Stop()
            controller.check(ctx, checkerType)
            ticker.Reset(interval)
        }
    }
}
AI 代码解读

interval控制参数:

func getCheckerInterval(checkerType string) time.Duration {
   
   
    switch checkerType {
   
   
    case segmentChecker:
        return Params.QueryCoordCfg.SegmentCheckInterval.GetAsDuration(time.Millisecond)
    case channelChecker:
        return Params.QueryCoordCfg.ChannelCheckInterval.GetAsDuration(time.Millisecond)
    case balanceChecker:
        return Params.QueryCoordCfg.BalanceCheckInterval.GetAsDuration(time.Millisecond)
    case indexChecker:
        return Params.QueryCoordCfg.IndexCheckInterval.GetAsDuration(time.Millisecond)
    default:
        return Params.QueryCoordCfg.CheckInterval.GetAsDuration(time.Millisecond)
    }
}
AI 代码解读

代码中默认值:

单位毫秒
queryCoord.checkSegmentInterval = 1000
queryCoord.checkChannelInterval = 1000
queryCoord.BalanceCheckInterval = 10000
queryCoord.checkIndexInterval = 10000
AI 代码解读

CheckInterval参数已废弃。

目录
打赏
0
0
0
0
25
分享
相关文章
雷同性分析问题
雷同性分析问题探讨了企业投标数据的相似度计算方法及其应用。通过比例计算(分子为匹配条数,分母为投标次数乘积)评估企业间关联,达到75%阀值则视为团伙。文中对比了分箱算法、聚类算法和暴力穷举法等方案的可行性,指出目前以比率作为评判依据较为合理,但需进一步讨论其有效性。前端展示方面,建议采用类似企业关联网的方式呈现关联关系。
49 16
分析fastcache和freecache(一)
分析fastcache和freecache(一)
95 5
摊还分析
摊还分析 本章内容: 1.聚合分析 2.核算法 3.势能法 4.动态表   一  聚合分析   1.  在摊还分析中,我们求数据结构的一个操作序列中所执行的所有操作的平均时间,来评价操作的代价,它不涉及概率,可以保证最坏情况下每个操作的平均性能。
779 0
【MySQLprofiling分析
【MySQLprofiling分析
120 0
【MySQLprofiling分析
场景分析
如何梳理业务流程、建立指标体系?
750 0
场景分析
艾伟_转载:对于C#中b=a的N种情况分析
  本文旨在验证一个容易混淆的概念,从而为《玩转WPF/Silverlight中INotifyPropertyChanged和ObservableCollection》做铺垫。   两个相同类型的变量a和b,并且有如下关系:        b = a;   如果a发生改变,b是否也发生改变呢?    情况很复杂,分以下几种情况谈论:       1) 单个实体             1.
805 0
多因子探索分析
假设检验 检验统计量,根据数据的均值、方差等性质,将数据转换为一个函数,构造这个函数的目的是将这个数据转换为一个已知分布容易解决的格式 显著性水平一般用希腊字母a表示,0.05代表数据有95%的可能与已知分布一致。
1418 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等