Milvus核心設計(2)-----TSO機制詳解

目錄

背景

動機

Timestamp種類及使用場景

Guarantee timestamp

Service timestamp

Graceful time

Timestamp同步機制

主流程

時間戳同步流程


背景

Milvus 在設計上突出了分布式的設計,雖然Chroma 也支持分布式的store 與 query。但是相對Milvus來說,不算非常突出。正因為Milvus 在設計上對分布式store 與 query 非常重視,所以引入了TSO機制。也就是timestamp oracle mechanism。我會以比較形象的方式講述下這部分機理,并結合Milvus的配置及工作生活中的場景,技術上的設計美感和項目中的管理藝術,最終你會發現大道殊途同歸。‘夢里尋他千百度,驀然回首,那人卻在燈火闌珊處‘。

TSO設計動機

Milvus 在設計時為什么要引入 TSO機制?實際上其動機和使用場景掛鉤,當你使用 stand-alone 模式啟動Milvus時,TSO的作用或許你看不出來,當然在不同 coordinate 與 node 之間這種時間同步機制仍然存在,因為從設計上的角度上來說,如果支持了分布式,那么自然也涵蓋了stand-alone的單機模式。只是單機模式可以延用分布式設計的特性。

想象一個場景:

那么最正確的結果應該是:

  • user2在 t2 時刻 query c0 collection, 結果是 empty result。

  • user2在 t7 時刻 query c0 collection, 結果是 A1。

  • user2在 t12 時刻 query c0 collection, 結果是 A1與A2。

  • user2在 t71 時刻 query c0 collection, 結果是 A1。

假設沒有統一的時間戳作為度量,你沒法將不同cilent 的操作,這里包括了 DDL 與 DML,進行統一輸出。DDL與 DML 前面都介紹過了,這里就一筆帶過。但是客戶端子的時間系統有可能基準參差不齊,這例你有可能說使用對時服務可以解決這個問題。確實,使用對時服務可以解決多client時間同步的問題,但是因為timestamp對分布式系統太重要,你不能總想著依靠一個對時服務來解決所有的問題。萬一兩個對時服務基準不統一,或是一個client根本連不上對時服務怎么辦?真正robest的db 不會將自己的 kernel 依附在一個自己認為是核心且必要,但外界可有可無,甚至不準的service 之上。

先看下Milvus 中幾種timestamp 的定義與使用場景

Timestamp種類及使用場景

Guarantee timestamp

這種 timestamp 顧名思義,就是保證性質的,就相當于設置之后Milvus保證在這個之前的所有DDL 與DML都執行完成。

需要注意的是,這個 guarantee 時間戳不需要你來設置,因為它對于Milvus 來說太核心了,萬一你設置一個不太對的值,整個 system 的 query 結果可能不符合預期或是直接導致Milvus sys崩潰。 

舉個例子:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43831.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43831.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43831.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows 32 匯編筆記(一):基礎知識

一、80x86 處理器的工作模式 1.1 實模式 實模式概述 實模式(Real Mode)是80x86處理器最早支持的工作模式,也是最基礎的工作模式。實模式主要用于早期的MS-DOS操作系統和其他簡單的操作環境。在實模式下,處理器能夠直接訪問1MB的…

Python 神器:wxauto 庫——解鎖微信自動化的無限可能

📝個人主頁🌹:誓則盟約 ?收錄專欄?:機器學習 🤡往期回顧🤡:“探索機器學習的多面世界:從理論到應用與未來展望” 🌹🌹期待您的關注 🌹&#x1f…

mysql高并發設計

mysql高并發設計 一、部署方案 https://blog.csdn.net/weixin_37519752/article/details/138728036 方案1:雙主 1、優點 寫入擴展性:兩個節點都可以處理寫入操作,提高了寫入操作的擴展性。 高可用性:在任一節點故障時&#xff…

數據結構復習計劃之復雜度分析(時間、空間)

第二節:算法 時間復雜度和空間復雜度 算法(Algorithm):是對特定問題求解方法(步驟)的一種描述,是指令的有限序列,其中每一條指令表示一個或多個操作。 算法可以有三種表示形式: 偽代碼 自然語言 流程圖 算法的五…

貓不吃東西還嘔吐是什么原因?可以預防貓咪嘔吐的主食凍干推薦

貓咪突然食欲不振,還出現了嘔吐的癥狀,這究竟是為什么呢?結合我多年養貓的經驗,讓我們一起分析一下可能的原因。 一、 貓不吃東西還嘔吐是什么原因 (1)首先、排除貓瘟 如果你的貓咪一直家養,…

【Android】基于 LocationManager 原生實現定位打卡

目錄 前言一、實現效果二、定位原理三、具體實現1. 獲取權限2. 頁面繪制3. 獲取經緯度4. 方法調用5. 坐標轉換6. 距離計算7. 完整代碼 前言 最近公司有個新需求,想要用定位進行考勤打卡,在距離打卡地一定范圍內才可以進行打卡。本文將借鑒 RxTool 的 Rx…

php快速入門

前言 php是一門腳本語言,可以訪問服務器,對數據庫增刪查改(后臺/后端語言) 后臺語言:php,java,c,c,python等等 注意:php是操作服務器,不能直接在…

QUdpSocket 的bind函數詳解

QUdpSocket 是 Qt 框架中用于處理 UDP 網絡通信的類。bind 函數是此類中的一個重要方法,它用于將 QUdpSocket 對象綁定到一個特定的端口上,以便在該端口上接收 UDP 數據包。 函數原型 在 Qt 中,bind 函數的原型通常如下所示: b…

微軟開源項目GraphRAG——基于知識圖譜的RAG簡介

前言 在大型語言模型(LLM)的前沿研究中,一個核心挑戰與機遇并存的領域是擴展它們的能力,以解決超出其訓練數據范疇的問題。這不僅要求模型在面對全新數據時仍能保持卓越表現,還意味著開辟了全新的數據分析可能性&…

JVM 堆內存分配過程

設置堆內存大小和 OOM Java 堆用于存儲 Java 對象實例,那么堆的大小在 JVM 啟動的時候就確定了,我們可以通過 -Xmx 和 -Xms 來設定 -Xms 用來表示堆的起始內存,等價于 -XX:InitialHeapSize-Xmx 用來表示堆的最大內存,等價于 -XX…

Hadoop-15-Hive 元數據管理與存儲 Metadata 內嵌模式 本地模式 遠程模式 集群規劃配置 啟動服務 3節點云服務器實測

章節內容 上一節我們完成了: Hive中數據導出:HDFSHQL操作上傳內容至Hive、增刪改查等操作 背景介紹 這里是三臺公網云服務器,每臺 2C4G,搭建一個Hadoop的學習環境,供我學習。 之前已經在 VM 虛擬機上搭建過一次&am…

簡單的基追蹤一維信號降噪方法(MATLAB 2018)

基追蹤法是基于冗余過完備字典下的一種信號稀疏表示方法。該方法具有可提高信號的稀疏性、實現閾值降噪和提高時頻分辨率等優點。基追蹤法采用表示系數的范數作為信號來度量稀疏性,通過最小化l型范數將信號稀疏表示問題定義為一類有約束的極值問題,進而轉…

c++ primer plus 第15章友,異常和其他 15.3.11 有關異常的注意事項

c primer plus 第15章友,異常和其他 15.3.11 有關異常的注意事項 15.3.11 有關異常的注意事項 文章目錄 c primer plus 第15章友,異常和其他 15.3.11 有關異常的注意事項15.3.11 有關異常的注意事項 15.3.11 有關異常的注意事項 從前面關于如何使用異常…

vue實現表單輸入框數字類型校驗功能

vue實現表單輸入框數字類型校驗功能 1. 樣式代碼 <el-form-item label"訂單總價"><el-input size"small" v-model"form.totalPrice" placeholder"請輸入訂單總價 正整數或者2位數小數" input"check(form.totalPric…

SpringSecurity中文文檔(Servlet Authorize HttpServletRequests)

Authorize HttpServletRequests SpringSecurity 允許您在請求級別對授權進行建模。例如&#xff0c;對于 Spring Security&#xff0c;可以說/admin 下的所有頁面都需要一個權限&#xff0c;而其他所有頁面只需要身份驗證。 默認情況下&#xff0c;SpringSecurity 要求對每個…

Umi.js 項目中使用 Web Worker

1.配置 Umi.js 在 Umi.js 中&#xff0c;需要通過配置來擴展 Webpack 的功能。在項目根目錄下修改 config/config.ts 文件&#xff1a; export default defineConfig({chainWebpack(config) {config.module.rule(worker).test(/\.worker\.ts$/).use(worker-loader).loader(wo…

C語言之指針的奧秘(二)

一、數組名的理解 int arr[10]{1,2,3,4,5,6,7,8,9,10}; int *p&arr[0]; 這里使用 &arr[0] 的?式拿到了數組第?個元素的地址&#xff0c;但是其實數組名本來就是地址&#xff0c;而且是數組首元素的地址。如下&#xff1a; 我們發現數組名和數組?元素的地址打印出…

重要文件放u盤還是硬盤?硬盤和u盤哪個適合長期存儲

在數字時代&#xff0c;我們每天都會處理大量的文件。其中&#xff0c;不乏一些對我們而言至關重要的文件&#xff0c;如家庭照片、工作文檔、財務記錄等。面對這些重要文件的存儲問題&#xff0c;我們通常會面臨&#xff1a;“重要文件放U盤還是硬盤”、“硬盤和U盤哪個適合長…

Vue2打包部署后動態修改后端接口地址的解決方法

文章目錄 前言一、背景二、解決方法1.在public文件夾下創建config文件夾&#xff0c;并創建config.js文件2.編寫config.js內容3.在index.html中加載config.js4.在封裝axios工具類的js中修改配置 總結 前言 本篇文章將介紹使用Vue2開發前后端分離項目時&#xff0c;前端打包部署…

系統架構師考點--系統安全

大家好。今天我來總結一下系統安全相關的考點&#xff0c;這類考點每年都會考到&#xff0c;一般是在上午場客觀題&#xff0c;占2-4分。 一、信息安全基礎知識 信息安全包括5個基本要素&#xff1a;機密性、完整性、可用性、可控性與可審查性 (1)機密性&#xff1a;確保信息…