Bosh sahifa Wiki Scheduler

Scheduler

Scheduler — bajarilishi kerak bo‘lgan ishlarni vaqt, ustuvorlik, resurs va siyosatga ko‘ra navbatga qo‘yib, execution muhitiga tayinlaydigan tizim komponentidir. Atama operatsion tizim CPU scheduleri, batch job scheduleri, container orchestrator va application task rejalashtiruvchisida turli darajadagi vazifani bildiradi.

Vaqtga asoslangan rejalashtirish

Cron scheduler ishni ma’lum minute, soat yoki hafta kunida ishga tushiradi. Fixed interval oxirgi boshlanish yoki tugashdan keyingi davrni, calendar schedule esa aniq lokal vaqtni ifodalashi mumkin. Vaqt zonasi va daylight saving o‘zgarishi bir ishning takror yoki o‘tkazib yuborilishiga sabab bo‘lishi mumkin.

Scheduler outage vaqtida o‘tgan ishlar uchun catch-up siyosati belgilanadi. Barcha qolgan runlarni birdan ishga tushirish thundering herd yaratishi mumkin. Misfire policy oxirgi runni bajarish, o‘tkazib yuborish yoki cheklangan miqdorda tiklashni belgilaydi.

Resource scheduling

Cluster scheduler job yoki podning CPU, memory, GPU, storage va placement talabini ko‘rib, mos node tanlaydi. Request resurs rezervi uchun, limit esa maksimal foydalanish uchun ishlatilishi mumkin. Affinity obyektlarni birga, anti-affinity esa alohida failure domainlarga joylashtiradi.

Taint va toleration maxsus nodelarga faqat ruxsat etilgan workloadni qo‘yadi. Priority va preemption yuqori muhim ishga joy ochishi mumkin, ammo past priority joblar starvationga uchramasligi uchun quota va fairness kerak.

Joblar ready, running, blocked, succeeded yoki failed kabi holatlarga ega bo‘ladi. Scheduler dependency bajarilmagan ishni kutadi, retry uchun keyingi vaqtni hisoblaydi va parallelism limitini saqlaydi. Priority queue kritik ishni oldinga oladi, lekin faqat priority ishlatilsa oddiy ishlar cheksiz kutishi mumkin.

Fair scheduling tenant yoki task groupga ulush beradi. Weighted fair policy muhim guruhga ko‘proq, boshqalarga minimal imkon ajratadi. Deadline scheduler vaqt chegarasini hisobga oladi, ammo bajarish davomiyligi noto‘g‘ri baholansa deadline baribir buziladi.

Taqsimlangan muhit

Bir nechta scheduler instance bir jobni ikki marta olmasligi uchun leader election, lease yoki atomik queue claim ishlatiladi. Exactly-once executionni umumiy distributed tizimda kafolatlash qiyin; scheduler at-least-once yetkazishi va task idempotent bo‘lishi ko‘p uchraydi.

Worker heartbeat va lease tugashi yo‘qolgan ishni qayta navbatga qo‘yadi. Eski worker aslida ishlashda davom etsa duplicate side effect paydo bo‘lishi mumkin. Fencing token eski egaga keyingi yozishni taqiqlashga yordam beradi.

Kuzatuv

Queue depth, scheduling latency, run duration, retry, deadline miss va resource utilization asosiy metrikalardir. Job logi schedule vaqti, actual start, worker, attempt va yakuniy statusni saqlaydi. Correlation ID downstream amallarni bir run bilan bog‘laydi.

Scheduler ishni qabul qilgani biznes natija bajarilganini anglatmaydi. End-to-end monitoring task outcome va side effectni tekshiradi. Dead-letter queue doimiy xatolarni alohida tahlilga chiqaradi.

Backfill

Tarixiy sana oralig‘ini qayta hisoblash backfill joblari orqali bajariladi. Ular odatiy production ishlarini resursdan siqib chiqarmasligi uchun alohida queue, quota va past priority olishi mumkin. Bir interval ikki marta ishlansa natija dublikat bo‘lmasligi uchun partition key va idempotent write ishlatiladi.

Dependency graph

DAG scheduler tasklar orasidagi yo‘nalgan bog‘lanishni saqlaydi. Upstream muvaffaqiyatli tugamaguncha downstream boshlanmaydi. Cycle mavjud bo‘lsa schedule bajarilmaydi. Sensor yoki external dependency cheksiz kutmasligi uchun timeout va failure policyga ega. Partial rerun qaysi downstream natijalarni invalid qilishini hisobga oladi.

Clock va leader

Taqsimlangan scheduler node soatlari NTP bilan sinxronlanadi, ammo wall clock orqaga siljishi mumkin. Lease va duration uchun imkon qadar monotonic clock ishlatiladi. Leader almashganda schedule cursor persistent store dan tiklanadi va bir triggerning ikki marta chiqarilishi idempotency bilan boshqariladi.

Bog‘liq tushunchalar

Job, Queue, Worker, Cron, Priority, Allocation, Idempotence