🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI
主頁
  • 管理指南
    • 管理相依性
  • Home
  • Docs
  • 管理指南

  • 管理相依性

  • 使用 Docker 或 Helm

  • 訊息儲存

使用 Docker Compose 或 Helm 設定訊息儲存空間

Milvus 使用 Pulsar 或 Kafka 來管理最近變更的日誌、輸出串流日誌,以及提供日誌訂閱。Pulsar 是預設的訊息儲存系統。本主題介紹如何使用 Docker Compose 或 Helm 設定訊息儲存。

您可以使用Docker Compose或在 K8s 上設定 Pulsar,並在 K8s 上設定 Kafka。

使用 Docker Compose 設定 Pulsar

1.設定 Pulsar

要使用 Docker Compose 設定 Pulsar,請在 milvus/configs 路徑上的milvus.yaml 檔案中提供pulsar 部分的值。

pulsar:
  address: localhost # Address of pulsar
  port: 6650 # Port of pulsar
  maxMessageSize: 5242880 # 5 * 1024 * 1024 Bytes, Maximum size of each message in pulsar.

更多資訊請參閱Pulsar 相關設定

2.執行 Milvus

執行下列指令啟動使用 Pulsar 設定的 Milvus。

docker compose up
配置只在 Milvus 啟動後生效。更多資訊請參閱啟動 Milvus

使用 Helm 設定 Pulsar

對於 K8s 上的 Milvus 集群,你可以在啟動 Milvus 的相同指令中設定 Pulsar。另外,你也可以在啟動 Milvus 之前,使用 /charts/milvus 路徑下milvus-helm套件庫中的values.yml 檔來設定 Pulsar。

關於如何使用 Helm設定 Milvus 的詳細資訊,請參考 使用Helm Charts 設定 Milvus。有關 Pulsar 相關組態項目的詳細資訊,請參閱Pulsar 相關組態

使用 YAML 檔案

  1. 配置values.yaml 檔案中的externalConfigFiles 部分。
extraConfigFiles:
  user.yaml: |+
    pulsar:
      address: localhost # Address of pulsar
      port: 6650 # Port of Pulsar
      webport: 80 # Web port of pulsar, if you connect direcly without proxy, should use 8080
      maxMessageSize: 5242880 # 5 * 1024 * 1024 Bytes, Maximum size of each message in pulsar.
      tenant: public
      namespace: default    
  1. 配置前面的部分並儲存values.yaml 檔案後,執行下列指令安裝使用 Pulsar 配置的 Milvus。
helm install <your_release_name> milvus/milvus -f values.yaml

使用 Helm 配置 Kafka

對於 K8s 上的 Milvus 集群,你可以在啟動 Milvus 的同一個命令中配置 Kafka。另外,你也可以在啟動 Milvus 之前,使用 /charts/milvus 路徑上milvus-helm套件庫中的values.yml 檔來設定 Kafka。

有關如何使用 Helm設定 Milvus 的詳細資訊,請參考Configure Milvus with Helm Charts。有關 Pulsar 相關設定項的詳細資訊,請參閱Pulsar 相關設定

使用 YAML 檔案

  1. 如果要使用 Kafka 作為訊息儲存系統,請設定values.yaml 檔案中的externalConfigFiles 部分。
extraConfigFiles:
  user.yaml: |+
    kafka:
      brokerList:
        -  <your_kafka_address>:<your_kafka_port>
      saslUsername:
      saslPassword:
      saslMechanisms: PLAIN
      securityProtocol: SASL_SSL    
  1. 配置完前面的部分並儲存values.yaml 檔案後,執行以下指令來安裝使用 Kafka 配置的 Milvus。
helm install <your_release_name> milvus/milvus -f values.yaml

使用 Helm 配置 RocksMQ

Milvus standalone 使用 RocksMQ 作為預設的訊息儲存空間。有關如何使用 Helm 配置 Milvus 的詳細步驟,請參考Configure Milvus with Helm Charts。關於 RocksMQ 相關配置項的詳細步驟,請參考RocksMQ 相關配置

  • 如果你用 RocksMQ 啟動 Milvus 並想要改變它的設定,你可以用以下 YAML 檔案中改變的設定執行helm upgrade -f

  • 如果你已經使用 Helm 獨立安裝了 Milvus,並使用了 RocksMQ 以外的訊息存放區,想要將它改回 RocksMQ,請在刷新所有集合並停止 Milvus 後,使用以下 YAML 檔案執行helm upgrade -f

