Node.js Cluster Yapısı Oluşturma

Node.js'de küme modülü, sunucu bağlantı noktalarını paylaşan bir alt işlemler kümesi oluşturmanıza olanak tanır. Bu, birden fazla CPU çekirdeğinden yararlanarak bir Node.js uygulamasının performansını ve ölçeklenebilirliğini geliştirmek için kullanılabilir.

Cluster modülü, Node.js'de yerleşiktir ve modül istenerek ve yöntem cluster çağrılarak cluster.fork() kullanılabilir. Bu, ana işlemle sunucu bağlantı noktasını paylaşan yeni bir alt işlem oluşturur. Alt süreç daha sonra gelen istekleri işleyebilirken, üst süreç alt süreçleri yönetir ve gelen istekleri bunlar arasında dağıtır.

Küme modülünün kullanılması, bir Node.js uygulamasının birden çok CPU çekirdeğinden yararlanmasına izin vererek performansını ve ölçeklenebilirliğini iyileştirebilir. Ayrıca, alt işlemlerden biri çökse bile istekleri sunmaya devam etmesine izin vererek uygulamayı daha dayanıklı hale getirebilir.

Genel olarak küme modülü, Node.js uygulamalarının performansını ve ölçeklenebilirliğini geliştirmek için yararlı bir araçtır. Sunucu bağlantı noktalarını paylaşan ve gelen istekleri paralel olarak işleyebilen bir alt işlemler cluster oluşturmanıza olanak tanır.

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
Girl Eating Pizza

If you're preparing for a senior Node.js developer position, it's important to be ready for technical interview questions that will test your knowledge of Node.js and its related technologies. In this

Girl Eating Pizza

Forms are an essential element of web development. They allow users to submit information and interact with web applications. However, users can sometimes make mistakes or input incorrect data, which

Girl Eating Pizza

As more and more websites become image-heavy, web developers are constantly looking for ways to optimize page load times without compromising the user experience. One of the most effective methods of

Girl Eating Pizza

Asynchronous JavaScript code is becoming more and more prevalent in modern web applications. However, asynchronous code can be tricky to debug and maintain, especially when it comes to handling errors

Girl Eating Pizza

JavaScript mülakatları genellikle adayların dilin temel kavramlarını, işlevleri, obje yönelimli programlama, asenkron programlama ve diğer ilgili konuları anlayıp anlamadığını ölçmek için kullanılır.

Girl Eating Pizza

JavaScript'de dizi, farklı veri tiplerindeki öğeleri depolamak için kullanılan bir veri yapısıdır. Diziler, özellikle programlama ve web geliştirme alanında oldukça yaygın bir şekilde kullanılır. Bu y

Girl Eating Pizza

JavaScript, web geliştirme alanında en sık kullanılan programlama dillerinden biridir. Bu dil, özellikle değişkenlerin ve veri yapılarının kullanımı konusunda oldukça esnektir. Bu esneklik, JavaScript

Girl Eating Pizza

MongoDB, NoSQL veritabanı sistemlerinden biridir ve JSON benzeri belgeleri depolamak için kullanılır. Veritabanındaki belgeleri bulmak ve filtrelemek için "find" metodunu kullanabilirsiniz. Bu yazıda,

Girl Eating Pizza

Backend geliştirme, bir web uygulamasının işlevselliğini ve performansını belirleyen önemli bir unsurdur. Bu alanda kullanılabilecek birçok teknoloji var, ancak en popüler olanları Node.js ve BUN (Bac