نظرة عامة على البنية الموزعة
يهدف Milvus إلى تحقيق بحث تشابه فعال وتحليلات فعالة للمتجهات ذات النطاق الضخم. يمكن لمثيل Milvus المستقل أن يتعامل بسهولة مع البحث عن المتجهات لمليار متجه على نطاق مليار متجه. ومع ذلك، بالنسبة لمجموعات البيانات التي يبلغ حجمها 10 مليارات أو 100 مليار أو حتى مجموعات بيانات أكبر، هناك حاجة إلى مجموعة Milvus العنقودية. يمكن استخدام الكتلة كمثيل مستقل لتطبيقات المستوى الأعلى ويمكن أن تلبي احتياجات العمل من الكمون المنخفض والتزامن العالي للبيانات ذات النطاق الضخم. يمكن لمجموعة Milvus العنقودية إعادة إرسال الطلبات، وفصل القراءة عن الكتابة، والتوسع الأفقي، والتوسع ديناميكيًا، وبالتالي توفير مثيل Milvus الذي يمكن أن يتوسع بلا حدود. Mishards هو حل موزع لـ Milvus.
ستقدم هذه المقالة بإيجاز مكونات بنية Mishards. سيتم تقديم معلومات أكثر تفصيلاً في المقالات القادمة.
1-ميلفوس-ميلفوس-ميشاردز-ميشاردز.png
نظرة عامة على البنية الموزعة
2-نظرة عامة على البنية الموزعة.png
تتبع الخدمة
3-تتبع الخدمة-milvus.png
مكونات الخدمة الأساسية
- إطار عمل اكتشاف الخدمة، مثل ZooKeeper، و etcd، و Consul.
- موازن التحميل، مثل Nginx و HAProxy و Ingress Controller.
- عقدة ميشاردز: عقدة عديمة الحالة وقابلة للتطوير.
- عقدة ميلفوس للكتابة فقط: عقدة واحدة وغير قابلة للتطوير. تحتاج إلى استخدام حلول التوافر العالي لهذه العقدة لتجنب نقطة فشل واحدة.
- عقدة ميلفوس للقراءة فقط: عقدة حالة وقابلة للتطوير.
- خدمة تخزين مشتركة: تستخدم جميع عقد Milvus خدمة التخزين المشتركة لمشاركة البيانات، مثل NAS أو NFS.
- خدمة البيانات الوصفية: تستخدم جميع عقد Milvus هذه الخدمة لمشاركة البيانات الوصفية. حالياً، يتم دعم MySQL فقط. تتطلب هذه الخدمة حل MySQL عالي التوفر.
مكونات قابلة للتطوير
- ميشاردز
- عقد ميلفوس للقراءة فقط
مقدمة المكونات
عقد Mishards
Mishards مسؤولة عن تقسيم طلبات المنبع وتوجيه الطلبات الفرعية إلى الخدمات الفرعية. يتم تلخيص النتائج للعودة إلى المنبع.
4-ميشاردز-عقدة. jpg
كما هو موضح في الرسم البياني أعلاه، بعد قبول طلب بحث TopK، تقوم Mishards أولاً بتقسيم الطلب إلى طلبات فرعية وإرسال الطلبات الفرعية إلى خدمة المنبع. عندما يتم جمع جميع الاستجابات الفرعية، يتم دمج الاستجابات الفرعية وإعادتها إلى المنبع.
نظرًا لأن Mishards هي خدمة عديمة الحالة، فإنها لا تحفظ البيانات أو تشارك في عمليات حسابية معقدة. وبالتالي، لا تحتوي العقد على متطلبات تكوين عالية وتستخدم قوة الحوسبة بشكل أساسي في دمج النتائج الفرعية. لذلك، من الممكن زيادة عدد عقد Mishards للحصول على تزامن عالٍ.
عقد ميلفوس
عُقد Milvus مسؤولة عن العمليات الأساسية المتعلقة بـ CRUD، لذا فإن لها متطلبات تكوين عالية نسبيًا. أولاً، يجب أن يكون حجم الذاكرة كبيرًا بما يكفي لتجنب الكثير من عمليات الإدخال والإخراج على القرص. ثانيًا، يمكن أن تؤثر تكوينات وحدة المعالجة المركزية أيضًا على الأداء. مع زيادة حجم المجموعة، يلزم المزيد من عقد Milvus لزيادة إنتاجية النظام.
عقد القراءة فقط والعقد القابلة للكتابة
- العمليات الأساسية لـ Milvus هي إدخال المتجهات والبحث. يحتوي البحث على متطلبات عالية للغاية على تكوينات وحدة المعالجة المركزية ووحدة معالجة الرسومات، في حين أن عمليات الإدراج أو العمليات الأخرى لها متطلبات منخفضة نسبيًا. يؤدي فصل العقدة التي تقوم بتشغيل البحث عن العقدة التي تقوم بتشغيل العمليات الأخرى إلى نشر أكثر اقتصاداً.
- فيما يتعلق بجودة الخدمة، عندما تقوم العقدة بتشغيل عمليات البحث، فإن الأجهزة ذات الصلة تعمل بكامل طاقتها ولا يمكنها ضمان جودة خدمة العمليات الأخرى. لذلك، يتم استخدام نوعين من العقد. تتم معالجة طلبات البحث بواسطة عقد للقراءة فقط وتتم معالجة الطلبات الأخرى بواسطة عقد قابلة للكتابة.
يُسمح بعقدة واحدة فقط قابلة للكتابة
لا يدعم ميلفوس حاليًا مشاركة البيانات لمثيلات متعددة قابلة للكتابة.
أثناء النشر، يجب مراعاة نقطة فشل واحدة للعقد القابلة للكتابة. يجب إعداد حلول التوافر العالي للعقد القابلة للكتابة.
قابلية توسيع العقد القابلة للقراءة فقط
عندما يكون حجم البيانات كبيراً للغاية، أو عندما تكون متطلبات زمن الاستجابة عالية للغاية، يمكنك توسيع نطاق عقد القراءة فقط أفقياً كعقد قابلة للكتابة. افترض أن هناك 4 مضيفين ولكل منهم التكوين التالي: نوى وحدة المعالجة المركزية: 16، وحدة معالجة الرسومات: 1، الذاكرة: 64 جيجابايت. يوضح المخطط التالي الكتلة عند توسيع نطاق العقد ذات الحالة أفقياً. يتم توسيع كل من قوة الحوسبة والذاكرة خطيًا. تنقسم البيانات إلى 8 أجزاء مع كل عقدة تعالج الطلبات من جزأين.
5-قراءة فقط-عُقدة-قابلية التوسع-ميلفوس.png
عندما يكون عدد الطلبات كبيرًا بالنسبة لبعض الأجزاء، يمكن نشر عقد القراءة فقط عديمة الحالة لهذه الأجزاء لزيادة الإنتاجية. خذ المضيفين أعلاه كمثال. عندما يتم دمج المضيفين في مجموعة بدون خادم، تزداد قوة الحوسبة خطيًا. نظرًا لأن البيانات المراد معالجتها لا تزيد، فإن قوة المعالجة لجزء البيانات نفسه تزداد خطيًا أيضًا.
6-القراءة فقط-عُقدة-قابلة للتطوير-ملفوس-2.png
خدمة البيانات الوصفية
الكلمات المفتاحية MySQL
لمزيد من المعلومات حول البيانات الوصفية لـ Milvus، راجع كيفية عرض البيانات الوصفية. في النظام الموزع، تكون عقد ميلفوس القابلة للكتابة هي المنتج الوحيد للبيانات الوصفية. تعتبر عقد Mishards وعقد Milvus القابلة للكتابة وعقد Milvus للقراءة فقط مستهلكين للبيانات الوصفية. في الوقت الحالي، يدعم Milvus حاليًا MySQL و SQLite فقط كخلفية تخزين للبيانات الوصفية. في النظام الموزع، لا يمكن نشر الخدمة إلا كخدمة MySQL عالية التوفر.
اكتشاف الخدمة
الكلمات المفتاحية: Apache Zookeeper، إلخd، Consul، Kubernetes
7-اكتشاف الخدمة.png
يوفر اكتشاف الخدمة معلومات حول جميع عقد ميلفوس. تقوم عقد ميلفوس بتسجيل معلوماتها عند الاتصال بالإنترنت وتسجيل الخروج عند عدم الاتصال. يمكن لعقد Milvus أيضًا اكتشاف العقد غير الطبيعية عن طريق التحقق من الحالة الصحية للخدمات بشكل دوري.
يحتوي اكتشاف الخدمة على الكثير من أطر العمل، بما في ذلك etcd و Consul و ZooKeeper وغيرها. يحدد Mishards واجهات اكتشاف الخدمة ويوفر إمكانيات للتوسع بواسطة المكونات الإضافية. حاليًا، يوفر Mishards نوعين من المكونات الإضافية، والتي تتوافق مع مجموعة Kubernetes والتكوينات الثابتة. يمكنك تخصيص اكتشاف الخدمة الخاصة بك عن طريق اتباع تنفيذ هذه المكونات الإضافية. الواجهات مؤقتة وتحتاج إلى إعادة تصميم. سيتم توضيح المزيد من المعلومات حول كتابة المكون الإضافي الخاص بك في المقالات القادمة.
موازنة التحميل وتجزئة الخدمة
الكلمات المفتاحية: Nginx, HAProxy, Kubernetes
7-موازنة التحميل وتقاسم الخدمة.png
يتم استخدام اكتشاف الخدمة وموازنة التحميل معًا. يمكن تكوين موازنة التحميل على شكل اقتراع أو تجزئة أو تجزئة متسقة.
موازن التحميل مسؤول عن إعادة إرسال طلبات المستخدم إلى عقدة Mishards.
تحصل كل عقدة من عقد Mishards على معلومات جميع عقد Milvus النهائية عبر مركز اكتشاف الخدمة. يمكن الحصول على جميع البيانات الوصفية ذات الصلة عن طريق خدمة البيانات الوصفية. تقوم Mishards بتنفيذ التجزئة من خلال استهلاك هذه الموارد. يحدد Mishards الواجهات المتعلقة باستراتيجيات التوجيه ويوفر الإضافات عبر المكونات الإضافية. في الوقت الحالي، يوفر Mishards استراتيجية تجزئة متسقة استنادًا إلى أدنى مستوى مقطع. كما هو موضح في الرسم البياني، هناك 10 شرائح، من s1 إلى s10. وفقًا لاستراتيجية التجزئة المتسقة المستندة إلى المقاطع، يقوم Mishards بتوجيه الطلبات المتعلقة بالمقاطع s1 و s24 و s6 و s9 إلى عقدة Milvus 1، و s2 و s3 و s5 إلى عقدة Milvus 2، و s7 و s8 و s10 إلى عقدة Milvus 3.
استنادًا إلى احتياجات عملك، يمكنك تخصيص التوجيه باتباع المكون الإضافي الافتراضي للتوجيه المتسق للتجزئة.
التتبع
الكلمات المفتاحية: التتبع المفتوح، جايجر، زيبكين
بالنظر إلى تعقيد النظام الموزع، يتم إرسال الطلبات إلى استدعاءات خدمة داخلية متعددة. للمساعدة في تحديد المشاكل، نحتاج إلى تتبع سلسلة استدعاءات الخدمة الداخلية. ومع ازدياد التعقيد، فإن فوائد نظام التتبع المتاح لا تحتاج إلى شرح. نختار معيار CNCF OpenTracing. يوفر OpenTracing واجهات برمجة تطبيقات مستقلة عن النظام الأساسي ومستقلة عن البائعين للمطورين لتنفيذ نظام التتبع بسهولة.
8-التتبع-عرض تجريبي-ملفوس.png
المخطط السابق هو مثال على التتبع أثناء استدعاء البحث. يستدعي البحث get_routing
و do_search
و do_merge
على التوالي. do_search
يستدعي أيضًا search_127.0.0.1
.
يشكل سجل التتبع بأكمله الشجرة التالية:
8-بحث-تتبع-التتبع-ملفوس.png
يوضح المخطط التالي أمثلة على معلومات الطلب/الاستجابة وعلامات كل عقدة:
طلب-استجابة-معلومات-علامات-عُقدة-ملفوس.png
تم دمج التتبع المفتوح في ميلفوس. سيتم تغطية المزيد من المعلومات في المقالات القادمة.
المراقبة والتنبيه
الكلمات المفتاحية: بروميثيوس، جرافانا
10-مراقبة-تنبيه-ملفوس.jpg
ملخص
كبرنامج وسيط للخدمة، يدمج Mishards اكتشاف الخدمة وطلب التوجيه ودمج النتائج والتتبع. كما يتم توفير التوسعة القائمة على المكونات الإضافية. في الوقت الحالي، لا تزال الحلول الموزعة القائمة على Mishards تعاني من العوائق التالية:
- يستخدم Mishards البروكسي كطبقة وسطى ولديه تكاليف زمن انتقال.
- عقد ميلفوس القابلة للكتابة هي خدمات أحادية النقطة.
- تعتمد على خدمة MySQL المتوفرة بشكل كبير. -يعتبر النشر معقدًا عندما يكون هناك عدة أجزاء ويكون للجزء الواحد نسخ متعددة.
- تفتقر إلى طبقة ذاكرة التخزين المؤقت، مثل الوصول إلى البيانات الوصفية.
سنقوم بإصلاح هذه المشكلات المعروفة في الإصدارات القادمة بحيث يمكن تطبيق Mishards على بيئة الإنتاج بشكل أكثر ملاءمة.
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word