導航:首頁 > 源碼編譯 > milvus源碼

milvus源碼

發布時間:2025-04-28 16:24:53

1. CreateCollection API執行流程_milvus源碼解析

在分析milvus源碼中的CreateCollection API執行流程時,我們需要詳細拆解從客戶端請求到數據最終存儲在etcd的過程。在milvus版本v2.3.2中,CreateCollection API的執行流程大致分為以下幾個關鍵步驟:

首先,客戶端SDK接收用戶創建集合(collection)的請求,並將此請求封裝為createCollectionTask,隨後將其放入ddQueue隊列。

隨後,此任務在proxy內依次執行PreExecute、Execute和PostExecute三個方法。PreExecute階段進行參數校驗等預處理工作,Execute階段則是真正執行邏輯,而PostExecute階段完成執行後的清理工作,通常不做任何操作並返回nil。

在Execute方法中,proxy調用rootCoord的CreateCollection介面,此介面進一步封裝請求為rootcoord里的createCollectionTask。

接下來,rootCoord的CreateCollection介面執行CreateCollectionTask的Prepare、Execute和NotifyDone方法。核心操作在Execute階段,其中涉及到多個步驟,包括expireCacheStep、addCollectionMetaStep、watchChannelsStep、changeCollectionStateStep等。在這些步驟中,重點是addCollectionMetaStep,負責etcd元數據的操作。

在addCollectionMetaStep的Execute方法中,s.core.meta.AddCollection方法被調用。此方法在etcd中創建了多個與集合相關的key-value對,這些key值按照特定規則構建,反映了集合、分區和欄位之間的關系。

具體而言,集合信息通過key `root-coord/database/collection-info/1/445652621026918798` 存儲在etcd中,value為protobuf序列化的etcdpb.CollectionInfo,這表示集合由ID、DbId、schema等組成,schema中不記錄欄位、分區ID或名稱等信息。etcd以二進制形式存儲這些數據。

分區信息通過類似 `root-coord/partitions/445653146967736660/445653146967736661` 的路徑存儲,value為etcdpb.PartitionInfo,同樣採用protobuf序列化後存儲在etcd中。此信息包括partitionID、partitionName、collectionId等。

欄位信息通過 `root-coord/fields/445653146967736660/100` 的路徑存儲,value為schemapb.FieldSchema,包含欄位ID、名稱、描述、數據類型等信息。

在執行完畢後,將所有key-value對批量寫入etcd,最終完成集合的創建。

總結而言,CreateCollection API的執行流程涉及多個組件協作,從客戶端請求開始,經過proxy和rootCoord的處理,最終在etcd中存儲集合、分區和欄位的元數據,實現了集合的創建。整個流程中,etcd作為關鍵的數據存儲層,提供了持久化和高可用性保障。

閱讀全文

與milvus源碼相關的資料

熱點內容
易語言rc4演算法 瀏覽:552
源碼項目網 瀏覽:817
批量加密發送工資條 瀏覽:472
php抓取遠程圖片到本地 瀏覽:617
社保人證app在哪裡下載 瀏覽:133
vf表單編程 瀏覽:377
程序員最怕的十個詞 瀏覽:167
天津雲伺服器租用物理機 瀏覽:506
揉耳朵解壓入眠 瀏覽:953
python求列表最大的元素 瀏覽:552
dos命令列出所有文件夾 瀏覽:816
pdf注釋導出 瀏覽:636
androidpng按鈕 瀏覽:814
在哪裡app查汽車違章 瀏覽:551
1000多的編程筆記本電腦推薦 瀏覽:954
景德鎮雲伺服器大概費用 瀏覽:362
程序員按公司要求開發軟體 瀏覽:593
鏈接加密跳轉 瀏覽:253
android設置dialog寬度 瀏覽:965
程序員能學鋼琴嗎 瀏覽:907