Arka Plan İşi
- İngilizcesi
- Background Job
- Türkçe karşılığı
- arka plan görevi
- Okunuşu
- bekgraund cob
Günlük kullanımda iki ad da yaygın.
Kısaca
Arka plan işi, bir sunucunun normal istek-yanıt döngüsünün dışında çalıştırdığı görevdir; e-posta gönderme gibi yavaş işler kullanıcıları bekletmez.
Arka plan işi (background job) nedir?
Arka plan işi, bir uygulamanın kullanıcı yanıt beklerken yapmak yerine daha sonra ya da başka bir yerde yapılmak üzere devrettiği iştir. Örneğin bir kullanıcı kaydolduğunda web sunucusu hesabı kaydedip hemen yanıt verir; hoş geldin e-postasını ise bir an sonra bir arka plan işi gönderir. Bu, işin arkasındaki asıl iş saniyeler ya da dakikalar sürse bile sayfaları ve API yanıtlarını hızlı tutar.
Olağan kurulum üç parçadan oluşur. Web uygulaması bir iş oluşturur; bu, bir ad ve kullanıcı kimliği gibi argümanlar içeren küçük bir kayıttır ve çoğunlukla Redis'te, bir veritabanı tablosunda ya da bir mesaj aracısında tutulan bir kuyruğa konur. Ayrı worker süreçleri işleri alır, çalıştırır ve tamamlandı olarak işaretler; başarısız işleri giderek artan gecikmelerle yeniden dener ve sürekli başarısız olanları bir geliştirici incelesin diye bir kenara ayırır.
Bir kuru temizlemeciye kıyafet bırakmak gibidir: hemen bir fiş alıp ayrılırsınız, siz başka işlerle uğraşırken temizlik arka tarafta yapılır. Tipik arka plan işleri arasında e-posta ve bildirim göndermek, yüklenen görselleri yeniden boyutlandırmak, PDF raporları oluşturmak, büyük dosyaları içe aktarmak ve yavaş üçüncü taraf API'lerini çağırmak yer alır. Yaygın açık kaynak kütüphaneler arasında Ruby için Sidekiq, Python için Celery ve Node.js için BullMQ bulunur.
Arka plan işleri sıklıkla cron job'larla ve mesaj kuyruklarıyla karıştırılır. Cron job sabit bir zamanlamayla saat tarafından başlatılır; arka plan işi ise genellikle bir kullanıcı eylemi gibi bir olayla tetiklenir ve mesaj kuyruğu birçok iş sisteminin üzerine kurulduğu altyapıdır. Yeniden denemeler bir işin birden fazla kez çalışabileceği anlamına geldiğinden, iş işleyicileri idempotent olmalıdır; yani iki kez çalıştırmak bir kez çalıştırmakla aynı etkiyi yaratmalıdır.
Önemli noktalar
- Arka plan işleri yavaş işi istekten çıkarır; kullanıcılar hızlı yanıt alır.
- Uygulama bir işi kuyruğa ekler; ayrı worker süreçleri onu sonra çalıştırır.
- Başarısız işler, çoğunlukla exponential backoff ile yeniden denenir.
- Yeniden denemeler işleri birden fazla kez çalıştırabileceğinden işler idempotent olmalıdır.
- Cron job'lar zamanla tetiklenir; arka plan işleri genellikle olaylarla tetiklenir.
Örnek
import { Queue, Worker } from "bullmq"; // stores jobs in Redis
const connection = { host: "localhost", port: 6379 };
const emailQueue = new Queue("emails", { connection });
// In the web app: enqueue the job and respond immediately
app.post("/signup", async (req, res) => {
const user = await createUser(req.body);
await emailQueue.add("welcome", { userId: user.id }, { attempts: 3 });
res.status(201).json(user);
});
// In a separate worker process: run each job as it arrives
new Worker("emails", async (job) => {
await sendWelcomeEmail(job.data.userId);
}, { connection });Sık sorulan sorular
Arka plan işi ile cron job arasındaki fark nedir?
Cron job, her gece 02.00 gibi sabit bir zamanlamayla çalışır. Arka plan işi ise genellikle bir kullanıcının dosya yüklemesi gibi bir olayla isteğe bağlı olarak oluşturulur ve bir worker boşalır boşalmaz çalışır; yine de birçok iş sistemi zamanlanmış işleri de destekler.
Arka plan işlemede worker nedir?
Worker, bir kuyrukta işleri bekleyen, onları çalıştıran ve başarılı olup olmadıklarını bildiren ayrı bir süreçtir. İşleri daha hızlı işlemek için birkaç worker'ı paralel çalıştırabilirsiniz.
Arka plan işini ne zaman kullanmalıyım?
İş bir saniyenin küçük bir kesrinden uzun sürüyorsa, yavaş bir dış servise bağlıysa ya da kullanıcı yanıt almadan önce bitmesi gerekmiyorsa kullanın. E-posta göndermek, yüklemeleri işlemek ve rapor oluşturmak klasik örneklerdir.
İlgili sayfalar
- Mesaj KuyruğuBackend ve API'ler, s. 28Mesaj kuyruğu, bir servisten gelen mesajları bir başkası işlemeye hazır olana kadar saklayan ve sistemin parçalarını eşzamansız çalıştıran bir bileşendir.
- Cron JobBackend ve API'ler, s. 8Cron job, beş alanlı bir cron ifadesiyle tanımlanan ve her gece 02.00 gibi tekrarlayan bir zamanlamayla otomatik çalışan bir komut veya betiktir.
- IdempotencyBackend ve API'ler, s. 23Idempotency, bir işlemin bir kez de çalışsa çok kez de çalışsa aynı sonucu üretmesi özelliğidir; böylece bir isteğin yanlışlıkla tekrarlanması güvenli olur.
- EşzamanlılıkProgramlamanın Temelleri, s. 19Eşzamanlılık, bir programın birden çok görevde örtüşen zaman dilimlerinde ilerleyebilme yeteneğidir; örneğin birçok kullanıcıya aynı anda hizmet vermek gibi.
- WebhookBackend ve API'ler, s. 47Webhook, bir uygulamanın, tamamlanan bir ödeme gibi belirli bir olay gerçekleştiği anda sizin verdiğiniz bir URL'ye otomatik olarak gönderdiği HTTP isteğidir.
- ServerlessDevOps ve Bulut, s. 46Serverless, sağlayıcının kodu talep üzerine çalıştırıp sunucuları yönettiği, otomatik ölçeklediği ve yalnızca gerçek kullanıma ücret aldığı bulut modelidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin