编程语言
首页 > 编程语言> > 【VictoriaMetrics】vm-select源码阅读

【VictoriaMetrics】vm-select源码阅读

作者:互联网

调用层次表格

源文件 行号 函数 说明
app/vmselect/main.go 63 main 入口
92行调用 requestHandler
app/vmselect/main.go 132 -requestHandler 处理http协议的入口
222行调用 selectHandler
app/vmselect/main.go 236 --selectHandler 处理查询逻辑
326行调用 prometheus.QueryRangeHandler
app/vmselect/prometheus/prometheus.go 1197 ---QueryRangeHandler 处理 /api/v1/query_range
1221调用queryRangeHandler
app/vmselect/prometheus/prometheus.go 1227 ----queryRangeHandler 查询的业务逻辑
1263行调用promql.Exec
app/vmselect/promql/exec.go 29 -----Exec 根据解析好的promql,执行查询逻辑
44行执行evalExpr
app/vmselect/promql/eval.go 203 ------evalExpr 根据解析好的metricsql.Expr结构,执行查询
(先看简单的根据一个监控项名字查询的情形)208行调用evalRollupFunc
app/vmselect/promql/eval.go 499 -------evalRollupFunc 执行汇总函数
526行调用evalRollupFuncWithMetricExpr
app/vmselect/promql/eval.go 665 --------evalRollupFuncWithMetricExpr 查询单个监控项的情况
703行调用netstorage.ProcessSearchQuery
app/vmselect/netstorage/netstorage.go 1405 ---------ProcessSearchQuery 把请求发到存储层
1439行调用processSearchQuery
app/vmselect/netstorage/netstorage.go 1471 ----------processSearchQuery 请求,并阻塞等待结果
1476行调用startStorageNodesRequest
1478行调用processSearchQuery
app/vmselect/netstorage/netstorage.go 1502 -----------startStorageNodesRequest 广播到所有存储节点
这里可以说明:vm-select到vm-storage这个路径上,对于选择后端的存储并没有复杂的算法,暴力广播而已!
app/vmselect/netstorage/netstorage.go 1853 ------------func (sn *storageNode) processSearchQuery 这里调用了sn.execOnConnWithPossibleRetry
可以看见,使用了 search_v4 这条命令来请求vm-storage
app/vmselect/netstorage/netstorage.go 1531 -----------func (snr *storageNodesRequest) collectResults processSearchQuery中调用collectResults来处理广播后的结果

感受

标签:调用,app,VictoriaMetrics,vm,netstorage,源码,go,select,vmselect
来源: https://www.cnblogs.com/ahfuzhang/p/15812804.html