Zamanlayıcı ve Arka Plan Görevleri
(Bölüm: Operasyonlar ve Yönetim)
1) Amaç
Zamanlayıcı ve arka plan görevleri, platformun kullanıcı dışı çalışmasını sağlar: periyodik hesaplamalar, eser yayınları, temizleme ve kuyruk tekrarları. Hedefler determinizm, hata toleransı ve denetlenebilirliktir.
2) Görev taksonomisi
Zaman tabanlı: zamanlanmış (cron/takvim): RTP pencerelerini temizleme, kapatma, yükleme, arşivleme.
Olay odaklı: veriyolundan tetikleyiciler (PaymentsSettled, PriceListUpdated).
Tek seferlik/Ad-hoc: TTL ile tek seferlik jablar.
Uzun süren: Backoff/sagas, akış kompaktları.
Bakım: anahtar rotasyonları, yeniden paketleme, indeksler, önbellek ısınma.
3) Mimari (referans)
Bileşenler:1. Zamanlayıcı (kontrol düzlemi): programları, CAL/cron, bakım pencereleri, zaman dilimleri, sınırlayıcılar depolar.
2. Dispatcher: Plan - kuyruk (öncelik/kiracı/bölge başına), son tarihler, idempotent anahtarları koyar.
3. İşçiler: görev havuzları için statik/otomatik ölçeklendirme; Kalp atışları, kiralamalar.
4. Kuyruk/Veri Yolu: FIFO/öncelik, DLQ, ertelenmiş mesajlar.
5. Soyunma/Koordinasyon: dağıtılmış kilitler (kiralama), lider seçimi (Raft/ZK/Konsolos).
6. Vault/KMS: JIT sırları, kısa TTL.
7. Gözlemlenebilirlik: izler/metrikler/günlükler, gösterge panoları, uyarılar.
8. Denetim/WORM: değişmez yürütme makbuzları, Merkle dilimleri.
Desenler: outbox/CDC, idempotency, tazminat (sagas), geri basınç, devre kesiciler.
4) Programlar: cron ve takvimler
Cron v3: saniye/dakika/saat/gün/ay/gün-hafta; "/5 "desteği, aralıklar, listeler.
Takvimler/istisnalar: iş takvimi, sessizlik pencereleri, tatiller/DST.
Zaman dilimleri: görevde 'tz' tutun; Kiracının yerel saat başlangıcı.
Çok bölgeli: Bölge başına çizelgelerin kopyaları veya drenaj/yeniden seçim ile "lider bölge + takipçiler".
5) Kuyruklar, öncelikler, SLA'lar
Öncelikli sınıflar: P0 (kritik), P1, P2, P3; Bireysel işçi havuzları.
SLA/son tarihler: 'must _ start _ by', 'must _ finish _ by'; Skip - eskalasyon/retray.
Kotalar ve adalet: Görevler/min/kiracı için kapaklar, "patlamalar" için belirteçler, gürültülü komşular izolasyonu.
Gecikme/görünürlük zaman aşımı.
6) Rekabetçilik ve blokajlar
Kiralamalar: otomatik uzatma (kalp atışı) ile işin kiralanması; Zaman aşımı ile - iptal.
Mutex/semafores: kaynak başına (örneğin, "price list x writes only one worker").
Sharding: 'kiracı/bölge/hash (anahtar)'ile; Önbellek ve veri lokalitesi için yapışkan yönlendirme.
Lider seçimi: Bir lider "sistem" işlerini yayınlar (örneğin,'tüm RTP pencerelerini kapat "), takipçiler - sıcak bekleme.
7) Güvenilirlik: Retrai, idempotency, deadup
Idempotent anahtarı: '(task_type, business_id, pencere)'; tekrarlar - aynı makbuz.
Retrai: üstel geri çekilme + jitter, denemelerin sınırı, hata stratejisi (yeniden deneme/iptal/telafi).
Zehir hapı: N arızalarından sonra DLQ'ya hızlı transfer, sahibine uyarı.
Dedup: TTL pencerelerinde görülen önbellek (bellek içi + KV).
Tam olarak bir kerelik etkiler: Işlem günlüğü/makbuzları yoluyla yan etkilerin doğrulanması.
8) Uzun ve ağır görevleri yönetmek
Gruplama: gruplara ayrılma, kontrol noktaları/devam.
Zaman-boks: CPU/IO/ağ çıkış sınırlaması; Kaydedilen ilerleme ile kesme.
Sagalar/tazminatlar: Servisler arası adımlar için "geri al" semantiği.
Eşzamanlılık-büyük harfleri: tür/kiracı/bölge başına eşzamanlı görevlerin sınırları.
9) Gözlemlenebilirlik ve metrikler
İzler: 'trace _ id', saga adımları, dış çağrılar.
Metrikler (SLI):- Lag to start, kuyruk (uzunluk, yaş p95).
- Başarı Oranı, hata oranı, yeniden deneme oranı.
- Gecikme süresi p50/p95, tamamlama süresi.
- 1k görev başına maliyet, çıkış/giriş.
- DLQ oranı, zehir hapı oranı.
- P0 başlangıç ≤ 60 s, P1 ≤ 5 dk; Başarı ≥ 99. 5%; DLQ ≤ 0. 1%; Tazelik ≤ 30 s p95.
10) Denetim ve kanıtlanabilirlik
Makbuzlar: Başlangıç/başarı/hata için 'receipt _ hash', kritik türler için DSSE imzaları (ödemeler, fiyat listeleri, RTP).
WORM: yürütme günlüklerini ve görev manifestolarını depolamak.
Gözetim zinciri: Programı teslim eden/onaylayan/değiştiren; SoD kontrol ediyor.
11) Güvenlik ve erişim
RBAC/ABAC/ReBAC: yaratan/onaylayan/çalıştıran; SoD: "Ödeme oluştur" ≠ "onayla".
JIT sırları: işçi, sorunun kapsamı üzerinde kısa bir TTL ile belirteçler ister.
İzolasyon: kiracı/bölge/ızgara başına işçi havuzları; sandbox-execution.
PII hijyeni: maskeleme/tokenizasyon, birincil kayıt yasağı.
12) FinOps ve maliyet
Hesaplama/depolama/çıkış için bütçeler/sınır uyarıları.
Kuyruklar ve SLO tarafından Autoscale işçiler.
Depolama sınıfları: sıcak (7-30 gün) - OLAP (6-24 ay) - arşiv.
Maliyet bilincine sahip planlama: "ucuz saatlerde" başlatma penceresi, çıkış sınırları.
13) Veri modeli (basitleştirilmiş)
14) API sözleşmeleri (yönetim/entegrasyon)
'POST/schedules' - bir zamanlama oluşturun (cron/cal, tz, windows).
'POST/işler' - ad-hoc koymak; 'job _ id', 'receipt _ hash' döndürün.
'GET/jobs/{ id}' - durum/log/makbuzlar.
'POST/jobs/{ id }/cancel' - tazminat ile iptal et.
'GET/kuyruklar/istatistikler' - uzunluklar, gecikmeler, p95.
Вебхуки: 'JobStarted', 'JobSucceed', 'JobFailed', 'JobDropToDLQ', 'SLOViolated'.
15) Playbook'lar (tipik senaryolar)
Retry-storm: global geri-kapamayı etkinleştir, bağımlılık zaman aşımlarını yükselt, devre kesiciyi etkinleştir, partileri böl.
DLQ çığ: alımı durdurmak, DLQ ayrıştırma öncelik, tampon yeni görevler.
Lider düştü: yeniden seçim, idempotency tarafından "çift yayınların" doğrulanması, denetim.
Hung sağlayıcı (PSP/KYC): rezerv rota, yoklama/webhook sıklığını azaltmak, karantinaya transfer işlemleri.
Sızan işçi sırları: anahtar iptali, rotasyon, 30 gün içinde "anormal" lansmanları arama, haklar incelemesi.
16) iGaming/fintech'in özgüllüğü
Ödemeler/ödemeler: makbuzlarla asenkron işler, "gri" işlemlerin karantinası, veri tekilleştirme ile kuyrukların tekrarı.
RTP pencereleri/sınırları: takvim kapanışı, gözlemlenen vs teorik RTP, sürüklenirken otomatik duraklatma promosyonu.
Fiyat listeleri/FX/Vergi: zamanlanmış yayınlar, artifact sürümleri, önbellek kuvveti sakatlığı.
İştirakler: Dönüşümlerin uzlaştırılması, dedup web kitapları, eylemler/imzalar, emanet anlaşmazlıkları.
17) Kalite metrikleri (örnek set)
Zamanlama Uyumu: Pencerede başlayan görevlerin payı %99 ≥.
Kuyruk Gecikme p95: P0 ≤ 60 c, P1 ≤ 5 dk.
Başarı/Yeniden Deneme/DLQ Oranı: ≥ 99. 5% / ≤ 0. 4% / ≤ 0. 1%.
Idempotency Hataları: ≤ 0. 01%.
Cost/1k işleri ve Çıkış/iş - bütçe dahilinde.
Denetim Bütünlüğü: Makbuzlarla %100 kritik görevler.
18) RACI
19) Uygulama kontrol listesi
- Görev sınıflarını, öncelikleri ve SLA'ları vurgulayın; Takvimleri ve zaman dilimlerini tanımlayın.
- Lider Seçme ve Sharding ile Zamanlayıcı/Dispatcher/Kuyruk/İşçiler dağıtın.
- Idempotency, retrays, DLQ, telafiler (sagas) tanıtmak.
- Çalışanlar için RBAC/ABAC/ReBAC, SoD ve JIT sırlarını yapılandırın.
- İzleri/metrikleri/günlükleri, gösterge tablolarını ve uyarıları etkinleştir; SLO и hata bütçesi.
- İmzalı faturalar (DSSE) ve kritik türler için WORM günlükleri.
- Otomatik ölçeklendirme ve kapak uyarıları (hesaplama/depolama/çıkış).
- Playbooks: retry-storm, DLQ çığ, lider hatası, sağlayıcı bozulması.
- Testler: Oyun kitabı başına GameDay, gecikme/hata enjeksiyonları.
- Programların düzenli incelemeleri, kuyruk blokajları ve otomasyon ROI'leri.
20) SSS
Cron neden yeterli değil?
Kuyruklar, idempotency, kilitler ve denetim olmadan, cron çökmeler ve zaman dilimleri üzerinde bozulur.
Zamana dayalı ve olay odaklı birleştirilebilir mi?
Evet: cron - yakalamak için sigorta; Olaylar - reaktivite için.
"Tam olarak bir kez" nasıl elde edilir?
Anahtar tekilleştirme, işlem etkileri günlüğü, makbuzlar ve idempotent yan etkiler.
"Uzun" işlerle ne yapmalı?
Yığın, kontrol noktaları, zaman-boks, kesme ve devam yeteneği.
Bütçeyi "yememek" nasıl?
Kuyruklarda ve SLO'larda otomatik ölçeklendirme, ağır işler için ucuz saatler, sert kapaklar çıkış/hesaplama.
Özet: Zamanlayıcı ve arka plan görevleri platformun üretim boru hattıdır. Programları ve kuyrukları, boşlukları, kilitleri ve gözlemlenebilirliği yerleştirerek, makbuzlar/denetimler, kiracı izolasyonu ve FinOps kontrolü ekleyerek, herhangi bir bölgede ve yükte öngörülebilir son tarihler, hızlı kurtarma ve yasal olarak tutarlı işlemler elde edersiniz.