Cluster Module vs Worker Threads
Cluster: Fabrikanın aynısından yan yana 4 tane kurmak. Worker Threads: Tek fabrikanın içine 4 işçi almak.
5 Yaşındaki Çocuğa Anlatır Gibi (Analoji)
Cluster: Bilgisayardaki her CPU çekirdeği için bağımsız bir Node.js kopyası açmaktır (hafıza paylaşmazlar). Worker Thread: Tek bir Node.js kopyası içinde paylaşımlı hafıza (SharedArrayBuffer) ile çalışan işçilerdir.
Teknik ve Profesyonel Tanımı
Cluster modülü, işletim sistemi seviyesinde "fork" işlemi yaparak her CPU çekirdeğine bir Node.js süreci (Process) açar; port paylaşımı yapar. Worker Threads ise tek bir süreç içinde birden fazla thread açarak ağır CPU işlerini paralel koşturur.
Mülakatta Ne Demelisin? (Kurtarıcı Altın Cevap)
"Cluster modülü çok çekirdekli sunucularda HTTP isteklerini process düzeyinde yük dengelemek (Load Balancing) için kullanılır. Worker Threads ise tek bir process içinde CPU-yoğun matematiksel hesaplamaları Event Loop'u kilitlemeden paralel yürütmek için kullanılır."
Node.js (NestJS / Express) Kod Örneği
// Cluster ile Çok Çekirdek Kullanımı:
import cluster from 'node:cluster';
import os from 'node:os';
if (cluster.isPrimary) {
const cpus = os.cpus().length;
for (let i = 0; i < cpus; i++) cluster.fork();
} else {
// Her worker kendi HTTP sunucusunu ayağa kaldırır:
app.listen(3000);
}
Cluster kullandığınızda bellek (RAM) paylaşılmaz! Bir process'teki değişkeni diğerinde okuyamazsınız (Redis gerekir).
İlgili Diğer Konular
Node.js Event Loop & Libuv Çalışma Evreleri
Tek bir iş parçacığının (Single Thread) binlerce isteği hiç...