queryCoord的checkerController分析

简介: 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参数已废弃。

目录
相关文章
|
存储 SQL API
milvus insert api流程源码分析
milvus insert api流程源码分析
842 3
|
人工智能 自然语言处理 API
向量检索服务实践测评
向量检索服务是一种基于阿里云自研的向量引擎 Proxima 内核,提供具备水平拓展、全托管、云原生的高效向量检索服务。向量检索服务将强大的向量管理、查询等能力,通过简洁易用的 SDK/API 接口透出,方便在大模型知识库搭建、多模态 AI 搜索等多种应用场景上集成。
139446 5
|
Go API 数据库
milvus的db和collection信息查询
milvus的db和collection信息查询
1840 0
|
开发工具 Python
milvus的delete操作
milvus的delete操作
1917 0
|
2月前
|
存储 自然语言处理 监控
2026深度实测:多外部Agent协同下的项目上下文全链路管理指南
团队将Claude、Cursor等外部Agent深度融入工作流,但面临上下文碎片化难题。为此设计“Agent为专家、底座为舞台”的协同架构:Agent专注高复杂度单点任务,底座统一管理上下文流转、权限与版本。已落地研报生成、代码变更、日志排障三大闭环场景,显著提升协作效率与信息一致性。(239字)
270 0
|
2月前
|
存储 人工智能 运维
最新版阿里云无影云电脑服务平台功能介绍
随着远程办公普及、AI算力需求爆发、企业数字化办公升级,传统本地电脑的短板愈发凸显:硬件更新成本高、设备性能固定无法扩容、数据本地存储易丢失泄露、多设备数据无法同步、批量运维管理繁琐复杂、高性能算力场景硬件门槛极高。无论是个人日常办公、开发者项目部署、设计渲染作业,还是企业规模化团队办公、AI智能体集群运行、远程协同作业,传统本地PC已经难以适配轻量化、弹性化、智能化的现代办公模式。
455 0
|
8月前
|
NoSQL 安全 网络安全
redis在云端内网,管理redis数据的方案
云端Redis默认禁外网访问,直接开放易致数据泄露(尤其弱密码场景)。推荐用yunedit-redis:通过SSH隧道安全映射内网Redis端口至本地(如16379),再连接localhost:16379,即可安全完成增删查改及导入导出。
|
12月前
|
存储 JSON 供应链
别踩分页坑!京东商品详情接口实战指南:从并发优化到数据完整性闭环(附多规格解析技巧)
京东商品详情接口(jingdong.ware.get)是电商数据开发的核心难点,本文详解其权限申请、分页优化、多规格递归解析与完整性校验等实战方案,结合代码示例与性能调优参数,助你高效稳定对接,提升数据获取效率2.5倍以上,适用于各类规模店铺的数据需求。
|
人工智能 运维 自然语言处理
如何在 Elasticsearch 中构建你的智能 AI 助手?
本文将带你探索一种全新的思路:如何基于 Elasticsearch 快速构建一个具备自然语言理解能力、异常检测和安全威胁识别能力的智能运维 AI 助手 。文章会围绕实际部署流程、关键技术点和典型应用场景展开,帮助你把 Elasticsearch 从“日志仓库”升级为“智能决策中枢”。
693 30
|
存储 消息中间件 监控
ELK、ELFK日志分析系统
ELK、ELFK日志分析系统
729 0