تمت ترجمة هذه الوثائق تلقائيًا بواسطة الذكاء الاصطناعي.
عادةً، تعمل جميع خدمات تطبيق NocoBase ضمن نفس مثيل Node.js. مع ازدياد تعقيد وظائف التطبيق تدريجياً مع نمو الأعمال، قد تؤثر بعض الخدمات التي تستغرق وقتاً طويلاً على الأداء العام.
لتحسين أداء التطبيق، يدعم NocoBase تقسيم خدمات التطبيق لتشغيلها على عقد مختلفة في وضع التجميع (Cluster Mode). يمنع هذا النهج مشاكل أداء خدمة واحدة من التأثير على قدرة التطبيق بأكمله على الاستجابة لطلبات المستخدمين.
من ناحية أخرى، يتيح هذا أيضاً التوسع الأفقي المستهدف لخدمات معينة، مما يحسن استخدام موارد التجميع.
عند نشر NocoBase في تجميع، يمكن تقسيم الخدمات المختلفة ونشرها لتعمل على عقد مختلفة. يوضح الرسم التخطيطي التالي هيكل التقسيم:

مفتاح الخدمة: workflow:process
تدخل مهام سير العمل في الوضع غير المتزامن إلى قائمة انتظار للتنفيذ بعد تشغيلها. يمكن اعتبار مهام سير العمل هذه مهام خلفية، وعادةً لا يحتاج المستخدمون إلى انتظار عودة النتائج. خاصةً بالنسبة للعمليات المعقدة والمستهلكة للوقت ذات حجم التشغيل الكبير، يوصى بتقسيمها لتشغيلها على عقد مستقلة.
مفتاح الخدمة: async-task:process
يشمل هذا المهام التي يتم إنشاؤها بواسطة إجراءات المستخدم مثل الاستيراد والتصدير غير المتزامنين. في حالات أحجام البيانات الكبيرة أو التزامن العالي، يوصى بتقسيمها لتشغيلها على عقد مستقلة.
يتم تقسيم الخدمات المختلفة إلى عقد مختلفة عن طريق تهيئة متغير البيئة WORKER_MODE. يمكن تهيئة متغير البيئة هذا وفقاً للقواعد التالية:
WORKER_MODE=<فارغ>: عند عدم التهيئة أو عند تهيئته كفارغ، يكون وضع العامل (worker mode) هو نفسه وضع المثيل الفردي الحالي، حيث يستقبل جميع الطلبات ويعالج جميع المهام. هذا متوافق مع التطبيقات التي لم يتم تهيئتها مسبقاً.WORKER_MODE=! : وضع العامل هو معالجة الطلبات فقط، وعدم معالجة أي مهام.WORKER_MODE=workflow:process,async-task:process: عند تهيئته بمعرف خدمة واحد أو أكثر (مفصولة بفواصل إنجليزية)، يكون وضع العامل هو معالجة المهام الخاصة بهذه المعرفات فقط، وعدم معالجة الطلبات.WORKER_MODE=*: وضع العامل هو معالجة جميع المهام الخلفية، بغض النظر عن الوحدة، ولكن لا يعالج الطلبات.WORKER_MODE=!,workflow:process: وضع العامل هو معالجة الطلبات، ومعالجة المهام الخاصة بمعرف معين في نفس الوقت.WORKER_MODE=-: وضع العامل هو عدم معالجة أي طلبات أو مهام (هذا الوضع مطلوب داخل عملية العامل).على سبيل المثال، في بيئة K8S، يمكن للعقد ذات وظيفة التقسيم المتماثلة استخدام نفس تهيئة متغير البيئة، مما يسهل التوسع الأفقي لنوع معين من الخدمات.
لن نفترض وجود ثلاث عقد: node1 و node2 و node3. يمكن تهيئتها بالطرق التالية:
node1: تعالج طلبات واجهة المستخدم (UI) فقط، تهيئتها WORKER_MODE=! .node2: تعالج مهام سير العمل فقط، تهيئتها WORKER_MODE=workflow:process.node3: تعالج المهام غير المتزامنة فقط، تهيئتها WORKER_MODE=async-task:process.لن نفترض وجود أربع عقد: node1 و node2 و node3 و node4. يمكن تهيئتها بالطرق التالية:
node1 و node2: تعالج جميع الطلبات العادية، تهيئتها WORKER_MODE=!، ويقوم موازن التحميل (load balancer) بتوزيع الطلبات تلقائياً على هاتين العقدتين.node3 و node4: تعالج جميع المهام الخلفية الأخرى، تهيئتها WORKER_MODE=*.عند تطوير إضافات الأعمال (plugins)، يمكنك تقسيم الخدمات التي تستهلك موارد كبيرة بناءً على متطلبات السيناريو. يمكن تحقيق ذلك بالطرق التالية:
my-plugin:process، لتهيئة متغير البيئة، وقدم وثائق له.app.serving() للتحقق من البيئة وتحديد ما إذا كان يجب على العقدة الحالية توفير خدمة معينة بناءً على متغير البيئة.