CodeBlanks Logo Icon CodeBlanks

Graceful reload

Cluster ile graceful reload öğrenirsin.

Graceful reload

Graceful reload (kesintisiz yeniden yükleme), sunucuyu kapatmadan işçileri tek tek yeniden başlatmaktır. Amaç: yeni kodu canlıya alırken bağlantı kopması yaşamamak.

Yaygın yöntem: ana sürece SIGUSR2 sinyali gönderilir. Ana süreç sinyali yakalar, her işçi için önce yeni bir işçi başlatır, sonra eski işçiye worker.disconnect() çağrısı yapar. Eski işçi bekleyen istekleri bitirip kapanır.

exit olayı

cluster.on("exit") olayı, bir işçi çöktüğünde veya kapatıldığında tetiklenir. Graceful reload ve otomatik yeniden başlatma için temel araçtır.

İşleyici iki parametre alır: worker ve code (çıkış kodu). İşçi ölünce cluster.fork() çağırarak yerine yenisini başlatırsın. Bu, uygulamayı çökmelere karşı dayanıklı yapar. Çıkış kodu sıfırdan farklıysa beklenmeyen bir çöküş olduğunu anlarsın.

Uygulama exit işleyicisini kaydet

cluster üzerinde "exit" olayını dinle; işleyici içinde cluster.fork() çağır. En son "reload hazır" yaz.

Başlangıç kodu

index.js
// cluster modülünü içe aktar

// exit olayını dinle, fork çağır

// "reload hazır" yaz

Örnek çözüm

index.js
const cluster = require("cluster");
cluster.on("exit", () => { cluster.fork(); });
console.log("reload hazır");

Beklenen çıktı

reload hazır

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Olay adını tamamla

Soru
cluster.on("____", (worker) => { cluster.fork(); })
Cevap
cluster.on("exit", (worker) => { cluster.fork(); })

Açıklama: exit olayı işçi ölünce tetiklenir.

2 Parçayı rolüne eşle

Kavram Anlamı
cluster.on("exit") İşçi ölünce tetiklenir
cluster.fork() Yeni işçi başlatır
SIGUSR2 Yeniden yükleme sinyali
graceful Kesintisiz

3 Graceful reload hangi sinyalle tetiklenir?

  • SIGUSR2 Doğru cevap
  • SIGKILL
  • SIGTERM
  • SIGINT

Açıklama: SIGUSR2 graceful reload için yaygın sinyaldır.

İleri seviye bölümündeki tüm dersler