Node.js Cluster Yapısı Oluşturma

Node.js, tek bir iş parçacığı kullanarak çalışmakta, çok çekirdekli sistemlerden yararlanmak için Node.js cluster modülünü işin içine dahil etmemiz gerekmektedir.

Node.js cluster modülü, sunucu portu paylaşımlı yaparak çocuk iş parçacıkları oluşturup bunların da aynı port üzerinden işlem yapmasını sağlamaktadır. Böylece sistemin diğer çekirdeklerini de kullanılmasını sağlar.

Aşağıdaki yer alan örnekte, sunucunun portunu çocuk iş parçacıklarına paylaştırarak, çalışan Node.js sunucu kod parçası yer almaktadır.

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length; //çekirdek sayısı

if (cluster.isMaster) {
  // bütün çekirdekler için çocuk oluşturma
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();    //çocuk iş parçacığı oluşturma
  }

  //iş parçacığı çıkış yaptığında
  cluster.on('exit', (worker, code, signal) => {
      if (signal) {
        console.log(`iş parçacığı durduruldu: ${signal}`);
      } else if (code !== 0) {
        console.log(`İş parçacığı hatayla karşılaştı: ${code}`);
      } else {
        console.log('iş parçacığı çalışıyor');
      }
  });
} else {
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('Merhaba Dünya\n');
  }).listen(3000);
}

Bu kod parçası sunucunun çekirdek sayısı kadar çocuk iş parçacığı oluşturup, 3000 portunu paylaşımlı olarak kullanacaklardır.

Tek çekirdek ve çok çekirdek kullanan sunucunun saniyede atılan istek sayılarına kaç adet cevap verdiğinin karşılaştırılması aşağıda verilmiştir. ( yüksek en iyisidir )

Eş Zamanlı Bağlantı Sayısı (connections) 1 2 4 8 16
Tek Çekirdek (request/second) 654 711 783 776 754
8 Çekirdek (request/second) 594 1198 2110 3010 3020

Yorumlar

Bu gönderi için yorum yapılmadı.