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

熱點內容
加密系列號 瀏覽:458
電冰箱換壓縮機要注意什麼 瀏覽:795
平板的訪客模式如何加密 瀏覽:139
釘釘加密有用嗎 瀏覽:112
加密u盤好還是不加密的 瀏覽:349
微觀經濟學平狄克第八版pdf 瀏覽:404
linux查看實時流量 瀏覽:557
如何存檔到伺服器 瀏覽:548
flash編程書籍推薦 瀏覽:835
php獲得數組鍵值 瀏覽:402
香港雲伺服器操作 瀏覽:303
wpe最新源碼 瀏覽:857
自己購買雲主伺服器推薦 瀏覽:422
個人所得稅java 瀏覽:761
多餘的伺服器滑道還有什麼用 瀏覽:192
pdf劈開合並 瀏覽:29
不能修改的pdf 瀏覽:752
同城公眾源碼 瀏覽:489
一個伺服器2個埠怎麼映射 瀏覽:298
java字元串ascii碼 瀏覽:79