Milvus的存储/计算分离

news2024/9/20 14:14:38

前言

根据数据面与控制面相隔离的原则,从可扩展性和灾难恢复来看,Milvus由4个相互独立的层组成

访问层

由一系列无状态的代理组成,访问层是系统和用户之间的第一层,它主要是验证客户端请求和规整返回的结果

  • 代理是无状态的,它使用负载均衡组件例如Nginx, Kubernetes Ingress, NodePort和LVS提供统一的服务地址
  • 因为Milvus采用大规模并行处理架构,代理需要在返回给客户端最终结果之前合并和后置处理中间结果

协调服务

协调服务将任务分配给工作节点,它起到系统大脑的作用。它处理的任务包括:集群拓扑图管理,负载均衡,时间戳生成,数据申报和数据管理。

有三种类型的协调者:根协调者,数据协调者,查询协调者

根协调者

根协调者处理DDL和DML请求,比如创建和删除集合,分区或者索引,也会像管理TSO(oracle时间戳)和发布时间心跳

查询协调者

查询协调者管理查询节点的拓扑图和负载均衡,从不断增长的段切换到封闭的段。

数据协调者

数据协调者管理数据节点和索引节点的拓扑图,维护元数据,触发刷新,压缩和索引构建以及其他数据底层操作。

工作节点

类似于人的胳膊和腿,工作节点无脑的执行协调服务的指令和执行代理的DML命令。得益于存储和计算的分离,工作节点是无状态的,当部署在kubernates时,它促进了系统的扩展性和灾难恢复。有三种类型的工作节点

查询节点

查询节点检索增量日志数据,并通过订阅日志代理将其转化为不断增长的段,从对象存储里面加载历史数据,在向量和标量数据中运行混合搜索

数据节点

数据节点通过订阅日志代理检索增量日志数据,处理突变请求,打包日志数据到日志快照,并将他们存储在对象存储。

索引节点

索引节点构建索引,索引节点不需要驻留在内存中,并可以被serverless 框架实现

存储

存储是系统的骨干,负责数据的持久化。它由元数据存储,日志代理和对象存储组成

元数据存储

元数据存储存储元数据的快照,比如集合schema,消息消费的checkpoint。存储元数据要求极高的可用性,强一致性和事务支持。所以milvus选择etcd作为元数据存储。milvus也使用etcd作为服务注册和健康检测。

对象存储

对象存储存储日志文件的快照、标量和向量数据的索引文件,中间查询结果。milvus使用minIO作为中间存储,能非常方便的部署在AWS S3和 Azure Blob,二者都是世界受欢迎的,性价比非常高的存储服务。然后对象存储具有很高的访问延迟,并按查询次数收费。为了提高它的性能和降低费用,milvus计划在内存或者基于SSD的缓存池实现冷热数据分离

日志代理

日志代理是一个发布订阅系统,并支持回放。它负责流式数据的持久化和事件通知。当工作节点从系统崩溃中恢复的时候它也需要确保增量数据的完整性。milvus集群使用pulsar作为日志代理;milvus独立部署使用rocksDB作为日志代理。此外,日志代理可以很容易地被诸如Kafka之类的流数据存储平台所取代。

milvus围绕着日志代理建设,并秉承日志就是数据的理念,所以milvus没有使用物理表而是通过日志持久化和日志快照来保证数据可靠性。

日志代理是milvus的骨干。由于其天生的发布订阅机制,它负责数据持久化和读写分离。上面的图例简单描绘了该机制,该系统分为两个角色,日志代理(维护log sequence)和日志订阅者。前者记录所有改变集合状态的操作,后者订阅订阅log sequence来更新本地数据,并以只读副本的形式提供服务。发布订阅机制还在变更数据捕获(CDC)和全球分布式部署方面为系统的可扩展性腾出了空间。

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

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

相关文章

GPU学习记一下线程分组相关