extraConfigFiles:
  user.yaml: |+
    rocksmq:
      # The path where the message is stored in rocksmq
      # please adjust in embedded Milvus: /tmp/milvus/rdb_data
      path: /var/lib/milvus/rdb_data
      lrucacheratio: 0.06 # rocksdb cache memory ratio
      rocksmqPageSize: 67108864 # 64 MB, 64 * 1024 * 1024 bytes, The size of each page of messages in rocksmq
      retentionTimeInMinutes: 4320 # 3 days, 3 * 24 * 60 minutes, The retention time of the message in rocksmq.
      retentionSizeInMB: 8192 # 8 GB, 8 * 1024 MB, The retention size of the message in rocksmq.
      compactionInterval: 86400 # 1 day, trigger rocksdb compaction every day to remove deleted data
      # compaction compression type, only support use 0,7.
      # 0 means not compress, 7 will use zstd
      # len of types means num of rocksdb level.
      compressionTypes: [0, 0, 7, 7, 7]    

不建議改變訊息存放區。如果您想這麼做,請先停止所有的 DDL 作業,然後再呼叫 FlushAll API 來沖洗所有的集合,最後在您實際變更訊息存放區之前停止 Milvus。

使用 Helm 配置 NATS

NATS 是一個實驗性的訊息存放區,可以替代 RocksMQ。關於如何使用 Helm 配置 Milvus 的詳細步驟,請參考Configure Milvus with Helm Charts。關於 RocksMQ 相關設定項的詳細步驟,請參考NATS 相關設定

  • 如果你用 NATS 啟動 Milvus 並想要改變它的設定,你可以用以下 YAML 檔案中改變的設定執行helm upgrade -f

  • 如果您用 NATS 以外的消息存储安装了 Milvus standalone,并想将其更改为 NATS,请在刷新所有集合并停止 Milvus 后,使用下面的 YAML 文件运行helm upgrade -f

extraConfigFiles:
  user.yaml: |+
    mq:
      type: natsmq
    natsmq:
      # server side configuration for natsmq.
      server: 
        # 4222 by default, Port for nats server listening.
        port: 4222 
        # /var/lib/milvus/nats by default, directory to use for JetStream storage of nats.
        storeDir: /var/lib/milvus/nats 
        # (B) 16GB by default, Maximum size of the 'file' storage.
        maxFileStore: 17179869184 
        # (B) 8MB by default, Maximum number of bytes in a message payload.
        maxPayload: 8388608 
        # (B) 64MB by default, Maximum number of bytes buffered for a connection applies to client connections.
        maxPending: 67108864 
        # (√ms) 4s by default, waiting for initialization of natsmq finished.
        initializeTimeout: 4000 
        monitor:
          # false by default, If true enable debug log messages.
          debug: false 
          # true by default, If set to false, log without timestamps.
          logTime: true 
          # no log file by default, Log file path relative to.. .
          logFile: 
          # (B) 0, unlimited by default, Size in bytes after the log file rolls over to a new one.
          logSizeLimit: 0 
        retention:
          # (min) 3 days by default, Maximum age of any message in the P-channel.
          maxAge: 4320 
          # (B) None by default, How many bytes the single P-channel may contain. Removing oldest messages if the P-channel exceeds this size.
          maxBytes:
          # None by default, How many message the single P-channel may contain. Removing oldest messages if the P-channel exceeds this limit.    
          maxMsgs: 

在 RocksMQ 和 NATS 之間做選擇?

RockMQ 使用 CGO 與 RocksDB 互動,並自行管理記憶體,而 Milvus 安裝中內嵌的純 Go NATS 則將記憶體管理委託給 Go 的垃圾回收器 (GC)。

在資料封包小於 64 kb 的情況下,RocksDB 在記憶體使用量、CPU 使用量和回應時間上都比較優勝。另一方面,如果資料封包大於 64 kb,NATS 在有足夠記憶體和理想 GC 排程的情況下,在回應時間上表現優異。

目前,建議您僅在實驗中使用 NATS。

下一步

學習如何使用 Docker Compose 或 Helm 配置其他 Milvus 依賴項目:

免費嘗試托管的 Milvus

Zilliz Cloud 無縫接入,由 Milvus 提供動力,速度提升 10 倍。

開始使用
反饋

這個頁面有幫助嗎?