急急急!Kafka Topic 資源許可權緊張怎麼辦?

Zilliz發表於2023-04-27

我們都知道 Kafka 的 topic 資源比較“貴”,所以一般會給專案 topic 許可權限制,按需申請。Milvus 會在建新表時自動申請 kafka topic 資源,這時候自動申請不到怎麼辦?手動配置 topic 要符合什麼規範才能被 Milvus 使用?

透過本文的小實踐,大家可以瞭解 Milvus 如何為 Kafka Topic 命名、使用 Topic 的機制,以及使用者在 Kafka Topic 資源許可權緊張情況下,對 Kafka Topic 的預設及使用。希望能給大家啟發的同時增加對 Milvus 訊息系統的瞭解。

Topic 在 Milvus 中的作用

Kafka 是一個分散式流處理系統,流處理系統使它可以像訊息佇列一樣 publish 或者 subscribe 訊息。Topic 用於建立 Producer 和 Consumer 之間的訂閱關係。生產者傳送訊息到指定的 Topic,訊息者從這個 Topic 下面消費訊息(Kafka 把訊息存在 topic 中,每一條訊息包含 key、value、timestamp)。

在Milvus 2.x 中,流式訊息經過 Proxy 生產到 Kafka topic 中,再由 Data Node 節點消費到物件儲存中。

參考連結:https://milvus.io/docs/data_processing.md

Milvus Kafka Topic 命名規則

命名規則

  • 配置檔案中的 chanNamePrefix:
  # Channel name generation rule: ${namePrefix}-${ChannelIdx}
common:
  chanNamePrefix:
    cluster: "by-dev"
    rootCoordDml: "rootcoord-dml"
    rootCoordDelta: "rootcoord-delta"
    dataCoordTimeTick: "datacoord-timetick-channel"
  • Milvus 會建立三種型別的 Topic:

Datacoord-timetick-channel——chanNamePrefix.cluster-chanNamePrefix.dataCoordTimeTick

by-dev-datacoord-timetick-channel

Dml channel--chanNamePrefix.cluster-chanNamePrefix.rootCoordDml

1 by-dev-rootcoord-dml_0
2 ...
3 by-dev-rootcoord-dml_255

Delta channel--chanNamePrefix.cluster-chanNamePrefix.rootCoordDelta

1 by-dev-rootcoord-delta_0
2 ...
3 by-dev-rootcoord-delta_255

機制

  1. 在啟動 Milvus 叢集時,會建立唯一的 dataCoordTimeTick:by-dev-datacoord-timetick-channel
  1. 當建立一個新的 Collection 時,系統會建立對應的 rootCoordDml 和 rootCoordDelta 。由於一個表預設有 2 個 shard number ,共建立 22 共 4 個 topic(若shard number 為 4 ,則建立 42 個 topic,以此類推),名稱如下:
1 by-dev-rootcoord-dml_0
2 by-dev-rootcoord-dml_1
3 by-dev-rootcoord-delta_0
4 by-dev-rootcoord-delta_1

預設 rootCoord.dmlChannelNum 是 256(需要注意的是在新版本中我們調低了預設值),意思是最多建立 dml-channel topic 256 個,如果 collection 數量所需 topic 超過該值,則會對 topic 進行復用。所以我們可以透過控制 rootCoord.dmlChannelNum 來控制 topic 的複用。

Milvus Kafka Topic 預設方案

在瞭解了 Milvus 對 Topic 的命名和複用規則之後,我們可以按規則預設 Kafka Topic。

  1. 根據命名規則預設對應的 rootCoordDml 和 rootCoordDelta 相關 Topic。
1 by-dev-rootcoord-dml_2
2 by-dev-rootcoord-dml_3
3 by-dev-rootcoord-delta_2
4 by-dev-rootcoord-delta_3
  1. 修改 rootCoord.dmlChannelNum 引數為4,控制 dml-channel topic 的使用數量。
  1. 在系統讀取到預設 topic 時直接使用,不再重新申請。

(本文作者張翔系 Zilliz 客戶工程師;曾傑系 Zilliz 主任工程師)

本文由mdnice多平臺釋出

相關文章