milvus各组件的结构体分析

2024-04-16 16:01:33 浏览数 (1)

milvus各组件的结构体分析

各组件启动,需要构建各组件的结构体,一共8个。

代码语言:go复制
runComponent(ctx, localMsg, wg, components.NewRootCoord, metrics.RegisterRootCoord)
runComponent(ctx, localMsg, wg, components.NewProxy, metrics.RegisterProxy)
runComponent(ctx, localMsg, wg, components.NewQueryCoord, metrics.RegisterQueryCoord)
runComponent(ctx, localMsg, wg, components.NewQueryNode, metrics.RegisterQueryNode)
runComponent(ctx, localMsg, wg, components.NewDataCoord, metrics.RegisterDataCoord)
runComponent(ctx, localMsg, wg, components.NewDataNode, metrics.RegisterDataNode)
runComponent(ctx, localMsg, wg, components.NewIndexCoord, func(registry *prometheus.Registry)
runComponent(ctx, localMsg, wg, components.NewIndexNode, metrics.RegisterIndexNode)

真正的组件功能API都在Server端。

代码语言:go复制
type RootCoord struct {
    // 传递上下文
    ctx context.Context
    // 实现 RoodCoord grpc server
    svr *grpcrootcoord.Server
}
代码语言:go复制
type Proxy struct {
    // 实现 Proxy grpc server
    svr *grpcproxy.Server
}
代码语言:go复制
type QueryCoord struct {
    // 传递上下文
    ctx context.Context
    // 实现 QueryCoord grpc server
    svr *grpcquerycoord.Server
}
代码语言:go复制
type QueryNode struct {
    // 传递上下文
    ctx context.Context
    // 实现 QueryNode grpc server
    svr *grpcquerynode.Server
}
代码语言:go复制
type DataCoord struct {
    // 传递上下文
    ctx context.Context
    // 实现 DataCoord grpc server
    svr *grpcdatacoord.Server
}
代码语言:go复制
type DataNode struct {
    // 传递上下文
    ctx context.Context
    // 实现 DataNode grpc server
    svr *grpcdatanode.Server
}

由于IndexCoord和DataCoord合并了,这里结构体为空。

代码语言:go复制
type IndexCoord struct{}
代码语言:go复制
type IndexNode struct {
    // 实现 IndexNode grpc server
    svr *grpcindexnode.Server
}

只有Proxy和IndexNode没有ctx。为什么这2个没有ctx??

最原始的ctx为:

代码语言:go复制
ctx, cancel := context.WithCancel(context.Background())

Server里的ctx为:

代码语言:go复制
ctx1, cancel := context.WithCancel(ctx)

服务端路径:

代码语言:shell复制
internaldistributedrootcoordservice.go
internaldistributedproxyservice.go
internaldistributedquerycoordservice.go
internaldistributedquerynodeservice.go
internaldistributeddatacoordservice.go
internaldistributeddatanodeservice.go
internaldistributedindexnodeservice.go

每个服务端都有自己的API。

0 人点赞