نظرة عامة على بنية ميلفوس

Milvus هي قاعدة بيانات متجهية مفتوحة المصدر ومفتوحة المصدر ومصممة للبحث عن التشابه عالي الأداء في مجموعات البيانات المتجهة الضخمة. تم تصميمه على رأس مكتبات البحث المتجه الشائعة بما في ذلك Faiss وHNSW وDiskANN وSCANN، وهو يمكّن تطبيقات الذكاء الاصطناعي وسيناريوهات استرجاع البيانات غير المنظمة. قبل المتابعة، تعرّف على المبادئ الأساسية لاسترجاع التضمين.

مخطط الهندسة المعمارية

يوضح الرسم البياني التالي بنية Milvus عالية المستوى، ويعرض تصميمها المعياري والقابل للتطوير والسحابة الأصلية مع طبقات تخزين وحوسبة مفصّلة بالكامل.

Architecture_diagram مخطط_العمارة

المبادئ المعمارية

تتبع Milvus مبدأ الفصل بين مستوى البيانات ومستوى التحكم، وتتألف من أربع طبقات رئيسية مستقلة عن بعضها البعض من حيث قابلية التوسع والتعافي من الكوارث. تتيح هذه البنية ذات التخزين المشترك مع طبقات التخزين والحوسبة المفصّلة بالكامل إمكانية التوسع الأفقي لعقد الحوسبة مع تنفيذ Woodpecker كطبقة WAL خالية من الأقراص لزيادة المرونة وتقليل النفقات التشغيلية.

من خلال فصل معالجة الدفق إلى عقدة التدفق ومعالجة الدُفعات إلى عقدة الاستعلام وعقدة البيانات، تحقق Milvus أداءً عاليًا مع تلبية متطلبات المعالجة في الوقت الفعلي في الوقت نفسه.

بنية الطبقة التفصيلية

الطبقة 1: طبقة الوصول

تتألف طبقة الوصول من مجموعة من الوكلاء عديمي الحالة، وهي الطبقة الأمامية للنظام ونقطة النهاية للمستخدمين. تتحقق من صحة طلبات العميل وتقلل من النتائج التي يتم إرجاعها:

  • الوكيل في حد ذاته عديم الحالة. يوفر عنوان خدمة موحد باستخدام مكونات موازنة التحميل مثل Nginx و Kubernetes Ingress و NodePort و LVS.
  • نظرًا لأن Milvus يستخدم بنية معالجة متوازية على نطاق واسع (MPP)، يقوم الوكيل بتجميع النتائج الوسيطة ومعالجتها لاحقًا قبل إعادة النتائج النهائية إلى العميل.

الطبقة 2: المنسق

يعمل المنسق بمثابة عقل ميلفوس. في أي لحظة، يكون منسق واحد فقط نشطًا عبر المجموعة بأكملها، ويكون مسؤولاً عن الحفاظ على طوبولوجيا المجموعة، وجدولة جميع أنواع المهام، والتعهد بالاتساق على مستوى المجموعة.

فيما يلي بعض المهام التي يتولاها المنسق:

  • إدارة لغة تعريف البيانات (DDL/DCL) / لغة تعريف البيانات (DDL) / إدارة العمليات المؤقتة: يتعامل مع طلبات لغة تعريف البيانات (DDL) ولغة التحكم في البيانات (DCL)، مثل إنشاء أو حذف المجموعات أو الأقسام أو الفهارس، بالإضافة إلى إدارة الطابع الزمني أوراكل (TSO) وإصدار شريط الوقت.
  • إدارة خدمة التدفق: يربط سجل الكتابة المسبق (WAL) مع عقد البث ويوفر اكتشاف الخدمة لخدمة البث.
  • إدارة الاستعلام: تدير الطوبولوجيا وموازنة التحميل لعقد الاستعلام، وتوفر وتدير طرق عرض الاستعلامات المقدمة لتوجيه توجيه الاستعلام.
  • إدارة البيانات التاريخية: توزع المهام غير المتصلة بالإنترنت مثل الضغط وبناء الفهرس على عقد البيانات، وتدير طوبولوجيا المقاطع وطرق عرض البيانات.

الطبقة 3: العقد العاملة

الأذرع والأرجل. العُقد العاملة هي عبارة عن منفِّذات غبية تتبع تعليمات المنسق. العقد العاملة عديمة الحالة بفضل الفصل بين التخزين والحوسبة، ويمكنها تسهيل توسيع نطاق النظام واستعادة القدرة على العمل بعد الكوارث عند نشرها على Kubernetes. هناك ثلاثة أنواع من العقد العاملة:

عقدة التدفق

تعمل عقدة التدفق بمثابة "العقل المصغر" على مستوى الشاردة، حيث توفر ضمانات الاتساق على مستوى الشاردة واستعادة الأخطاء استنادًا إلى تخزين WAL الأساسي. وفي الوقت نفسه، فإن عقدة التدفق مسؤولة أيضًا عن زيادة الاستعلام عن البيانات وإنشاء خطط الاستعلام. بالإضافة إلى ذلك، فهي تتعامل أيضًا مع تحويل البيانات المتنامية إلى بيانات مختومة (تاريخية).

عقدة الاستعلام

تقوم عقدة الاستعلام بتحميل البيانات التاريخية من تخزين الكائن، وتوفر الاستعلام عن البيانات التاريخية.

عقدة البيانات

عقدة البيانات مسؤولة عن معالجة البيانات التاريخية دون اتصال بالإنترنت، مثل الضغط وبناء الفهرس.

