b523db2bbea7098aeccea0f78f41f223
     
     
     
    
    
    
    
    
    
    
 
تقنية و أشياء أخرى
تقنية و أشياء أخرى
مختلف المقالات و النقاشات و الروابط المتعلقة بالتقنية او المواضيع العامة
وحدة الـ Cluster في Node.js
                         عربي     English

وحدة الـ Cluster في Node.js

   محمد جمال الذياب        08-02-2020  
   thamood   
مازالت بعض اللغات لاتقدم دعماً جيداً يسمح لك بالإستفادة من المعالجات المتعدد الأنوية ولكن وحدة Cluster في Node.js تسمح لك أن تنشأ مجموعة من العمليات لكل نواة بحيث يساعد هذا الشيء على توزيع الأداء والضغط على عمليات مختلفة بدل أن يتم التركيز على عملية واحدة فقط.
يوجد مثال بسيط في الصفحة التالية يقوم بإنشاء عدة عمليات مختلفة من نفس البرنامج وهو مرتبط بعدد الأنوية في جهازك، فمثلاً لو كانت جهازك رباعي النواة سوف تلاحظ ظهور أربع عمليات وهلم جرا:
http://nodejs.org/api/cluster.html
انا قمت بتعديل بسيط على الشفرة لتطبع كل عملية جديدة رقم العملية:
 
var cluster = require('cluster');
var http = require('http');
var numOfCpus = require('os').cpus().length;
if(cluster.isMaster)
{
for(var i =0; i < numOfCpus; i++)
{
cluster.fork();
}
cluster.on('fork',function(worker){
console.log('a new process was forked: '+worker.process.pid);
})
cluster.on('exit',function(worker, code, signal){
console.log('worker '+ worker.process.pid + 'died');
});
}
else
{
http.createServer(function(req,res){
res.writeHead(200);
res.end('Hello world\n');

}).listen(80);
}

التعليقات
   forabi - محمد فواز عرابي   
الجدير بالذكر أن clusters في Node.js وُجدت للتغلب على مشكلة كون JavaScript أحادية الخيط (single-threaded) بينما توفر العديد من اللغات الأخرى دعمًا أصليًّا للخيوط (threads).
من جهة المتصفح يجري العمل على معيار قياسي لإنشاء معيار WebWorker الذي يسمح للصفحة الواحدة أن تُنشئ threads تكون معزولة وإمكانياتها محدودة يمكن أن تتبادل الرسائل messages مع الخيط الرئيسي (main thread)، على حد علمي أصبح المعيار مطبّقًا في Firefox Nighlty، وهذا مثال بسيط عن استخدامه:
 
// main.js
var worker = new Worker('worker.js');
worker.onmessage = function(event) {
console.log('Got a message from the worker!', event.data);
}
// worker.js
postMessage('HEY!');


كما قلت فإن WebWorkers تُنشئ خيوطًا حقيقيّة (على مستوى النظام) لذا فهناك حاجه لحصرها ضمن صندوق رملي (sandbox) وتقييد ما تستطيع الوصول إليه، يمكن استخدامها للقيام بعمليات حسابية طويلة، إنجاز مهام في الخلفية بحيث لا تعيق الصفحة (non-blocking) لكنها لا تستطيع تعديل DOM.
  الموضوع و التعليقات و باقي البيانات في هذه الصفحة منقولة و معدلة من المصدر على الرابط التالي : https://io.hsoub.com/programming/10820
  هذا الموضوع مرخص تحت : رخصة المشاع الإبداعي BY-SA
المشاركة :
تويتر
فيسبوك
الإيميل
لينكد إن
واتساب
الرابط

تحسين التعليقات الفرعية بخاصية Expand الشجرية تحسين التعليقات الفرعية بخاصية Expand الشجرية
التشويق والاثارة في العاب نيتاندو وأخواتها (: التشويق والاثارة في العاب نيتاندو وأخواتها (:
ما رأيكم بموقعي الجديد حكاية صورة ما رأيكم بموقعي الجديد حكاية صورة
دعوة للجميع : المساجلة الشعرية الأولى ، شاركنا ! دعوة للجميع : المساجلة الشعرية الأولى ، شاركنا !
تطوير فرز وعرض المواضيع في الصفحة الافتراضية لـ Arabia.io تطوير فرز وعرض المواضيع في الصفحة الافتراضية لـ Arabia.io
ساعة غوغل لاتحل المشكلة! | هايبرستيج ساعة غوغل لاتحل المشكلة! | هايبرستيج
أول قـالـبHTML5 قمـت بعمـلة بعـد أنتهـائـي من تعلـم تطوير الويـب. أول قـالـبHTML5 قمـت بعمـلة بعـد أنتهـائـي من تعلـم تطوير الويـب.

الروابط المختصرة    سياسة الخصوصية    شروط الإستخدام    من أنا    من نحن    الأسئلة الشائعة    موضوع عشوائي    اتصل بنا   
                           
Developed by : MJ7.org