Milvus数据一致性介绍及选择方法
1、Milvus 时钟机制
Milvus 通过时间戳水印来保障读链路的一致性,如下图所示,在往消息队列插入数据时, Milvus 不光会为这些插入记录打上时间戳,还会不间断地插入同步时间戳,以图中同步时间戳 syncTs1 为例,当下游消费者(比如QueryNodes)看到 syncTs1,那么意味着 syncTs1 以前的 数据已经全部被消费了,换句话说,比 syncTs1 时间戳还小的插入记录不会再出现在消息队列中。

2、Guarantee Timestamp
Milvus 通过引入 Guarantee timestamp (GuaranteeTs) 来实现不同的一致性级别。GuaranteeTs 用于通知查询节点,在查询节点可以看到 GuaranteeT 之前的所有数据之前,不会执行搜索或查询请求。指定一致性级别时,一致性级别将映射到特定的 GuaranteeTs 值。
QueryNodes 会不断从消息队列里面拿到插入记录以及同步时间戳,每消费到一个同步时间 戳,QueryNodes 会把这个时间戳称为可服务时间——“ServiceTime”,QueryNodes 只能够看到 ServiceTime 以前所有的数据。有了这个 ServiceTime,Milvus 根据不同用户对一致性以及可用性的需求,提供了 GuaranteeTs, 用户可以指定 GuaranteeTs 告知 QueryNodes 我这次 Search 请求必须看到 GuaranteeTs 以前 的所有数据。
如下图所示,如果 GuaranteeTs 小于 ServiceTime,QueryNodes 可以立刻执行 Search 查询。

如果 GuaranteeTs 大于 ServiceTime,QueryNodes 必须从消息队列里持续消费同步时间戳, 直到 ServiceTime 大于 GuaranteeTs 才能执行 Search 查询。

如果用户希望得到足够高的查询精度,对一致性有较高的要求,对查询时延不敏感,那么 GuaranteeTs 应该尽可能大;反之,如果用户希望尽快得到搜索结果,对可用性有较高的要求,对查询精度有较高的 容忍程度,那么 GuaranteeTs 可以不必特别大。
3、一致性等级

