milvus 中的 coord 字尾和 node 字尾有什麼區別? 相關文件說明在哪裡?

ponponon發表於2023-04-06

coord 是一個程式

node 也是一個程式

圖片.png

比如一個 datanode 要接受來自外部的寫入,寫入都需要經過 datacoord 轉發給 datanode 嗎?

相關文件:https://milvus.io/docs/four_layers.md


Q:milvus 的 coord 和 node 是什麼關係?

比如一個 datanode 要接受來自外部的寫入,寫入都需要經過 datacoord 轉發給 datanode 嗎?

A:在 Milvus 中,coord和node是指不同的元件。coord是協調節點,主要負責協調叢集中不同元件之間的通訊,例如indexcoord、datacoord和querycoord之間的協調。而node是資料節點,主要負責儲存和管理資料。

在 Milvus 中,資料寫入操作需要先透過datacoord進行轉發,然後由具體的datanode進行接收和處理。datacoord負責管理資料的劃分和分配,決定哪個datanode應該接收哪些資料,並且把寫入請求傳送給相應的datanode,最終實現資料的寫入。因此,在進行資料寫入時,資料需要經過datacoord的轉發,然後由相應的datanode進行接收和處理。

kafka或者pulsar在 Milvus 中主要作為訊息佇列,用於資料的非同步寫入。在資料寫入時,Milvus首先將寫入請求傳送給pulsar或者kafka,然後再透過datacoord轉發給相應的datanode進行接收和處理。透過這種方式,Milvus實現了資料的非同步寫入,提高了資料寫入的效率和吞吐量。

Q:milvus 的 coord 是單點的嗎?

比如對於 datacoord 和 datanode,datanode 可以有多個,datacoord也可以有多個嗎?

A:在 Milvus 中,每個 Coord 節點都是單點的,也就是每個 Coord 只有一個例項在執行。但是,每個 Coord 型別的節點都可以有多個例項,以提高系統的可用性和效能。

在 Milvus 2.x 中,可以有多個 DataCoord 例項和多個 IndexCoord 例項來提高系統的可用性和效能。多個 DataCoord 例項共同負責寫入資料,並透過互相之間的協調來保證資料一致性。多個 IndexCoord 例項共同負責管理索引,並透過互相之間的協調來保證索引一致性。

對於 QueryCoord,它是作為查詢的入口節點,每個查詢請求都需要經過 QueryCoord 進行路由和排程。目前 Milvus 中只支援一個 QueryCoord 例項。


milvus2.x 的 Coord 支援 HA 嗎?怎麼實現的?用的什麼方案?

貌似是主備?為什麼要用主備而不是副本?這套主備是怎麼工作的?master 工作,master 掛了,slave 頂上去嗎?master 工作的時候,slave 只能閒置看戲?如果 master 掛了,slave 要多久才能頂上去? (意思就是如何實現 slave 發現 master 掛了的,並且提升自己?)要多久?一納秒?一毫秒?一秒鐘?或者一分鐘 slave 才能頂上去嗎?

相關文章