Configurar el almacenamiento de mensajes con Docker Compose o Helm
Milvus utiliza Pulsar o Kafka para gestionar los registros de cambios recientes, generar registros de flujo y proporcionar suscripciones a registros. Pulsar es el sistema de almacenamiento de mensajes por defecto. Este tema presenta cómo configurar el almacenamiento de mensajes con Docker Compose o Helm.
Puede configurar Pulsar con Docker Compose o en K8s y configurar Kafka en K8s.
Configurar Pulsar con Docker Compose
1. Configurar Pulsar
Para configurar Pulsar con Docker Compose, proporcione sus valores para la sección pulsar
en el archivo milvus.yaml
en la ruta milvus/configs.
pulsar:
address: localhost # Address of pulsar
port: 6650 # Port of pulsar
maxMessageSize: 5242880 # 5 * 1024 * 1024 Bytes, Maximum size of each message in pulsar.
Consulte las configuraciones relacionadas con Pulsar para obtener más información.
2. Ejecute Milvus
Ejecute el siguiente comando para iniciar Milvus que utiliza las configuraciones de Pulsar.
docker compose up
Configurar Pulsar con Helm
Para clusters Milvus en K8s, puede configurar Pulsar en el mismo comando que inicia Milvus. Alternativamente, puede configurar Pulsar utilizando el archivo values.yml
en la ruta /charts/milvus en el repositorio milvus-helm antes de iniciar Milvus.
Para más detalles sobre cómo configurar Milvus utilizando Helm, consulte Configurar Milvus con Helm Charts. Para más detalles sobre los elementos de configuración relacionados con Pulsar, consulte Configuraciones relacionadas con Pulsar. |
Usando el archivo YAML
- Configure la sección
externalConfigFiles
en el archivovalues.yaml
.
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
- Después de configurar las secciones anteriores y guardar el archivo
values.yaml
, ejecute el siguiente comando para instalar Milvus que utiliza las configuraciones de Pulsar.
helm install <your_release_name> milvus/milvus -f values.yaml
Configurar Kafka con Helm
Para clusters Milvus en K8s, puede configurar Kafka en el mismo comando que inicia Milvus. Alternativamente, puede configurar Kafka utilizando el archivo values.yml
en la ruta /charts/milvus en el repositorio milvus-helm antes de iniciar Milvus.
Para más detalles sobre cómo configurar Milvus utilizando Helm, consulte Configurar Milvus con Helm Charts. Para más detalles sobre los elementos de configuración relacionados con Pulsar, consulte Configuraciones relacionadas con Pulsar.
Uso del archivo YAML
- Configure la sección
externalConfigFiles
en el archivovalues.yaml
si desea utilizar Kafka como sistema de almacenamiento de mensajes.
extraConfigFiles:
user.yaml: |+
kafka:
brokerList:
- <your_kafka_address>:<your_kafka_port>
saslUsername:
saslPassword:
saslMechanisms: PLAIN
securityProtocol: SASL_SSL
- Después de configurar las secciones anteriores y guardar el archivo
values.yaml
, ejecute el siguiente comando para instalar Milvus que utiliza las configuraciones de Kafka.
helm install <your_release_name> milvus/milvus -f values.yaml
Configurar RocksMQ con Helm
Milvus standalone utiliza RocksMQ como almacenamiento de mensajes por defecto. Para pasos detallados sobre cómo configurar Milvus con Helm, consulte Configurar Milvus con Helm Charts. Para detalles sobre elementos de configuración relacionados con RocksMQ, refiérase a Configuraciones relacionadas con RocksMQ.
Si inicia Milvus con RocksMQ y desea cambiar su configuración, puede ejecutar
helm upgrade -f
con la configuración cambiada en el siguiente archivo YAML.Si ha instalado Milvus standalone usando Helm con un almacén de mensajes distinto a RocksMQ y quiere cambiarlo de nuevo a RocksMQ, ejecute
helm upgrade -f
con el siguiente archivo YAML después de haber vaciado todas las colecciones y parado Milvus.
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]
No se recomienda cambiar el almacén de mensajes. Si quiere hacerlo, detenga todas las operaciones DDL, luego llame a la API FlushAll para vaciar todas las colecciones, y finalmente detenga Milvus antes de cambiar el almacén de mensajes.
Configurar NATS con Helm
NATS es un almacén de mensajes experimental alternativo a RocksMQ. Para pasos detallados sobre cómo configurar Milvus con Helm, consulte Configurar Milvus con Helm Charts. Para más detalles sobre los elementos de configuración relacionados con RocksMQ, consulte Configuraciones relacionadas con NATS.
Si inicia Milvus con NATS y desea cambiar su configuración, puede ejecutar
helm upgrade -f
con la configuración modificada en el siguiente archivo YAML.Si ha instalado Milvus standalone con un almacén de mensajes distinto de NATS y desea cambiarlo a NATS, ejecute
helm upgrade -f
con el siguiente archivo YAML después de haber vaciado todas las colecciones y detenido Milvus.
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:
¿Elegir entre RocksMQ y NATS?
RockMQ utiliza CGO para interactuar con RocksDB y gestiona la memoria por sí mismo, mientras que el NATS puro de Go incrustado en la instalación de Milvus delega su gestión de memoria al recolector de basura (GC) de Go.
En el escenario en el que el paquete de datos es inferior a 64 kb, RocksDB supera en términos de uso de memoria, uso de CPU y tiempo de respuesta. Por otro lado, si el paquete de datos es mayor de 64 kb, NATS sobresale en términos de tiempo de respuesta con suficiente memoria y una programación ideal del GC.
Actualmente, se aconseja utilizar NATS sólo para experimentos.
Próximos pasos
Aprenda a configurar otras dependencias de Milvus con Docker Compose o Helm: