• 關於 Milvus
  • 開始使用
  • 概念
  • 使用者指南
  • 資料匯入
  • AI 工具
  • 管理指南
  • 工具
  • 整合功能
  • 教學指南
  • 常見問題
  • API Reference

將 Pulsar 用作 Milvus 訊息佇列

Apache Pulsar 是 Milvus 所支援的訊息佇列(WAL)後端之一。 在 Milvus 3.x 中,Woodpecker是預設的訊息佇列;但對於偏好 Pulsar 的使用者,Pulsar 仍獲得完整支援。Pulsar 主要用於 Milvus Distributed(叢集)環境;獨立部署則通常使用內嵌的 Woodpecker 或RocksMQ

版本相容性

Milvus 版本支援的 Pulsar 版本預設
2.5.x 及後續版本Pulsar v3(建議)或 Pulsar v2Pulsar v3(透過 Helm / Milvus Operator)
2.4.x 及更早版本Pulsar v2Pulsar v2

自 Milvus 2.5 起,Milvus Helm 圖表和 Milvus Operator 預設會部署Pulsar v3;Pulsar v2 仍保持相容性。請參閱《將 Pulsar 從 v2 升級至 v3》及《繼續使用 Pulsar v2》。

使用 Helm 部署搭載 Pulsar 的 Milvus 叢集

安裝

若要部署使用內建 Pulsar(而非 Woodpecker)的 Milvus 叢集,請安裝已啟用「串流節點」(Streaming Node)功能的 Helm 圖表:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v3.0.0 \
  --set pulsarv3.enabled=true \
  --set woodpecker.enabled=false \
  --set streaming.enabled=true \
  --set indexNode.enabled=false

在 Kubernetes v1.25 及後續版本中,若因內建的 Pulsar 子圖表而遇到 PodDisruptionBudget API 問題,請停用 Pulsar 的 PDB 政策:

helm install my-release zilliztech/milvus \
  --set pulsar.bookkeeper.pdb.usePolicy=false \
  --set pulsar.broker.pdb.usePolicy=false \
  --set pulsar.proxy.pdb.usePolicy=false \
  --set pulsar.zookeeper.pdb.usePolicy=false

設定

若要將 Milvus 連接到外部Pulsar 服務,請在 `values.yaml ` 覆寫設定中停用內建的 Pulsar,並啟用 `externalPulsar `:

pulsarv3:
  enabled: false
externalPulsar:
  enabled: true
  host: <your_pulsar_host>
  port: 6650
  maxMessageSize: "5242880"  # 5 MB, maximum size of each message
  tenant: public
  namespace: default
helm install my-release zilliztech/milvus -f values.yaml

解除安裝

helm uninstall my-release

若您曾使用內建的 Pulsar 且欲移除其持久化資料,請刪除 Pulsar PVC(名稱:my-release-pulsarv3-* ):

kubectl get pvc | grep my-release-pulsarv3
kubectl delete pvc <pulsar-pvc-name> ...

使用 Milvus Operator 部署包含 Pulsar 的 Milvus 叢集

透過 Milvus Operator,請在spec.dependencies.pulsar 下配置 Pulsar(僅支援 Milvus 叢集)。pulsar 支援externalinCluster

外部 Pulsar

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  dependencies:
    pulsar:
      external: true
      endpoints:
      - 192.168.1.1:6650
  components: {}
  config: {}

內部(叢集內)Pulsar

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  dependencies:
    pulsar:
      inCluster:
        values:
          components:
            autorecovery: false
          zookeeper:
            replicaCount: 1
          bookkeeper:
            replicaCount: 1
          broker:
            replicaCount: 1
            configData:
              autoSkipNonRecoverableData: "true"
              managedLedgerDefaultEnsembleSize: "1"
              managedLedgerDefaultWriteQuorum: "1"
              managedLedgerDefaultAckQuorum: "1"
          proxy:
            replicaCount: 1
  components: {}
  config: {}

套用設定(假設檔案為milvuscluster.yaml ):

kubectl apply -f milvuscluster.yaml

解除安裝

kubectl delete milvus my-release

注意事項

  • 從 2.5.x 升級至 2.6.x: 訊息佇列限制:升級至 Milvus v3.0.0 時,您必須維持當前的訊息佇列選擇。升級過程中不支援在不同的訊息佇列系統之間切換。未來版本將支援變更訊息佇列系統。 若您正在運行 Pulsar 且希望繼續使用,請勿在升級過程中變更訊息佇列。
  • Pulsar v2 → v3:請參閱《將 Pulsar 從 v2 升級至 v3》;若要繼續使用 v2,請參閱《繼續使用 Pulsar v2》。

下一步