Konu Anlatımı
Zamanlanmış Görevler ve Kuyruk Yönetimi
Bir web uygulamasında kullanıcı isteğinden bağımsız olarak yapılması gereken işler vardır: gece yedek alınması, günlük raporların hazırlanması, süresi dolan kayıtların temizlenmesi ya da çok sayıda isteğin toplu olarak işlenmesi. Zamanlanmış görev, bu işlerin sunucuda zaman ve koşula bağlı olarak otomatik başlatılmasını sağlayan yapıdır. Uzun süren işler ise isteğe bağlı akıştan ayrılarak bir iş kuyruğuna eklenir.
Görev Türleri
Görevler tek seferlik ya da periyodik olabilir. Tek seferlik görevler bir kez çalışır ve biter; periyodik görevler ise saatte bir, günde bir gibi aralıklarla tekrarlanır. Bazı görevler yalnızca uygulama başlatıldığında ya da sunucu yeniden başlatıldığında çalışacak biçimde tanımlanır. Hangi türün seçileceği, işin veri durumunu nasıl etkilediğine göre belirlenir.
Zamanlama ve Tetikleme
Görev tanımı; adı, çalışma sıklığı, başlangıç saati ve bağlı olduğu koşulu içerir. Tanımlar veritabanında saklanırsa ortamlar arasında taşınabilir ve değiştirilebilir. Görev tetiklendiğinde çalışma kaydı oluşturulur; kayıt, görevin ne zaman başlayıp bittiğini ve ne sonuç verdiğini tutar.
- Periyodik görev: belirli aralıklarla tekrarlanır.
- Tek seferlik görev: bir kez çalışır ve tamamlandı olarak işaretlenir.
- Tetikleme koşulu: kayıt eklendiğinde ya da bir alan değiştiğinde çalışır.
İş Kuyruğu
Kuyruk, uzun süren işlerin sıraya konduğu ve kapasitesi eldeği kadar işlendiği yapıdır. Kullanıcı isteği kısa bir onayla döner, iş ise kuyrukta bekler ve daha sonra işlenir. Bu ayrım, kullanıcı beklemesini azaltırken sunucunun aynı anda kaç işi taşıyabileceğini de kontrollü hâle getirir. Kuyruğun birikmesi, işlerin geliş hızının işlem kapasitesini aştığını gösteren önemli bir uyarı işaretidir.
Güvenilirlik: Tekrar Deneme ve Bekleme
Bir iş geçici bir hata nedeniyle başarısız olabilir. Bu durumda işin birkaç kez yeniden denenmesi, başarı şansını artırır. Ancak denemeler sınırsız bırakılırsa sistem sürekli aynı hatayı tekrarlayarak kaynak tüketir. Yeniden denemeler arasında bekleme konulması, hatalı işin sürekli kaynak tüketmesini engeller ve sistemin toparlanmasına zaman verir. Deneme sayısı dolduğunda iş hata listesine taşınır ve insan incelemesine bırakılır.
Tekrarlanabilirlik ve Çakışma
Zamanlama ile üretilen tekrarlar, özellikle ücretlendirme ya da sayaç güncellemesi gibi işlemlerde iki kaydın oluşmasına yol açabilir. Bu tür işlerde işin kimliği saklanır ve aynı iş kimliğiyle ikinci kez çalışma denemesi engellenir. Birden çok sunucu aynı görevi üstlenebileceğinde ise ortak bir kilit kullanılarak yalnızca bir sunucunun görevi devralması sağlanır.
Süre Sınırları ve Gözlemlenebilirlik
Takılan bir işin kuyruğu tamamen durdurması engellenmek için her işe bir süre sınırı konur; sınırı aşan iş durdurularak hata listesine alınır. Görev geçmişi tutulmazsa bir sorunun ne zaman başladığı bulunamaz. Bu nedenle başlangıç ve bitiş zamanı, süre ve sonuç durumu kaydedilir; kuyruk derinliği için bir eşik değeri tanımlanarak erken uyarı alınır. Günlüklere hassas kişisel veriler yazılmamalıdır.
Ne Öğreneceğiz
Zamanlanmış görevleri, iş kuyruğunu, yeniden deneme ve tekrar koruma kurallarını kullanarak sunucuda güvenilir arka plan işlemleri tasarlar. Bu konuda ögrenme çıktıları:
- Zamanlanmış görev kavramını açıklar.
- İş kuyruğunun çalışma mantığını ayırt eder.
- Yeniden deneme ve bekleme kurallarını uygular.
- Tekrar çalıştırıldığında etkisiz kalan işleri önler.
- Kuyruk derinliği ve süre hesaplar.
- Görev geçmişini denetim için kaydeder.
Ön Bilgi
Bu konuya başlamadan önce temel kavram ve ön koşulları kavramanız yardımcı olacaktır. Konunun çerçevesinde şu kavramlar dikkat ister:
- Zamanlanmış görev, sunucuda zaman ve koşula bağlı olarak otomatik başlatılır.
- Kuyruk, uzun işleri isteğe bağlı akıştan ayırarak yanıt süresini korur.
- Tekrarlanabilir olmayan işler iş kimliğiyle korunur.
- Yeniden deneme sayısı sınırsız bırakılmaz ve denemeler arasına bekleme konur.
- Görev geçmişi, hataların zaman çizelgesine göre incelenebilmesi için kaydedilir.
- Kuyruk derinliği için eşik değeri tanımlanarak erken uyarı sağlanır.
Basit Örnek ve Günlük Yaşam
Günlük yaşamda ve mesleki bağlamda bir uygulama:
Soru: Kuyrukta 2400 iş bekliyor ve bir tüketici saniyede 12 iş işleyebiliyor. Kuyruk boşalana kadar kaç saniye gerekir?
- Adım 1: Bekleyen iş sayısını al.
- Adım 2: Bu değeri saniyede işlenen iş sayısına böl.
- Adım 3: Sonucu saniye olarak yorumla.
Sonuç/cevap: 2400 ÷ 12 = 200 saniye bulunur.
İleri Örnek
Daha ileri bir uygulama:
Soru: Kuyrukta bekleyen iş sayısı için hangi önlem alınabilir?
- Adım 1: Normal çalışma kuyruk derinliğini ölç.
- Adım 2: Uyarı eşiğini bu değerin üzerinde belirle.
- Adım 3: Eşik aşıldığında sorunu erken bildir.
Sonuç/cevap: Eşik aşıldığında erken uyarı verilerek müdahale edilir.
Adım Adım Çözülmüş Örnek
Örnek 1: Kuyruk Bekleme Süresi konusunun adımları:
- Adım 1: Bekleyen iş sayısını al.
- Adım 2: Bu değeri saniyede işlenen iş sayısına böl.
- Adım 3: Sonucu saniye olarak yorumla.
Karşılaştırma Tablosu
| Kavram | Açıklama |
|---|
| Zamanlanmış görev, sunucuda zaman ve koş | Zamanlanmış görev, sunucuda zaman ve koşula bağlı olarak otomatik başlatılır. |
| Kuyruk, uzun işleri isteğe bağlı akıştan | Kuyruk, uzun işleri isteğe bağlı akıştan ayırarak yanıt süresini korur. |
| Tekrarlanabilir olmayan işler iş kimliği | Tekrarlanabilir olmayan işler iş kimliğiyle korunur. |
| Yeniden deneme sayısı sınırsız bırakılma | Yeniden deneme sayısı sınırsız bırakılmaz ve denemeler arasına bekleme konur. |
| Görev geçmişi, hataların zaman çizelgesi | Görev geçmişi, hataların zaman çizelgesine göre incelenebilmesi için kaydedilir. |
| Kuyruk derinliği için eşik değeri tanıml | Kuyruk derinliği için eşik değeri tanımlanarak erken uyarı sağlanır. |
Sık Yapılan Hatalar
Yeniden denemeyi sınırsız bırakmak: Sonsuz deneme, kalıcı hatada kaynak tüketimini sürdürür; deneme sayısı sınırlandırılmalı ve iş sonunda hata listesine alınmalıdır.
Denemeler arasına bekleme koymamak: Hatalı iş anında tekrar denendiğinde kaynak tüketimi sürer ve düzelme fırsatı doğmadan sistem yorar.
Tekrarlanabilir olmayan işleri korumamak: İş kimliği tutulmazsa zamanlama tetiklendiğinde aynı ücret ya da sayaç iki kez yazılabilir.
Kuyruk derinliğini izlememek: Derinlik ölçülmezse kapasite aşımı fark edilmeden sistem yavaşlar ve kullanıcı hataları artar.
Görev günlüğüne hassas veri yazmak: Kişisel verilerin günlüklere geçmesi veri koruma yükümlülüğünü ihlal eder; günlükte kimlik yerine iş bilgisi tutulmalıdır.
Özet
Zamanlanmış görevler, kullanıcı isteğinden bağımsız olarak zaman ve koşula bağlı biçimde otomatik başlatılır; periyodik ve tek seferlik olmak üzere ikiye ayrılır. Uzun süren işler ise isteğe bağlı akıştan ayrılarak iş kuyruğuna eklenir, böylece kullanıcı beklemesi kısalır ve sunucunun kapasitesi kontrollü hâle gelir. Kuyruk birikiyorsa bu, işlerin geliş hızının işlem kapasitesini aştığını gösterir. Bekleme süresi bekleyen iş sayısının saniyede işlenen iş sayısına bölünmesiyle bulunur; 2400 işlik bir kuyruk saniyede 12 iş işleyen bir tüketicide 2400 ÷ 12 = 200 saniyede boşalır. Birikim hızı gelen iş sayısından işlenenin çıkarılmasıyla hesaplanır; dakikada 300 iş gelen ve 250 iş işlenen bir sistemde 300 - 250 = 50 iş birikir ve bu değer bir saatte 3000 işe ulaşır. Güvenilirlik için yeniden deneme sayısı sınırlanır, denemeler arasına bekleme konur ve sınır dolunca iş hata listesine taşınır. Tekrarlanabilir olmayan işler iş kimliğiyle korunur, birden çok sunucuda ortak kilit kullanılır, takılan işler için süre sınırı konur ve görev geçmişi denetim için kaydedilir.
Kendini Dene
Soru: Yönerge: Bir e-ticaret uygulaması için zamanlanmış görev ve iş kuyruğu tasarımı yaz. Planda hangi işlerin zamanlanmış görev olarak, hangilerinin kuyruğa alınacağını, yeniden deneme ve bekleme kurallarını, tekrar koruma yöntemini ve gözlemlenebilirlik ölçütlerini ayrı maddeler hâlinde belirt.
Örnek cevap: Puanlama anahtarı: zamanlanmış görev örneklerinin yazılması 4 puan; kuyruğa alınacak işlerin belirlenmesi 4 puan; yeniden deneme sayısı ve aralardaki beklemenin yazılması 4 puan; iş kimliğiyle tekrar korumanın açıklanması 4 puan; kuyruk derinliği ve süre sınırı ölçütlerinin yazılması 4 puan. Toplam 20 puan. Model cevap: Gece yedekleme, rapor üretimi ve süresi dolan kayıtların temizlenmesi zamanlanmış görev olarak tanımlanır. Fatura oluşturma, toplu bildirim gönderme ve veri dışa aktarma kuyruğa alınır. Yeniden deneme üç kez yapılır ve aralarda artan beklemeler konur. Tekrarlanabilir olmayan işlerde iş kimliği tutulur. Kuyruk derinliği için eşik değeri ve her iş için süre sınırı tanımlanır.