milvus各组件的结构体分析2

milvus各组件的结构体分析2

分析各组件的服务端API。

rootcoord

// Server grpc wrapper
type Server struct {//自身提供的api功能接口rootCoord   types.RootCoordComponentgrpcServer  *grpc.ServergrpcErrChan chan errorwg sync.WaitGroupctx    context.Contextcancel context.CancelFuncserverID atomic.Int64etcdCli    *clientv3.ClienttikvCli    *txnkv.ClientdataCoord  types.DataCoordClientqueryCoord types.QueryCoordClientnewDataCoordClient  func(string, *clientv3.Client) types.DataCoordClientnewQueryCoordClient func(string, *clientv3.Client) types.QueryCoordClient
}

types.RootCoordComponent是一个接口。

包含了dataCoord和queryCoord客户端。

dataCoord由newDataCoordClient赋值。

queryCoord由newQueryCoordClient赋值。

从结构体可以看出:

1.Server结构体包裹了一个rootCoord接口,用来实现rootCoord的一些API功能。

type RootCoordComponent interface {RootCoordSetAddress(address string)SetEtcdClient(etcdClient *clientv3.Client)SetTiKVClient(client *txnkv.Client)UpdateStateCode(commonpb.StateCode)SetDataCoordClient(dataCoord DataCoordClient) errorSetQueryCoordClient(queryCoord QueryCoordClient) errorSetProxyCreator(func(ctx context.Context, addr string, nodeID int64) (ProxyClient, error))GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error)
}

RootCoord也是一个接口,里面包含接口Component,这个接口有方法

Init()、Start()、Stop()、Regiter()。

2.Server结构体包含了客户端etcdCli和tikvCli,根据配置文件选择使用etcd还是tikv作为元数据存储。

3.包含一个grpcServer结构体

4.Server结构体包含了dataCoord客户端,说明rootcoord会和datacoord通信。

types.DataCoordClient是一个接口。

type DataCoordClient interface {io.Closerdatapb.DataCoordClient
}

datapb.DataCoordClient也是一个接口,是datacoord service的客户端接口。

5.Server结构体包含了queryCoord客户端,说明rootcoord会和queryCoord通信。

types.QueryCoordClient是一个接口。

type QueryCoordClient interface {io.Closerquerypb.QueryCoordClient
}

querypb.QueryCoordClient也是一个接口,是querycoord service的客户端接口。

datacoord

没有indexcoord,和datacoord合并。

// Server is the grpc server of datacoord
type Server struct {ctx    context.Contextcancel context.CancelFuncserverID atomic.Int64wg        sync.WaitGroupdataCoord types.DataCoordComponentetcdCli *clientv3.ClienttikvCli *txnkv.ClientgrpcErrChan chan errorgrpcServer  *grpc.Server
}

从结构体可以看出:

1.Server结构体包裹了一个dataCoord接口,用来实现dataCoord的一些API功能。

type DataCoordComponent interface {DataCoordSetAddress(address string)SetEtcdClient(etcdClient *clientv3.Client)SetTiKVClient(client *txnkv.Client)SetRootCoordClient(rootCoord RootCoordClient)SetDataNodeCreator(func(context.Context, string, int64) (DataNodeClient, error))SetIndexNodeCreator(func(context.Context, string, int64) (IndexNodeClient, error))
}

2.Server结构体包含了客户端etcdCli和tikvCli,根据配置文件选择使用etcd还是tikv作为元数据存储。

3.包含一个grpcServer结构体。

datacoord并不像rootcoord包含有其它组件的客户端。

querycoord

// Server is the grpc server of QueryCoord.
type Server struct {wg         sync.WaitGrouploopCtx    context.ContextloopCancel context.CancelFuncgrpcServer *grpc.ServerserverID atomic.Int64grpcErrChan chan errorqueryCoord types.QueryCoordComponentfactory dependency.FactoryetcdCli *clientv3.ClienttikvCli *txnkv.ClientdataCoord types.DataCoordClientrootCoord types.RootCoordClient
}

从结构体可以看出:

1.Server结构体包裹了一个querycoord接口,用来实现querycoord的一些API功能。

type QueryCoordComponent interface {QueryCoordSetAddress(address string)SetEtcdClient(etcdClient *clientv3.Client)SetTiKVClient(client *txnkv.Client)UpdateStateCode(stateCode commonpb.StateCode)SetDataCoordClient(dataCoord DataCoordClient) errorSetRootCoordClient(rootCoord RootCoordClient) errorSetQueryNodeCreator(func(ctx context.Context, addr string, nodeID int64) (QueryNodeClient, error))
}

2.Server结构体包含了客户端etcdCli和tikvCli,根据配置文件选择使用etcd还是tikv作为元数据存储。

3.包含一个grpcServer结构体。

4.Server结构体包含了dataCoord客户端,说明querycoord会和datacoord通信。

5.Server结构体包含了rootCoord客户端,说明querycoord会和rootCoord通信。

indexcoord

没有indexcoord,和datacoord合并。

datanode

type Server struct {datanode    types.DataNodeComponentwg          sync.WaitGroupgrpcErrChan chan errorgrpcServer  *grpc.Serverctx         context.Contextcancel      context.CancelFuncetcdCli     *clientv3.Clientfactory     dependency.FactoryserverID atomic.Int64rootCoord types.RootCoorddataCoord types.DataCoordnewRootCoordClient func(string, *clientv3.Client) (types.RootCoordClient, error)newDataCoordClient func(string, *clientv3.Client) (types.DataCoordClient, error)
}

从结构体可以看出:

1.Server结构体包裹了一个datanode接口,用来实现datanode的一些API功能。

type DataNodeComponent interface {DataNodeUpdateStateCode(stateCode commonpb.StateCode)GetStateCode() commonpb.StateCodeSetAddress(address string)GetAddress() stringSetEtcdClient(etcdClient *clientv3.Client)SetRootCoordClient(rootCoord RootCoordClient) errorSetDataCoordClient(dataCoord DataCoordClient) error
}

2.Server结构体包含了客户端etcdCli。为什么这里没有tikvCli??

3.包含一个grpcServer结构体。

4.包含了rootCoord和dataCoord接口。

indexnode

// Server is the grpc wrapper of IndexNode.
type Server struct {indexnode types.IndexNodeComponentgrpcServer  *grpc.ServergrpcErrChan chan errorserverID atomic.Int64loopCtx    context.ContextloopCancel func()loopWg     sync.WaitGroupetcdCli *clientv3.Client
}

从结构体可以看出:

1.Server结构体包裹了一个indexnode接口,用来实现indexnode的一些API功能。

type IndexNodeComponent interface {IndexNodeSetAddress(address string)GetAddress() stringSetEtcdClient(etcdClient *clientv3.Client)UpdateStateCode(stateCode commonpb.StateCode)
}

2.Server结构体包含了客户端etcdCli。为什么这里没有tikvCli??

3.包含一个grpcServer结构体。

不包含其它组件。

querynode

// Server is the grpc server of QueryNode.
type Server struct {querynode   types.QueryNodeComponentwg          sync.WaitGroupctx         context.Contextcancel      context.CancelFuncgrpcErrChan chan errorserverID atomic.Int64grpcServer *grpc.ServeretcdCli *clientv3.Client
}

从结构体可以看出:

1.Server结构体包裹了一个querynode接口,用来实现querynode的一些API功能。

type QueryNodeComponent interface {QueryNodeUpdateStateCode(stateCode commonpb.StateCode)SetAddress(address string)GetAddress() stringSetEtcdClient(etcdClient *clientv3.Client)
}

2.Server结构体包含了客户端etcdCli。为什么这里没有tikvCli??

3.包含一个grpcServer结构体。

不包含其它组件。

proxy

// Server is the Proxy Server
type Server struct {ctx                context.Contextwg                 sync.WaitGroupproxy              types.ProxyComponenthttpListener       net.ListenergrpcListener       net.ListenertcpServer          cmux.CMuxhttpServer         *http.ServergrpcInternalServer *grpc.ServergrpcExternalServer *grpc.ServerserverID atomic.Int64etcdCli          *clientv3.ClientrootCoordClient  types.RootCoordClientdataCoordClient  types.DataCoordClientqueryCoordClient types.QueryCoordClient
}

从结构体可以看出:

1.Server结构体包裹了一个proxy接口,用来实现proxy的一些API功能。

type ProxyComponent interface {ProxySetAddress(address string)GetAddress() stringSetEtcdClient(etcdClient *clientv3.Client)SetRootCoordClient(rootCoord RootCoordClient)SetDataCoordClient(dataCoord DataCoordClient)SetQueryCoordClient(queryCoord QueryCoordClient)SetQueryNodeCreator(func(ctx context.Context, addr string, nodeID int64) (QueryNodeClient, error))GetRateLimiter() (Limiter, error)UpdateStateCode(stateCode commonpb.StateCode)
}

2.Server结构体包含了客户端etcdCli。为什么这里没有tikvCli??

3.包含客户端rootCoordClient、dataCoordClient、queryCoordClient。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/811976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker操作详解

Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。使用 Docker,你可以很方便地部署和扩展应用程序,并且可以按…

【JVM】避免java内存泄漏、溢出的几种方法

1.尽早释放无用对象的引用。 好的办法是使用临时变量的时候,让引用变量在退出活动域后自动设置为null,暗示垃圾收集器来收集该对象,防止发生内存泄露。 2. 程序进行字符串处理时,尽量避免使用String,应使用StringBuffe…

必应bing搜索广告推广国内能开户吗?

随着互联网广告市场的不断进化和细分化,必应Bing搜索广告已逐渐成为中国企业拓展国内市场、精准触达目标客户的重要渠道之一。2024年,必应Bing在国内市场的进一步布局,不仅彰显了其对本土企业的强大吸引力,更带来了全新的开户政策…

【网站项目】驾校预约管理系统小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

【opencv】示例-image_alignment.cpp 利用ECC 算法进行图像对齐

