Alt Süreçler
Node.js’te Alt Süreçler, CPU yoğun görevleri veya zaman alan operasyonları ana süreçten bağımsız şekilde yürütmenizi sağlayan güçlü bir özelliktir. Alt süreçler, Event Loop’un bloklanmasını önleyerek uygulamanızın yanıt verme hızını artırır ve büyük veri işlemleri, hesaplamalar veya üçüncü taraf komut satırı araçlarının çalıştırılması gibi senaryolarda performansı optimize eder. Node.js, fork, spawn ve exec gibi yöntemlerle alt süreçler oluşturmanıza olanak tanır ve her biri farklı kullanım senaryolarına uygun esneklik sağlar.
Bu eğitimde, Node.js’in temel sözdizimi, veri yapıları, algoritmalar ve OOP prensiplerini kullanarak alt süreçleri etkin şekilde nasıl oluşturacağınızı, yöneteceğinizi ve süreçler arası iletişimi sağlayacağınızı öğreneceksiniz. Ayrıca hata yönetimi, performans optimizasyonu ve güvenlik önlemleri gibi ileri seviye uygulamalar da ele alınacaktır. Öğrenciler, gerçek projelerde paralel işlemler yürütmeyi ve kaynak kullanımını en verimli şekilde optimize etmeyi öğreneceklerdir. Alt süreçler, yazılım geliştirme ve sistem mimarisi bağlamında modüler ve ölçeklenebilir yapılar oluşturmak için kritik bir araçtır.
Temel Örnek
textconst { fork } = require('child_process');
// Alt süreç oluşturma
const altSurec = fork('./gorevAltSurec.js');
// Ana süreçten alt sürece mesaj gönderme
altSurec.send({ gorev: 'topla', sayilar: [1, 2, 3, 4, 5] });
// Alt süreçten gelen mesajı dinleme
altSurec.on('message', (sonuc) => {
console.log('Alt süreçten gelen sonuç:', sonuc);
});
// Hataları yönetme
altSurec.on('error', (err) => {
console.error('Alt süreç hatası:', err);
});
// gorevAltSurec.js
process.on('message', (msg) => {
const toplam = msg.sayilar.reduce((a, b) => a + b, 0);
process.send(toplam);
});
Bu örnek, fork metodunu kullanarak bağımsız bir alt süreç oluşturmayı gösterir. Ana süreç, sayıları toplamak için alt sürece veri gönderir ve alt süreç sonucu ana sürece geri gönderir. process.on('message') ve altSurec.send kullanımı ile süreçler arası güvenli iletişim sağlanır. error olayı ile hata yönetimi uygulanır; böylece alt süreçteki hatalar ana süreci etkilemez. Bu örnek, alt süreçlerin modülerlik, güvenli veri alışverişi ve Node.js’te iyi uygulama örnekleri için temel bir şablon sunar.
Pratik Örnek
textconst { fork } = require('child_process');
const path = require('path');
const gorevler = ['gorev1', 'gorev2', 'gorev3'];
const sonucListesi = [];
gorevler.forEach((gorevAdi, index) => {
const altS = fork(path.join(__dirname, 'worker.js'));
altS.send({ gorev: gorevAdi, data: Array.from({ length: 1000 }, (_, i) => i + 1) });
altS.on('message', (sonuc) => {
sonucListesi[index] = sonuc;
console.log(`Alt süreç ${gorevAdi} tamamlandı:`, sonuc);
if (sonucListesi.filter(Boolean).length === gorevler.length) {
console.log('Tüm alt süreçler tamamlandı:', sonucListesi);
}
});
altS.on('error', (err) => {
console.error(`Alt süreç ${gorevAdi} hatası:`, err);
});
});
// worker.js
process.on('message', (msg) => {
const toplam = msg.data.reduce((acc, val) => acc + val, 0);
process.send(toplam);
});
Bu pratik örnek, birden fazla alt sürecin paralel çalıştırılmasını ve her birinin bağımsız olarak veri işlemesini gösterir. Her alt süreç kendi verisini işleyip sonucu ana sürece gönderir. reduce fonksiyonu büyük veri setlerini verimli şekilde toplamak için kullanılmıştır. worker.js ile görevlerin ayrılması, kodun bakımını kolaylaştırır ve okunabilirliği artırır. Hataların yönetimi, sistemin güvenilirliğini artırır ve paralel görevlerde kritik bir konudur.
Alt süreçler ile çalışırken en iyi uygulamalar, eş zamanlı alt süreç sayısını sınırlamak, hataları doğru yönetmek, bellek optimizasyonu sağlamak ve süreçleri gerektiğinde yeniden kullanmaktır. Yaygın hatalar arasında alt süreçlerin açık kalması nedeniyle bellek sızıntıları, hataların göz ardı edilmesi ve verimsiz algoritmalar bulunur. Debug için loglama ve mesaj takibi önemlidir. Performans optimizasyonu için süreç havuzları ve asenkron algoritmalar kullanılmalıdır. Güvenlik açısından, alt süreçlerde gelen verilerin doğrulanması ve güvenilmeyen kodların çalıştırılmaması gerekir.
📊 Referans Tablosu
Node.js Element/Concept | Description | Usage Example |
---|---|---|
fork | Bağımsız alt süreç oluşturur | const altS = fork('./worker.js'); |
process.send | Alt sürece veri gönderir | altS.send({ gorev: 'topla', sayilar: [1,2,3] }); |
altS.on('message') | Alt süreçten mesaj alır | altS.on('message', msg => console.log(msg)); |
altS.on('error') | Alt süreç hatalarını yönetir | altS.on('error', err => console.error(err)); |
reduce | Büyük veri setlerini toplamak için | const toplam = data.reduce((a,b)=>a+b,0); |
Alt süreçler, Node.js’te paralel işlem yürütmeyi ve Event Loop’un bloklanmasını önlemeyi sağlar. Bu modül sayesinde yüksek performanslı ve ölçeklenebilir uygulamalar geliştirmek mümkündür. Bir sonraki adımlar, süreç havuzları, cluster modülü ve ileri seviye asenkron tasarım desenlerini öğrenmek olmalıdır. Kaynaklar olarak Node.js resmi dokümantasyonu, açık kaynak projeler ve topluluk rehberleri kullanılabilir.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek