تحسين اتصالات البيانات: ميلفوس تحتضن رسائل NATS
في النسيج المعقد لمعالجة البيانات، يكون التواصل السلس هو الخيط الذي يربط العمليات ببعضها البعض. وقد شرعت شركة Milvus، قاعدة البيانات المتجهة مفتوحة المصدر الرائدة والمفتوحة المصدر، في رحلة تحويلية مع أحدث ميزاتها: تكامل رسائل NATS. في منشور المدونة الشامل هذا، سنكشف عن تعقيدات هذا التكامل، ونستكشف ميزاته الأساسية، وعملية الإعداد، وفوائد الترحيل، وكيف يتراكم مقارنةً بسابقه RocksMQ.
فهم دور قوائم انتظار الرسائل في Milvus
في بنية ميلفوس السحابية الأصلية، تحتل قائمة انتظار الرسائل، أو وسيط السجلات، أهمية محورية. إنها العمود الفقري الذي يضمن تدفقات البيانات المستمرة، والمزامنة، وإشعارات الأحداث، وسلامة البيانات أثناء عمليات استرداد النظام. تقليديًا، كان RocksMQ هو الخيار الأكثر وضوحًا في وضع Milvus Standalone، خاصةً عند مقارنته مع Pulsar و Kafka، ولكن أصبحت قيوده واضحة مع البيانات الواسعة والسيناريوهات المعقدة.
يقدم Milvus 2.3 Milvus 2.3 NATS، وهو تطبيق MQ أحادي العقدة، يعيد تعريف كيفية إدارة تدفقات البيانات. وعلى عكس سابقاتها، تحرر NATS مستخدمي Milvus من قيود الأداء، وتقدم تجربة سلسة في التعامل مع أحجام البيانات الكبيرة.
ما هو NATS؟
NATS هي تقنية اتصال نظام موزعة يتم تنفيذها في Go. وهي تدعم أوضاع اتصال مختلفة مثل طلب-إعادة الطلب ونشر-الاشتراك عبر الأنظمة، وتوفر ثبات البيانات من خلال JetStream، وتوفر إمكانات موزعة من خلال RAFT المدمج. يمكنك الرجوع إلى الموقع الرسمي لـ NATS للحصول على فهم أكثر تفصيلاً لـ NATS.
في الوضع المستقل Milvus 2.3 Standalone، يوفر كل من NATS و JetStream و PubSub ل Milvus إمكانات MQ قوية.
تمكين NATS
يوفر Milvus 2.3 خيار تحكم جديد، mq.type
، والذي يسمح للمستخدمين بتحديد نوع MQ الذي يريدون استخدامه. لتمكين NATS، قم بتعيين mq.type=natsmq
. إذا رأيت سجلات مشابهة للسجلات أدناه بعد بدء تشغيل مثيلات Milvus، فهذا يعني أنك قمت بتمكين NATS كقائمة انتظار للرسائل بنجاح.
[INFO] [dependency/factory.go:83] ["try to init mq"] [standalone=true] [mqType=natsmq]
تكوين NATS لـ Milvus
تتضمن خيارات تخصيص NATS تحديد منفذ الاستماع، ودليل تخزين JetStream، والحد الأقصى لحجم الحمولة، ومهلة التهيئة. يضمن الضبط الدقيق لهذه الإعدادات الأداء الأمثل والموثوقية المثلى.
natsmq:
server: # server side configuration for natsmq.
port: 4222 # 4222 by default, Port for nats server listening.
storeDir: /var/lib/milvus/nats # /var/lib/milvus/nats by default, directory to use for JetStream storage of nats.
maxFileStore: 17179869184 # (B) 16GB by default, Maximum size of the 'file' storage.
maxPayload: 8388608 # (B) 8MB by default, Maximum number of bytes in a message payload.
maxPending: 67108864 # (B) 64MB by default, Maximum number of bytes buffered for a connection Applies to client connections.
initializeTimeout: 4000 # (ms) 4s by default, waiting for initialization of natsmq finished.
monitor:
trace: false # false by default, If true enable protocol trace log messages.
debug: false # false by default, If true enable debug log messages.
logTime: true # true by default, If set to false, log without timestamps.
logFile: /tmp/milvus/logs/nats.log # /tmp/milvus/logs/nats.log by default, Log file path relative to .. of milvus binary if use relative path.
logSizeLimit: 536870912 # (B) 512MB by default, Size in bytes after the log file rolls over to a new one.
retention:
maxAge: 4320 # (min) 3 days by default, Maximum age of any message in the P-channel.
maxBytes: # (B) None by default, How many bytes the single P-channel may contain. Removing oldest messages if the P-channel exceeds this size.
maxMsgs: # None by default, How many message the single P-channel may contain. Removing oldest messages if the P-channel exceeds this limit.
ملاحظة:
يجب تحديد
server.port
للاستماع إلى خادم NATS. إذا كان هناك تعارض في المنفذ، فلن يتمكن ميلفوس من بدء التشغيل. تعيينserver.port=-1
لتحديد منفذ عشوائياً.storeDir
تحديد دليل تخزين JetStream. نوصي بتخزين الدليل في محرك أقراص ذي حالة صلبة عالي الأداء (SSD) لتحسين إنتاجية القراءة/الكتابة لـ Milvus.maxFileStore
تعيين الحد الأعلى لحجم تخزين JetStream. سيؤدي تجاوز هذا الحد إلى منع كتابة المزيد من البيانات.maxPayload
يحد من حجم الرسالة الفردية. يجب أن تبقيه أعلى من 5 ميغابايت لتجنب أي رفض للكتابة.initializeTimeout
يتحكم في مهلة بدء تشغيل خادم NATS.monitor
تكوين سجلات NATS المستقلة.retention
يتحكم في آلية الاحتفاظ برسائل NATS.
لمزيد من المعلومات، راجع وثائق NATS الرسمية.
الترحيل من RocksMQ إلى NATS
يعد الترحيل من RocksMQ إلى NATS عملية سلسة تتضمن خطوات مثل إيقاف عمليات الكتابة، ومسح البيانات، وتعديل التكوينات، والتحقق من الترحيل من خلال سجلات Milvus.
قبل بدء الترحيل، أوقف جميع عمليات الكتابة في Milvus.
قم بتنفيذ عملية
FlushALL
في Milvus وانتظر اكتمالها. تضمن هذه الخطوة مسح جميع البيانات المعلقة وجاهزية النظام لإيقاف التشغيل.قم بتعديل ملف تهيئة ميلفوس عن طريق تعيين
mq.type=natsmq
وضبط الخيارات ذات الصلة ضمن القسمnatsmq
.ابدأ تشغيل ميلفوس 2.3.
قم بالنسخ الاحتياطي وتنظيف البيانات الأصلية المخزنة في الدليل
rocksmq.path
. (اختياري)
NATS مقابل RocksMQ: مواجهة الأداء
اختبار أداء Pub/Sub
منصة الاختبار: رقاقة M1 Pro / الذاكرة: 16 جيجابايت
سيناريو الاختبار: الاشتراك في حزم البيانات العشوائية ونشرها إلى موضوع بشكل متكرر حتى يتم استلام آخر نتيجة منشورة.
النتائج:
بالنسبة لحزم البيانات الأصغر (< 64 كيلو بايت)، يتفوق RocksMQ على NATS فيما يتعلق بالذاكرة ووحدة المعالجة المركزية وسرعة الاستجابة.
بالنسبة لحزم البيانات الأكبر حجمًا (> 64 كيلو بايت)، يتفوق NATS على RocksMQ، حيث يقدم أوقات استجابة أسرع بكثير.
نوع الاختبار | MQ | عدد العمليات | التكلفة لكل عملية | تكلفة الذاكرة | الوقت الإجمالي لوحدة المعالجة المركزية | تكلفة التخزين |
---|---|---|---|---|---|---|
5 ميغابايت*100 بوب/فرعي | ناتس | 50 | 1.650328186 ثانية/عملية | 4.29 جيجابايت | 85.58 | 25G |
5 ميغابايت*100 حانة/فرعية | RocksMQ | 50 | 2.475595131 ثانية/عملية | 1.18 جيجابايت | 81.42 | 19G |
1 ميغابايت*500 حانة/فرعية | ناتس | 50 | 2.248722593 ثانية/عملية | 2.60 جيجابايت | 96.50 | 25G |
1 ميغابايت*500 حانة/فرعية | RocksMQ | 50 | 2.554614279 ثانية/عملية | 614.9 ميغابايت | 80.19 | 19G |
64 كيلوبايت*10000 حانة/فرعية | ناتس | 50 | 2.133345262 ثانية/عملية | 3.29 جيجابايت | 97.59 | 31G |
64 كيلوبايت*10000 حانة/فرعية | RocksMQ | 50 | 3.253778195 ق/س/س | 331.2 ميغابايت | 134.6 | 24G |
1 كيلوبايت*50000 حانة/فرعية | ناتس | 50 | 2.629391004 ثانية/عملية | 635.1 ميغابايت | 179.67 | 2.6G |
1 كيلوبايت*50000 حانة/فرعية | روكسمك | 50 | 0.897638581 ثانية/عملية | 232.3 ميغابايت | 60.42 | 521M |
الجدول 1: نتائج اختبار أداء Pub/Sub
اختبار تكامل ميلفوس
حجم البيانات: 100 ميغابايت
النتيجة: في اختبار مكثف مع مجموعة بيانات 100 مليون متجه، أظهر NATS انخفاضًا في البحث عن المتجهات وزمن انتقال الاستعلام.
المقاييس | RocksMQ (مللي ثانية) | NATS (مللي ثانية) |
---|---|---|
متوسط زمن انتقال البحث عن المتجهات | 23.55 | 20.17 |
طلبات البحث عن المتجهات في الثانية (RPS) | 2.95 | 3.07 |
متوسط وقت استجابة الاستعلام | 7.2 | 6.74 |
طلبات الاستعلام في الثانية (RPS) | 1.47 | 1.54 |
الجدول 2: نتائج اختبار تكامل Milvus مع مجموعة بيانات 100 متر
مجموعة البيانات: <100 مليون
النتيجة: بالنسبة لمجموعات البيانات الأصغر من 100 مليون، يُظهر NATS و RocksMQ أداءً مشابهًا.
الاستنتاج: تمكين ميلفوس مع رسائل NATS
يمثل دمج NATS في Milvus خطوة كبيرة في معالجة البيانات. سواءً كان الخوض في التحليلات في الوقت الحقيقي، أو تطبيقات التعلم الآلي، أو أي مشروع كثيف البيانات، فإن NATS يمكّن مشاريعك بالكفاءة والموثوقية والسرعة. مع تطور مشهد البيانات، فإن وجود نظام مراسلة قوي مثل NATS داخل Milvus يضمن اتصال بيانات سلس وموثوق وعالي الأداء.
- فهم دور قوائم انتظار الرسائل في Milvus
- ما هو NATS؟
- تمكين NATS
- تكوين NATS لـ Milvus
- الترحيل من RocksMQ إلى NATS
- NATS مقابل RocksMQ: مواجهة الأداء
- الاستنتاج: تمكين ميلفوس مع رسائل NATS
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word