導航:首頁 > 源碼編譯 > 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源碼相關的資料

熱點內容
java網路編程實驗總結 瀏覽:82
linux下dns伺服器配置 瀏覽:704
我的命令是絕對的 瀏覽:929
助飛器app在哪裡下 瀏覽:61
無廣告win10解壓縮 瀏覽:473
台灣的伺服器怎麼選雲伺服器 瀏覽:810
群暉媒體伺服器平板上怎麼看 瀏覽:622
pdf文件怎麼轉換成jpg格式 瀏覽:720
程序員訓練時間 瀏覽:657
書簽主頁源碼帶後台 瀏覽:570
神舟顯卡驅動解壓有兩個文件夾 瀏覽:362
接受調度命令的過程中 瀏覽:803
銀行下一代app在哪裡 瀏覽:423
加密學習資料及答案 瀏覽:334
我來貸app在哪裡下載 瀏覽:953
羽化命令使用 瀏覽:360
php提權木馬源碼 瀏覽:656
趣充app實名認證在哪裡 瀏覽:419
java多線程習題 瀏覽:422
linuxpython27卸載 瀏覽:765