在compute的时候,是要dispatch一个数量的代表分了多少块任务集,dispatch的块内部也是有一个数量的,那么这些值怎么取的呢 内部,N卡32 外面dispatch的数量就是all/32 然后细说这个值 这有一个叫core的东西,就是相当于th…

【opencv】答题卡判分实验

实验环境: anaconda、jupyter notebook 实验用的包:numpy、matplotlib、opencv 实验的目的还是以熟悉图像的透视变换、轮廓特征提取为主要目的 关于如何判断答题卡被选项:通过几个覆盖备选项的掩膜与原二值图像想与,最终整个图像…

Springboot+MybatisPlus如何实现带验证码的登录功能

实现带验证码的登录功能由两部分组成::1、验证码的获取 2、登录(进行用户名、密码和验证码的判断) 获取验证码 获取验证码需要使用HuTool中的CaptchaUtil.createLineCaptcha()来定义验证码的长度、宽度、验证码位数以及干扰线…

性能测试工具—jmeter的基础使用

1.Jmeter三个重要组件 1.1线程组的介绍: 特点: 模拟用户,支持多用户操作多个线程组可以串行执行,也可以并行执行 线程组的分类: setup线程组:前置处理,初始化普通线程组:编写…

遥感数据集制作(Potsdam数据集为例):TIF图像转JPG,TIF标签转PNG,图像重叠裁剪

文章目录 TIF图像转JPGTIF标签转PNG图像重叠裁剪图像重命名数据集转COCO格式数据集转VOC格式 遥感图像不同于一般的自然图像,由于波段数量、图像位深度等原因,TIF图像数据不能使用简单的格式转换方法。本文以Potsdam数据集为例,制作能够直接用…

你了解 pom.xml 吗

你了解pomxml吗 springboot 是 java 利器&#xff0c;几乎每个写 java 的同学都会用&#xff0c;但是你了解 pom.xml 吗&#xff1f; 这篇干货查漏补缺。 首先我们创建个 springboot 项目 都选了默认设置&#xff1a; 我把这篇完整粘贴出来 pom.xml <?xml version&quo…

网络安全|隐藏IP地址的5种不同方法

隐藏计算机的IP地址在互联网在线活动种可以保护个人隐私&#xff0c;这是在线活动的一种常见做法&#xff0c;包括隐私问题、安全性和访问限制内容等场景。那么如何做到呢?有很5种方法分享。每种方法都有自己的优点和缺点。 1. 虚拟网络 当您连接到虚拟服务器时&#xff0c;您…

JVM内存模型最新面试题(持续更新)

问题&#xff1a;java中创建的对象一般放在哪里&#xff1f;(全流程包含从创建到回收) 回答 大部分对象在堆中&#xff0c;这个基本都知道&#xff1b; 少部分对象是会在栈中的&#xff0c;比如作用域不局限于方法内的方法内部变量&#xff0c;这类对象的特征一般就是生命周期…

第33次CSP认证Q3:化学方程式配平

&#x1f344;题目描述 为了配平一个化学方程式&#xff0c;我们可以令方程式中各物质的系数为未知数&#xff0c;然后针对涉及的每一种元素&#xff0c;列出关于系数的方程&#xff0c;形成一个齐次线性方程组。然后求解这个方程组&#xff0c;得到各物质的系数。这样&#x…

【C语言】通讯录系统实现

目录 1、通讯录系统介绍 2、代码分装 3、代码实现步骤 3.1制作菜单函数以及游戏运行逻辑流程 3.2、封装人的信息PeoInfo以及通讯录Contact结构体类型 3.3、初始化通讯录InitContact函数 3.4、增加联系人AddContact函数 3.5、显示所有联系人ShowContact函数 3.6、删除联系人D…

视频号小店是个风口吗?今年去做是明智的选择吗?一篇详解!