affine imshow("image", target_image); imshow("template", template_image); imshow("warped image", warped_image); imshow("error (black: no error)", abs(errorImage) * 255 / max_of_error); homography 这段代码是一个利用EC…

「51媒体网」汽车类媒体有哪些?车展媒体宣传

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 汽车类媒体有很多,具体如下: 汽车之家:提供全面的汽车新闻、评测、导购等内容。 爱卡汽车:同样是一个综合性的汽车信息平台,涵…

2024 年适用于 Mac 电脑的最佳 SD 卡恢复软件

D 卡体积很小,广泛用于数码相机、摄像机、行车记录仪、无人机等。通常,在使用设备拍照、拍摄视频后,您会将文件移动到 Mac 进行进一步编辑或作为备份。大多数时候,应该存在问题。但是,您的 SD 卡仍然会出现一些问题并导…

Harmony鸿蒙南向驱动开发-Regulator接口使用

功能简介 Regulator模块用于控制系统中某些设备的电压/电流供应。在嵌入式系统(尤其是手机)中,控制耗电量很重要,直接影响到电池的续航时间。所以,如果系统中某一个模块暂时不需要使用,就可以通过Regulato…

Excel/WPS超级处理器,提取汉字/字母/数字

在职场工作中,经常会遇到单元格中有汉字,数字,字母三者的自由组合,但往往只需要其中的一者,如何快速提取呢,超级处理器,提供了4个功能可选。 超级处理器下载与安装 1)分离字符 将…

平板设备IP地址设置指南

在数字化时代,平板电脑作为便携且功能强大的设备,广泛应用于日常生活和工作中。为了确保平板能够正常接入网络并与其他设备进行通信,正确设置IP地址是至关重要的。虎观小二将为您介绍如何设置平板的IP地址,帮助您轻松完成网络配置…

unity在linux环境下videoplayer 无法播放问题解决路径

1、问题 一个项目需要在linux下播放视频,并且视频在机器上,也就是要使用应用外的视频文件进行播放。 视频的格式当前提供的事avi格式,并且使用videoplayer 在windows下播放正常。 但是发出包之后再Ubuntu环境怎么都无法播放。 2、测试环境…

LDF、DBC、BIN、HEX、S19、BLF、ARXML、slx等

文章目录 如题 如题 LDF是LIN报文格式文件,把这个直接拖到软件里面,可以发报文和接收报文 DBC是CAN报文格式文件,把这个直接拖到软件里面,可以发报文和接收报文 BIN文件烧录在BOOT里面(stm32)&#xff0c…

开源无需授权2024最新同城上门预约家政按摩小程序+公众号H5+APP源码系统下载

2024最新同城上门预约家政按摩源码简介: 开源无需授权2024最新同城上门预约家政按摩小程序+公众号H5+APP源码系统下载,前端采用uni-app开发, 后端thinkphp框架开发。适配多端(小程序+公众号H5&…

php反序列化(2)

一.pop链 在反序列化中,我们能控制的数据就是对象中的属性值(成员变量),所以在php反序列化中有一种漏洞利用方法叫“面向属性编程”,即pop(property oriented programming)。 pop链就是利用魔…

Docker Entrypoint和CMD同时使用的注意事项

docker镜像同时配置了entrypoint和CMD,entrypoint指定的是某个命令行工具比如salt,CMD指定的是/bin/bash,那么用docker run启动容器时,会发生什么 当Docker镜像同时配置了ENTRYPOINT和CMD时,它们的交互行为如下&#…

Swift中的整型

在Swift中,整型数据指的是包括负数、零和正数在内的整数。整型数据在Swift中有多种数据类型可供选择,具体如下: Int:Int是最常用的整型数据类型,表示带符号的整数。在32位平台上,Int的取值范围是-2,147,48…

不借助第三方工具打包QT程序

准备工作: 项目/可执行文件名:QTAppName 打包项目存放的文件名:pack(这个文件名无所谓) 脚本名: copylib.sh(类似ldd命令):用于将.so库文件的依赖项复制并放入自动生…

vscode远程免密登录ssh

vscode远程免密登录ssh 1. 安装vscode2. 安装ssh3. 本地vscode配置免密登录远端开发机1. 本地配置秘钥2. 远程开发机配置秘钥 4. vscode常用小工具1. vscode怎么设置ctrl加滚轮放大字体 1. 安装vscode 2. 安装ssh 设置符号打开config配置文件,点击符号ssh连接新的远…

4. Django 探究FBV视图

4. 探究FBV视图 视图(Views)是Django的MTV架构模式的V部分, 主要负责处理用户请求和生成相应的响应内容, 然后在页面或其他类型文档中显示. 也可以理解为视图是MVC架构里面的C部分(控制器), 主要处理功能和业务上的逻辑. 我们习惯使用视图函数处理HTTP请求, 即在视图里定义def…

Oracle使用regexp_like报错ORA-12733 正则表达式太长

注:此篇内容并没有解决正则表达式太长的问题。 在命令行窗口连接数据库: >sqlplus username/passwordhostname:port/SID或service_name 其中: username 是你的数据库用户名。 password 是你的数据库密码。 hostname 是数据库服务器的…