الطبقة 4: التخزين

التخزين هو عظمة النظام، وهو المسؤول عن ثبات البيانات. وتتألف من التخزين التعريفي ووسيط السجل وتخزين الكائنات.

التخزين التعريفي

يقوم التخزين التعريفي بتخزين لقطات من البيانات الوصفية مثل مخطط المجموعة ونقاط التحقق من استهلاك الرسائل. يتطلب تخزين البيانات الوصفية توافرًا عاليًا للغاية واتساقًا قويًا ودعمًا للمعاملات، لذلك اختار Milvus موقع etcd للتخزين التعريفي. كما تستخدم ميلفوس أيضًا مخزن إلخd لتسجيل الخدمة والتحقق من صحتها.

تخزين الكائنات

يخزن تخزين الكائنات ملفات لقطات من السجلات، وملفات الفهرس للبيانات القياسية والمتجهة، ونتائج الاستعلام الوسيطة. يستخدم Milvus MinIO كتخزين كائنات ويمكن نشره بسهولة على AWS S3 و Azure Blob، وهما من أكثر خدمات التخزين شيوعًا وفعالية من حيث التكلفة في العالم. ومع ذلك، يتميز تخزين الكائنات بزمن وصول عالٍ ويتقاضى رسومًا حسب عدد الاستعلامات. ولتحسين أدائها وخفض التكاليف، تخطط ميلفوس لتنفيذ فصل البيانات الباردة عن الساخنة على ذاكرة أو تجمع ذاكرة تخزين مؤقت قائم على SSD.

تخزين WAL

تخزين سجل الكتابة المسبق (WAL) هو أساس متانة البيانات واتساقها في الأنظمة الموزعة. قبل إجراء أي تغيير، يتم تسجيله أولاً في السجل - مما يضمن أنه في حالة حدوث عطل، يمكنك استرداد البيانات من حيث توقفت بالضبط.

تتضمن تطبيقات WAL الشائعة Kafka وPulsar وWoodpecker. على عكس الحلول التقليدية القائمة على الأقراص، يتبنى Woodpecker تصميمًا سحابيًا أصليًا خالٍ من الأقراص يكتب مباشرةً إلى تخزين الكائنات. يتناسب هذا النهج مع احتياجاتك دون عناء ويبسط العمليات من خلال إزالة النفقات العامة لإدارة الأقراص المحلية.

من خلال تسجيل كل عملية كتابة في وقت مبكر، تضمن طبقة WAL آلية موثوقة على مستوى النظام للاسترداد والاتساق - بغض النظر عن مدى تعقيد بيئتك الموزعة.

فئات تدفق البيانات وواجهة برمجة التطبيقات

تصنف واجهات برمجة التطبيقات Milvus حسب وظيفتها وتتبع مسارات محددة من خلال البنية:

فئة واجهة برمجة التطبيقاتالعملياتأمثلة على واجهات برمجة التطبيقاتتدفق البنية
DDL/DCLالمخطط والتحكم في الوصولcreateCollection dropCollection ، hasCollection createPartitionطبقة الوصول → المنسق
DMLالتلاعب بالبياناتinsert delete, upsertطبقة الوصول → عقدة عامل التدفق
DQLاستعلام البياناتsearch, queryطبقة الوصول → عقدة عامل الدُفعات (عقد الاستعلام)

مثال على تدفق البيانات: عملية البحث

  1. يرسل العميل طلب بحث عبر SDK/واجهة برمجة تطبيقات SDK/واجهة برمجة تطبيقات ريستفول
  2. يقوم موازن التحميل بتوجيه الطلب إلى الوكيل المتاح في طبقة الوصول
  3. يستخدم الوكيل ذاكرة التخزين المؤقت للتوجيه لتحديد العُقد المستهدفة؛ لا يتصل بالمنسق إلا إذا كانت ذاكرة التخزين المؤقت غير متوفرة
  4. يقوم الوكيل بإعادة توجيه الطلب إلى عقد التدفق المناسبة، والتي تنسق بعد ذلك مع عقد الاستعلام للبحث عن البيانات المختومة أثناء تنفيذ البحث عن البيانات المتزايدة محليًا
  5. تقوم عُقد الاستعلام بتحميل المقاطع المختومة من مخزن الكائنات حسب الحاجة وإجراء بحث على مستوى المقطع
  6. تخضع نتائج البحث لاختزال متعدد المستويات تقوم عقد الاستعلام بتقليل النتائج عبر قطاعات متعددة، وتقوم عقد التدفق بتقليل النتائج من عقد الاستعلام، ويقوم الوكيل بتقليل النتائج من جميع عقد التدفق قبل العودة إلى العميل

مثال على تدفق البيانات: إدراج البيانات

  1. يرسل العميل طلب إدراج مع بيانات متجهة
  2. تقوم طبقة الوصول بالتحقق من صحة الطلب وإعادة توجيهه إلى عقدة التدفق
  3. تسجل عقدة التدفق العملية إلى مخزن WAL للتخزين من أجل المتانة
  4. تتم معالجة البيانات في الوقت الفعلي وإتاحتها للاستعلامات
  5. عندما تصل المقاطع إلى السعة، تقوم عقدة الدفق بتشغيل التحويل إلى مقاطع مختومة
  6. تتعامل عقدة البيانات مع الضغط وتنشئ فهارس فوق المقاطع المختومة، وتخزن النتائج في مخزن الكائنات
  7. تقوم عُقد الاستعلام بتحميل الفهارس المبنية حديثًا واستبدال البيانات المتزايدة المقابلة

ما التالي