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。