- 强一致性(Strong):GuaranteeTs 设为系统最新时间戳,QueryNodes 需要等待 ServiceTime 推进到当前最新时间戳才能执行该 Search 请求;
- 最终一致性(Eventually):GuaranteeTs 设为一个特别小的值(比如说设为 1),跳过一致性检查,立刻在当前已有数据上执行 Search 查询;
- 有界一致性(Bounded staleness):GuaranteeTs 是一个比系统最新时间稍旧的时间,在可容忍范围内可以立刻执行查询;
- 客户端一致性(Session):客户端使用上一次写入的时间戳作为 GuaranteeTs,那么每个客户端至少能看到 自己插入的全部数据。
Milvus 默认提供有界一致性,如果用户不传入 GuaranteeTs,那么会将 GuaranteeTs 设为系统 当前的最新时间戳。
4、不同一致性适用场景
Strong:根据PACELC定理,如果一致性级别设置为强,则延迟会增加。因此,建议在功能测试时选择一致性强的,以保证测试结果的准确性。强一致性也最适合以牺牲搜索速度为代价对数据一致性有严格要求的应用程序。处理订单支付和账单的在线金融系统就是一个例子。
Bounded staleness:有界过期适用于需要控制搜索延迟并可以接受零星数据不可见的场景。例如,在像视频推荐引擎这样的推荐系统中,数据不可见性有时对整体召回率的影响很小,但可以显著提高推荐系统的性能。
Session:对于那些对同一会话中的数据一致性要求很高的场景,建议选择会话作为一致性级别。例如,从图书馆系统中删除图书条目的数据,在确认删除并刷新页面(不同的会话)之后,图书应该不再在搜索结果中可见。
Eventually:根据PACELC定理,在牺牲一致性的情况下,搜索延迟可以大大缩短。因此,最终一致性最适合对数据一致性要求不高但需要快速搜索性能的场景。例如,检索Amazon产品的评论和评级,其级别为“最终一致”。
相关文章:
Milvus数据一致性介绍及选择方法
1、Milvus 时钟机制 Milvus 通过时间戳水印来保障读链路的一致性,如下图所示,在往消息队列插入数据时, Milvus 不光会为这些插入记录打上时间戳,还会不间断地插入同步时间戳,以图中同步时间戳 syncTs1 为例࿰…...
异常处理和单元测试python
一、实验题目 异常处理和单元测试 二、实验目的 了解异常的基本概念和常用异常类。掌握异常处理的格式、处理方法。掌握断言语句的作用和使用方法。了解单元测试的基本概念和作用。掌握在Python中使用测试模块进行单元测试的方法和步骤。 三、实验内容 编程实现如下功能&a…...
蓝牙物联网在汽车领域的应用
I、蓝牙的技术特点 1998 年 5 月,瑞典爱立信、芬兰诺基亚、日本东芝、美国IBM 和英特尔公司五家著名厂商,在联合拓展短离线通信技术的标准化活动时提出了蓝牙技术的概念。蓝牙工作在无需许可的 2.4GHz 工业频段 (SIM)之上(我国的频段范围为2400.0~248…...
用23种设计模式打造一个cocos creator的游戏框架----(二十二)原型模式
1、模式标准 模式名称:原型模式 模式分类:创建型 模式意图:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象 结构图: 适用于: 1、当一个系统应该独立于它的产品创建、构成和表示时 2、…...
paddle 55 使用Paddle Inference部署嵌入nms的PPYoloe模型(端到端fps达到52.63)
Paddle Inference 是飞桨的原生推理库,提供服务器端的高性能推理能力。由于 Paddle Inference 能力直接基于飞桨的训练算子,因此它支持飞桨训练出的所有模型的推理。paddle平台训练出的模型转换为静态图时可以选用Paddle Inference的框架进行推理,博主以前都是将静态图转换为…...
自动化测试工具-Selenium:WebDriver的API/方法使用全解
我们上一篇文章介绍了Selenium的三大组件,其中介绍了WebDriver是最重要的组件。在这里,我们将看到WebDriver常用的API/方法(注:这里使用Python语言来进行演示)。 1. WebDriver创建 打开VSCode,我们首先引…...
如何通过蓝牙串口启动智能物联网?
1、低功耗蓝牙(BLE)介绍 BLE 技术是一种低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的 2,4 GHZ 工业、科学、医学(Industrial Scientific Medical,ISM)频段。BLE在设计之初便被定位为一种超低功耗(Ultra Low Power,ULP)无线技术&…...
Linux---基础操作命令
内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…...
uniapp怎么动态渲染导航栏的title?
直接在接口请求里面写入以下: 自己要什么参数就写什么参数 本人仅供参考: this.name res.data.data[i].name; console.log(名字, res.data.data[i].name); uni.setNavigationBarTitle({title: this.name}) 效果:...
【机器学习】决策树
参考课程视频:https://www.icourse163.org/course/NEU-1462101162?tid1471214452 1 概述 样子: 2 分裂 2.1 分裂原则 信息增益 信息增益比 基尼指数 3 终止 & 剪枝 3.1 终止条件 无需分裂 当前节点内样本同属一类 无法分裂 当前节点内…...
[node] Node.js的全局对象Global
[node] Node.js的全局对象Global 什么是全局对象 & 全局变量全局对象与全局变量全局变量-- __filename全局变量-- __dirname全局函数-- setTimeout(cb, ms)全局函数-- clearTimeout(t)全局函数-- setInterval(cb, ms)全局变量-- consoleconsole 方法概览 全局变量-- proces…...
完整的 Meteor NPM 集成
在Meteor中,你只能使用包内的模块。你不能直接将模块与流星应用一起使用。此软件包解决了该问题 文章目录 源码下载地址安装定义软件包使用软件包在 Meteor 方法中使用 npm 模块的示例应用程序接口异步实用程序Async.runSync(函数)Meteor.sy…...
智能优化算法应用:基于骑手优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于骑手优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于骑手优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.骑手优化算法4.实验参数设定5.算法结果6.…...
解决 MATLAB 遗传算法中 exitflg=4 的问题
一、优化问题简介 以求解下述优化问题为例: P 1 : min p ∑ k 1 K p k s . t . { ∑ k 1 K R k r e q l o g ( 1 α k ∗ p k ) ≤ B b s , ∀ k ∈ K p k ≥ 0 , ∀ k ∈ K \begin{align} {P_1:}&\mathop{\min}_{\bm{p}}{ \sum\limits_{k1}^K p_k } \no…...
云卷云舒:云原生业务应用成熟度模型
笔者最近学习了信通院发布的《云原生应用成熟度的评估模型》,做如下解读: 一、概述 云原生业务应用成熟度模型从企业业务应用基础设施域、应用研发域以及服务治理域等三个能力域二十个过程域综合评估企业业务应用在弹性、高可用、自愈性、可观测性以及…...
STM32的以太网外设+PHY(LAN8720)使用详解(5):MAC及DMA配置
0 工具准备 1.野火 stm32f407霸天虎开发板 2.LAN8720数据手册 3.STM32F4xx中文参考手册1 MAC及DMA配置 1.1 使能ETH时钟 stm32的ETH外设挂载在AHB1总线上,位于RCC_AHB1ENR的bit25-bit27: 相关语句如下: RCC_AHB1PeriphClockCmd(RCC_AHB1…...
GitHub、Gitee、Gitlab共用一个SSH密钥配置
目录 1. 说明2. 生成ssh2-1. 设置全局邮箱和用户名2-2. 生成全局ssh 3. Github、Gitee配置ssh3-1. Github配置3-2. Gitee配置 1. 说明 由于我的Github、Gitee、Gitlab用的邮箱不同,向不同的平台提交代码时都需要验证密码,非常麻烦所以配置了一个共用的S…...
ClickHouse(19)ClickHouse集成Hive表引擎详细解析
文章目录 Hive集成表引擎创建表使用示例如何使用HDFS文件系统的本地缓存查询 ORC 输入格式的Hive 表在 Hive 中建表在 ClickHouse 中建表 查询 Parquest 输入格式的Hive 表在 Hive 中建表在 ClickHouse 中建表 查询文本输入格式的Hive表在Hive 中建表在 ClickHouse 中建表 资料…...
用C求斐波那契数列-----(C每日一编程)
斐波那契数列: 斐波那契数列是指这样一个数列:1,1,2,3,5,8,13,21,34,55,89……这个数列从第3项开始 ,每一项都等于前两项之和。 递推…...
在Jetpack Compose中使用ExoPlayer实现直播流和音频均衡器
在Jetpack Compose中使用ExoPlayer实现直播流和音频均衡器 背景 ExoPlayer与Media3的能力结合,为Android应用程序播放多媒体内容提供了强大的解决方案。在本教程中,我们将介绍如何设置带有Media3的ExoPlayer来支持使用M3U8 URL进行直播流。此外&#x…...
分析梳理--分子动力学模拟的常规步骤八(Gromacs)
作者,Evil Genius 每一个组学内容都很多啊,都需要花费大量的时间学习,学习的最好阶段就是学生阶段,你的导师就是你的伯乐,像我这种社会底层人员,纯纯没事干,学了有没有用真的不知道。 这一篇我们继续分子动力学,上一步我们处理配体分子得到符合Gromacs的出入文件 这里…...
089、机器人动力学:拉格朗日法
机器人动力学:拉格朗日法 从一次机械臂抖动说起 去年调试一台六轴协作机器人,末端负载从0.5kg换到2kg,位置环PID参数调了三轮,静态精度勉强达标。一跑轨迹,末端抖得像筛糠。同事说“加个低通滤波”,我试了,抖动小了,但轨迹跟踪滞后明显。后来翻出动力学模型,用拉格朗…...
L1正则与次梯度
L1:稀疏权重、解易落在轴上、特征选择(应用场景)、w0w0w0不可导需次梯度subgradient:∂f(x){g∣f(y)≥f(x)gT(y−x),∀ y∈dom f}\partial f(x)\{g|f(y)\geq f(x) g^T(y-x),\forall\ y\in \text{dom}\ f \}∂f(x){g∣f(y)≥f(x)g…...
基于Magisk挂载机制的Android HTTPS流量监控完整技术方案
基于Magisk挂载机制的Android HTTPS流量监控完整技术方案 【免费下载链接】httpcanary-magisk 项目地址: https://gitcode.com/gh_mirrors/ht/httpcanary-magisk 现代Android系统安全架构的演进为应用开发者带来了新的技术挑战,特别是在HTTPS流量监控领域。…...
高途CFO沈楠辞职 高级副总裁罗斌晋升为首席运营官
雷递网 乐天 5月15日高途(NYSE: GOTU)日前宣布管理层调整。高途称,公司CFO沈楠由于个人原因已递交辞呈,2026年5月31日生效。沈楠辞职后三个月内继续担任公司顾问,以确保平稳过渡。高途战略主管徐步青将负责公司资本市场相关事宜,高…...
nv-context:开发者必备的上下文管理工具,提升开发效率与团队协作
1. 项目概述:一个为开发者量身定制的上下文管理工具 如果你是一名开发者,尤其是在处理大型项目、复杂配置或者需要频繁切换工作环境时,一定对“上下文”这个概念又爱又恨。爱的是,它能帮你隔离环境、管理配置,让项目井…...
别再手动写矩阵运算了!C++项目里用Eigen库的正确姿势(附性能对比)
别再手动写矩阵运算了!C项目里用Eigen库的正确姿势(附性能对比) 在计算机视觉、机器人控制或物理仿真领域,C开发者经常需要处理复杂的矩阵运算。我曾见过一个SLAM项目的前端代码,仅为了计算两个坐标系之间的变换矩阵&a…...
基于ChatGPT的智能网页数据抓取:原理、实践与成本优化
1. 项目概述:当ChatGPT遇上网页抓取最近在做一个数据驱动的项目,需要从几十个不同结构的网站上抓取产品信息,手动复制粘贴显然不现实,而传统的爬虫脚本又需要为每个网站单独写解析规则,费时费力。就在我头疼的时候&…...
【Java用法】jar包运行后显示 没有主清单属性
jar包运行后显示 没有主清单属性一、问题现象二、问题分析三、解决方案3.1 添加 spring-boot-maven-plugin 插件3.2 修改 spring-boot 父级依赖3.3 配置IDEA开发工具一、问题现象 jar包运行后显示 没有主清单属性!如下图所示: 前些天发现了一个特别好用…...
从静态分析到代码自愈:构建自动化自我审查工具提升代码质量
1. 项目概述:从“自我审视”到“代码自愈”的工程实践在软件开发的日常中,我们常常会陷入一种“当局者迷”的困境:自己写的代码,怎么看都觉得逻辑清晰、结构完美,但一旦交给同事评审或者上线运行,各种潜在的…...
