🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI

ما هو JuiceFS؟

  • Engineering
June 15, 2021
Changjian Gao and Jingjing Jia

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

ما هو JuiceFS؟

JuiceFS هو نظام ملفات POSIX موزع مفتوح المصدر عالي الأداء ومفتوح المصدر، والذي يمكن بناؤه على رأس ريديس و S3. وقد تم تصميمه للبيئات السحابية الأصلية ويدعم إدارة البيانات من أي نوع وتحليلها وأرشفتها ونسخها احتياطيًا. يُستخدم JuiceFS بشكل شائع لحل تحديات البيانات الضخمة، وبناء تطبيقات الذكاء الاصطناعي (AI)، وجمع السجلات. يدعم النظام أيضًا مشاركة البيانات عبر عدة عملاء ويمكن استخدامه مباشرةً كتخزين مشترك في Milvus.

بعد استمرار البيانات والبيانات الوصفية المقابلة لها في تخزين الكائنات وRedis على التوالي، يعمل نظام JuiceFS كبرنامج وسيط عديم الحالة. تتحقق مشاركة البيانات من خلال تمكين التطبيقات المختلفة من الالتحام مع بعضها البعض بسلاسة من خلال واجهة نظام ملفات قياسية. يعتمد JuiceFS على Redis، وهو مخزن بيانات مفتوح المصدر في الذاكرة، لتخزين البيانات الوصفية. يتم استخدام Redis لأنه يضمن الذرية ويوفر عمليات بيانات وصفية عالية الأداء. يتم تخزين جميع البيانات في تخزين الكائنات من خلال عميل JuiceFS. مخطط البنية على النحو التالي:

juicefs-architecture.png JuiceFS-architecture.png

بناء مجموعة Milvus على أساس JuiceFS

تعمل مجموعة Milvus المبنية باستخدام JuiceFS (انظر مخطط البنية أدناه) عن طريق تقسيم الطلبات الأولية باستخدام Mishards، وهي برمجية وسيطة لتجزئة المجموعة، لتوزيع الطلبات إلى وحداتها الفرعية. عند إدراج البيانات، تقوم Mishards بتخصيص طلبات المنبع إلى عقدة الكتابة في Milvus، والتي تخزن البيانات المدرجة حديثًا في JuiceFS. عند قراءة البيانات، يقوم Mishards بتحميل البيانات من JuiceFS من خلال عقدة قراءة Milvus إلى الذاكرة للمعالجة، ثم يجمع النتائج ويعيدها من الخدمات الفرعية في المنبع.

milvus-cluster-built-with-juicefs.png milvus-cluster-built-built-with-juicefs.png

الخطوة 1: تشغيل خدمة MySQL

قم بتشغيل خدمة MySQL على أي عقدة في المجموعة. لمزيد من التفاصيل، راجع إدارة البيانات الوصفية مع MySQL.

الخطوة 2: إنشاء نظام ملفات JuiceFS

لأغراض العرض التوضيحي، يتم استخدام برنامج JuiceFS الثنائي الذي تم تجميعه مسبقًا. قم بتحميل حزمة التثبيت الصحيحة لنظامك واتبع دليل البدء السريع لبرنامج JuiceFS للحصول على تعليمات التثبيت التفصيلية. لإنشاء نظام ملفات JuiceFS، قم أولاً بإعداد قاعدة بيانات Redis لتخزين البيانات الوصفية. يوصى في عمليات النشر السحابية العامة باستضافة خدمة Redis على نفس السحابة التي يستضيفها التطبيق. بالإضافة إلى ذلك، قم بإعداد تخزين الكائنات ل JuiceFS. في هذا المثال، يتم استخدام Azure Blob Storage؛ ومع ذلك، يدعم JuiceFS جميع خدمات الكائنات تقريبًا. حدد خدمة تخزين الكائنات التي تناسب متطلبات السيناريو الخاص بك.

بعد تهيئة خدمة Redis وتخزين الكائنات، قم بتهيئة نظام ملفات جديد وقم بتحميل JuiceFS إلى الدليل المحلي:

1 $  export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX;EndpointSuffix=core.windows.net"
2 $ ./juicefs format \
3     --storage wasb \
4     --bucket https://<container> \
5     ... \
6     localhost test #format
7 $ ./juicefs mount -d localhost ~/jfs  #mount
8

إذا كان خادم Redis لا يعمل محلياً، استبدل المضيف المحلي بالعنوان التالي: redis://<user:password>@host:6379/1.

عند نجاح التثبيت، يُرجع JuiceFS صفحة التخزين المشتركة /root/jfs.

installation-success.png installation-success.png

الخطوة 3: بدء تشغيل ميلفوس

يجب أن تكون جميع العُقد في المجموعة مثبتة على Milvus، ويجب تكوين كل عقدة Milvus بإذن قراءة أو كتابة. يمكن تهيئة عقدة Milvus واحدة فقط كعقدة كتابة، ويجب أن تكون البقية عقد قراءة. أولاً، قم بتعيين معلمات القسمين cluster و general في ملف تكوين نظام Milvus server_config.yaml:

