milvus各组件的结构体分析
各组件启动,需要构建各组件的结构体,一共8个。
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端。
type RootCoord struct {// 传递上下文ctx context.Context// 实现 RoodCoord grpc serversvr *grpcrootcoord.Server
}
type Proxy struct {// 实现 Proxy grpc serversvr *grpcproxy.Server
}
type QueryCoord struct {// 传递上下文ctx context.Context// 实现 QueryCoord grpc serversvr *grpcquerycoord.Server
}
type QueryNode struct {// 传递上下文ctx context.Context// 实现 QueryNode grpc serversvr *grpcquerynode.Server
}
type DataCoord struct {// 传递上下文ctx context.Context// 实现 DataCoord grpc serversvr *grpcdatacoord.Server
}
type DataNode struct {// 传递上下文ctx context.Context// 实现 DataNode grpc serversvr *grpcdatanode.Server
}
由于IndexCoord和DataCoord合并了,这里结构体为空。
type IndexCoord struct{}
type IndexNode struct {// 实现 IndexNode grpc serversvr *grpcindexnode.Server
}
只有Proxy和IndexNode没有ctx。为什么这2个没有ctx??
最原始的ctx为:
ctx, cancel := context.WithCancel(context.Background())
Server里的ctx为:
ctx1, cancel := context.WithCancel(ctx)
服务端路径:
internal\distributed\rootcoord\service.go
internal\distributed\proxy\service.go
internal\distributed\querycoord\service.go
internal\distributed\querynode\service.go
internal\distributed\datacoord\service.go
internal\distributed\datanode\service.go
internal\distributed\indexnode\service.go
每个服务端都有自己的API。