تكوين تخزين الرسائل باستخدام Docker Compose أو Helm
يستخدم Milvus نظام Pulsar أو Kafka لإدارة سجلات التغييرات الأخيرة، وإخراج سجلات الدفق، وتوفير اشتراكات السجلات. Pulsar هو نظام تخزين الرسائل الافتراضي. يقدم هذا الموضوع كيفية تكوين تخزين الرسائل باستخدام Docker Compose أو Helm.
يمكنك تكوين Pulsar مع Docker Comp ose أو على K8s وتكوين Kafka على K8s.
تكوين بولسار باستخدام Docker Compose
1. تكوين بولسار
لتهيئة Pulsar مع Docker Compose، قم بتوفير القيم الخاصة بك للقسم pulsar
في الملف milvus.yaml
على مسار 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.
راجع التكوينات المتعلقة بـ Pulsar لمزيد من المعلومات.
2. تشغيل ميلفوس
قم بتشغيل الأمر التالي لبدء تشغيل Milvus الذي يستخدم تكوينات Pulsar.
docker compose up
تكوين Pulsar مع Helm
بالنسبة لمجموعات Milvus على K8s، يمكنك تكوين Pulsar في نفس الأمر الذي يبدأ تشغيل Milvus. وبدلاً من ذلك، يمكنك تكوين Pulsar باستخدام الملف values.yml
على المسار /charts/milvus في مستودع milvus-helm قبل بدء تشغيل Milvus.
للحصول على تفاصيل حول كيفية تكوين ملف Milvus باستخدام Helm، راجع تكوين Milvus باستخدام مخططات Helm. للحصول على تفاصيل حول عناصر التكوين المتعلقة بـ Pulsar، راجع التكوينات المتعلقة بـ Pulsar. |
استخدام ملف YAML
- قم بتكوين القسم
externalConfigFiles
في الملفvalues.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
- بعد تهيئة الأقسام السابقة وحفظ الملف
values.yaml
، قم بتشغيل الأمر التالي لتثبيت ملف Milvus الذي يستخدم تكوينات بولسار.
helm install <your_release_name> milvus/milvus -f values.yaml
تكوين كافكا مع هيلم
بالنسبة لمجموعات Milvus على K8s، يمكنك تكوين Kafka في نفس الأمر الذي يبدأ تشغيل Milvus. وبدلاً من ذلك، يمكنك تكوين كافكا باستخدام الملف values.yml
على مسار /charts/milvus في مستودع milvus-helm قبل بدء تشغيل Milvus.
للحصول على تفاصيل حول كيفية تكوين ملف Milvus باستخدام Helm، راجع تكوين ملف Milvus باستخدام مخططات Helm. للحصول على تفاصيل حول عناصر التكوين المتعلقة بـ Pulsar، راجع التكوينات المتعلقة بـ Pulsar.
استخدام ملف YAML
- قم بتكوين القسم
externalConfigFiles
في الملفvalues.yaml
إذا كنت تريد استخدام كافكا كنظام تخزين الرسائل.
extraConfigFiles:
user.yaml: |+
kafka:
brokerList:
- <your_kafka_address>:<your_kafka_port>
saslUsername:
saslPassword:
saslMechanisms: PLAIN
securityProtocol: SASL_SSL
- بعد تكوين الأقسام السابقة وحفظ الملف
values.yaml
، قم بتشغيل الأمر التالي لتثبيت ملف Milvus الذي يستخدم تكوينات كافكا.
helm install <your_release_name> milvus/milvus -f values.yaml
تكوين RocksMQ مع Helm
يستخدم ملف Milvus المستقل RocksMQ كمخزن افتراضي للرسائل. للحصول على خطوات مفصلة حول كيفية تكوين Milvus مع Helm، راجع تكوين Milvus مع مخططات Helm. للحصول على تفاصيل حول عناصر التكوين المتعلقة بـ RocksMQ، راجع التكوينات المتعلقة بـ RocksMQ.
إذا قمت ببدء تشغيل Milvus مع RocksMQ وأردت تغيير إعداداته، يمكنك تشغيل
helm upgrade -f
بالإعدادات التي تم تغييرها في ملف YAML التالي.إذا كنت قد قمت بتثبيت Milvus مستقل باستخدام Helm مع مخزن رسائل غير RocksMQ وتريد تغييره مرة أخرى إلى RocksMQ، فقم بتشغيل
helm upgrade -f
مع ملف YAML التالي بعد مسح جميع المجموعات وإيقاف 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]
لا ينصح بتغيير مخزن الرسائل. إذا كنت ترغب في القيام بذلك، أوقف جميع عمليات DDL، ثم قم باستدعاء FlushAll API لمسح جميع المجموعات، وأخيراً أوقف Milvus في النهاية قبل أن تقوم بتغيير مخزن الرسائل فعلياً.
تكوين NATS مع Helm
NATS هو مخزن رسائل تجريبي بديل لـ RocksMQ. للحصول على خطوات مفصلة حول كيفية تكوين ميلفوس مع Helm، راجع تكوين ميلفوس مع مخططات Helm. للحصول على تفاصيل حول عناصر التكوين المتعلقة بـ RocksMQ، راجع التكوينات المتعلقة بـ NATS.
إذا قمت ببدء تشغيل ملف Milvus مع NATS وأردت تغيير إعداداته، يمكنك تشغيل
helm upgrade -f
بالإعدادات التي تم تغييرها في ملف YAML التالي.إذا كنت قد قمت بتثبيت Milvus مستقل مع مخزن رسائل غير NATS وتريد تغييره إلى NATS، قم بتشغيل
helm upgrade -f
مع ملف YAML التالي بعد مسح جميع المجموعات وإيقاف 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:
الاختيار بين RocksMQ و NATS؟
يستخدم RocksMQ CGO للتفاعل مع RocksDB ويدير الذاكرة بنفسه، بينما يقوم NATS المدمج في تثبيت Milvus بتفويض إدارة الذاكرة إلى جامع القمامة (GC) الخاص بـ Go.
في السيناريو الذي تكون فيه حزمة البيانات أصغر من 64 كيلوبايت، يتفوق RocksDB من حيث استخدام الذاكرة واستخدام وحدة المعالجة المركزية ووقت الاستجابة. من ناحية أخرى، إذا كانت حزمة البيانات أكبر من 64 كيلوبايت، يتفوق NATS من حيث وقت الاستجابة مع وجود ذاكرة كافية وجدولة GC مثالية.
في الوقت الحالي، يُنصح باستخدام NATS للتجارب فقط.
ما التالي
تعرف على كيفية تكوين تبعيات Milvus الأخرى باستخدام Docker Compose أو Helm: