queryCoord的checkerController分析

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

代码如下:

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

    for checkerType := range controller.checkers {
   
   
        go controller.startChecker(ctx, checkerType)
    }
}

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)
        }
    }
}

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)
    }
}

代码中默认值:

单位毫秒
queryCoord.checkSegmentInterval = 1000
queryCoord.checkChannelInterval = 1000
queryCoord.BalanceCheckInterval = 10000
queryCoord.checkIndexInterval = 10000

CheckInterval参数已废弃。

目录
相关文章
|
1月前
|
算法 前端开发 数据挖掘
雷同性分析问题
雷同性分析问题探讨了企业投标数据的相似度计算方法及其应用。通过比例计算(分子为匹配条数,分母为投标次数乘积)评估企业间关联,达到75%阀值则视为团伙。文中对比了分箱算法、聚类算法和暴力穷举法等方案的可行性,指出目前以比率作为评判依据较为合理,但需进一步讨论其有效性。前端展示方面,建议采用类似企业关联网的方式呈现关联关系。
46 16
|
6月前
|
存储 缓存 Java
分析fastcache和freecache(一)
分析fastcache和freecache(一)
92 5
|
Java Android开发
Android内存使用情况分析
Android系统的内存由几个不同的内存池中的几个不同的分配器管理
437 0
Android内存使用情况分析
摊还分析
摊还分析 本章内容: 1.聚合分析 2.核算法 3.势能法 4.动态表   一  聚合分析   1.  在摊还分析中,我们求数据结构的一个操作序列中所执行的所有操作的平均时间,来评价操作的代价,它不涉及概率,可以保证最坏情况下每个操作的平均性能。
779 0
|
定位技术 Android开发
BottomSheetBehavior分析
BottomSheetBehavior分析
BottomSheetBehavior分析
|
供应链 数据挖掘
场景分析
如何梳理业务流程、建立指标体系?
749 0
场景分析
|
测试技术 C#
艾伟_转载:对于C#中b=a的N种情况分析
  本文旨在验证一个容易混淆的概念,从而为《玩转WPF/Silverlight中INotifyPropertyChanged和ObservableCollection》做铺垫。   两个相同类型的变量a和b,并且有如下关系:        b = a;   如果a发生改变,b是否也发生改变呢?    情况很复杂,分以下几种情况谈论:       1) 单个实体             1.
805 0
|
Web App开发 前端开发 NoSQL