القسم cluster

المعلمةالوصفالتكوين
enableما إذا كان سيتم تمكين وضع المجموعةtrue
roleدور نشر ميلفوسrw/ro

القسم general

# meta_uri is the URI for metadata storage, using MySQL (for Milvus Cluster). Format: mysql://<username:password>@host:port/database
general:
  timezone: UTC+8
  meta_uri: mysql://root:milvusroot@host:3306/milvus

أثناء التثبيت، يتم تعيين مسار التخزين المشترك لـ JuiceFS الذي تم تكوينه على أنه /root/jfs/milvus/db.

1 sudo docker run -d --name milvus_gpu_1.0.0 --gpus all \
2 -p 19530:19530 \
3 -p 19121:19121 \
4 -v /root/jfs/milvus/db:/var/lib/milvus/db \  #/root/jfs/milvus/db is the shared storage path
5 -v /home/$USER/milvus/conf:/var/lib/milvus/conf \
6 -v /home/$USER/milvus/logs:/var/lib/milvus/logs \
7 -v /home/$USER/milvus/wal:/var/lib/milvus/wal \
8 milvusdb/milvus:1.0.0-gpu-d030521-1ea92e
9

بعد اكتمال التثبيت، ابدأ تشغيل Milvus وتأكد من تشغيله بشكل صحيح. أخيرًا، ابدأ تشغيل خدمة Mishards على أي من العقد في الكتلة. تُظهر الصورة أدناه تشغيل Mishards بنجاح. لمزيد من المعلومات، راجع البرنامج التعليمي GitHub.

mishards-launch-success.png mishards-launch-success.png

معايير الأداء

عادةً ما يتم تنفيذ حلول التخزين المشتركة بواسطة أنظمة التخزين المتصلة بالشبكة (NAS). تشمل أنواع أنظمة NAS الشائعة الاستخدام نظام ملفات الشبكة (NFS) وكتلة رسائل الخادم (SMB). وتوفر المنصات السحابية العامة بشكل عام خدمات تخزين مُدارة متوافقة مع هذه البروتوكولات، مثل نظام الملفات المرن (EFS) من أمازون.

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

يكشف الاختبار المعياري أن نظام JuiceFS يقدم مزايا كبيرة مقارنةً بنظام EFS. في معيار البيانات الوصفية (الشكل 1)، يشهد نظام JuiceFS عمليات إدخال/إخراج في الثانية (IOPS) أعلى بعشر مرات من نظام EFS. بالإضافة إلى ذلك، يُظهر معيار إنتاجية الإدخال/الإخراج (الشكل 2) تفوق أداء JuiceFS على EFS في كل من سيناريوهات العمل الفردي والمتعدد.

performance-benchmark-1.png الأداء-معيار الأداء-1.png

performance-benchmark-2.png الأداء-معيار الأداء-2.png

بالإضافة إلى ذلك، يُظهر الاختبار المعياري أن وقت استرجاع الاستعلام الأول، أو الوقت اللازم لتحميل البيانات المدرجة حديثًا من القرص إلى الذاكرة، بالنسبة لمجموعة Milvus المستندة إلى JuiceFS هو 0.032 ثانية فقط في المتوسط، مما يشير إلى أن البيانات يتم تحميلها من القرص إلى الذاكرة بشكل فوري تقريبًا. بالنسبة لهذا الاختبار، تم قياس وقت استرجاع الاستعلام الأول باستخدام مليون صف من البيانات المتجهة ذات 128 بُعدًا تم إدراجها على دفعات من 100 ألف على فترات تتراوح من 1 إلى 8 ثوانٍ.

إن JuiceFS هو نظام تخزين ملفات مشترك مستقر وموثوق به، وتوفر مجموعة Milvus المبنية على JuiceFS أداءً عاليًا وسعة تخزين مرنة.

اعرف المزيد عن ميلفوس

Milvus هو أداة قوية قادرة على تشغيل مجموعة واسعة من تطبيقات الذكاء الاصطناعي وتطبيقات البحث عن التشابه المتجه. لمعرفة المزيد عن المشروع، اطلع على الموارد التالية:

  • اقرأ مدونتنا.
  • تفاعل مع مجتمعنا مفتوح المصدر على Slack.
  • استخدم أو ساهم في قاعدة بيانات المتجهات الأكثر شعبية في العالم على GitHub.
  • اختبر تطبيقات الذكاء الاصطناعي وانشرها بسرعة من خلال معسكرنا التدريبي الجديد.

writer bio-changjian gao.png السيرة الذاتية للكاتب-تشانغجيان جاو.png writer bio-jingjing jia.pngالسيرة الذاتية للكاتب-جينغجينغ جيا.png

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

استمر في القراءة