大家好&#xff0c;我是电商小V 视频号才刚刚推出一年半的时间&#xff0c;可以说自从推出之后这个项目的知名度一直是处于飙升的状态&#xff0c;一直处于爆火的状态&#xff0c;也是吸引了很多想做电商&#xff0c;想去创业的小伙伴&#xff0c;最主要的就是视频号小店背靠的…

流程图用什么软件做?选择这4款,让工作事半功倍

流程图用什么软件做&#xff1f;流程图是一种直观、清晰的图形表示法&#xff0c;它通过节点、箭头和符号等元素&#xff0c;精确地展示出一系列步骤、决策点以及操作过程。这种图形化的呈现方式不仅简化了复杂信息的处理&#xff0c;还使得读者能够迅速把握整体流程&#xff0…

C++容器:list(双向链表)

一丶list介绍 C中的list容器底层确实是以双向链表的形式实现的。 list容器是C标准模板库&#xff08;STL&#xff09;中的一部分&#xff0c;它提供了对列表数据结构的实现。 双向链表结构&#xff1a;list容器的每个元素都是通过指针链接在一起的&#xff0c;每个元素都包含…

C++11 新特性 常量表达式 constexpr

为了解决常量无法确定的问题&#xff0c;C11在新标准中提出了关键字constexpr&#xff0c;它能够有效地定义常量表达式&#xff0c;并且达到类型安全、可移植、方便库和嵌入式系统开发的目的。 一、常量的不确定性 在C11标准以前&#xff0c;我们没有一种方法能够有效地要求一…

为什么Python中会有集合set类型?

知乎上有人提问&#xff0c;为什么Python有了列表list、元组tuple、字典dict这样的容器后&#xff0c;还要弄个集合set&#xff1f; 确实set和list、tuple、dict一样&#xff0c;都是python的主要数据类型&#xff0c;它们的作用是不同的。 因为set是数学意义上的集合&#xf…

战网国际服加速器用哪个好 暴雪战网好用加速器介绍

战网国际版&#xff0c;又称Battle.net环球版&#xff0c;是暴雪娱乐操盘的全球性游戏互动平台&#xff0c;它跨越地理界限&#xff0c;服务于全球游戏爱好者。与地区限定版本相异&#xff0c;国际版赋予玩家自由进入暴雪旗下众多经典游戏的权利&#xff0c;无论身处何方&#…

使用C++实时读取串口数据(window使用已编译LibModbus库并用QT实现一个实时读取串口数据)

Modbus协议简介&#xff1a; 在工业自动化领域&#xff0c;Modbus协议是一个应用层通讯协议&#xff0c;它为电子设备之间的通信提供了一个常用的标准方法。Modbus协议最初由Modicon公司&#xff08;现为施耐德电气的一部分&#xff09;在1979年发明用于其可编程逻辑控制器&…

AIGC行业现在适合进入吗

AIGC行业目前正处于快速发展阶段,市场需求正处于爆发期,上大学网&#xff08;www.sdaxue.com&#xff09;认为&#xff0c;对于有兴趣的个人或企业而言&#xff0c;现在可能是一个适合进入的时机&#xff0c;以下是具体的分析&#xff0c;供大家参考&#xff01; 一、AIGC行业前…

java医院信息系统HIS源码SaaS模式Java版云HIS系统 接口技术RESTful API + WebSocket + WebService

java医院信息系统HIS源码SaaS模式Java版云HIS系统 接口技术RESTful API WebSocket WebService 云HIS是基于云计算的医疗卫生信息系统&#xff08;Cloud-Based Healthcare Information System&#xff09;&#xff0c;它运用云计算、大数据、物联网等新兴信息技术&#xff0c;…

熬了快两个月,终于拿到了淘天后端offer!

今年的暑期实习挺难找的&#xff0c;很多同学忙了几个月到现在还没有一个offer&#xff0c;真的很常见&#xff01;没找到暑期实习的同学千万不要太焦虑&#xff0c;可以留意留意日常实习&#xff0c;日常实习也找不到&#xff0c;那就去完善自己的项目经历&#xff0c;认真准备…