Bosh sahifa Wiki Event Scheduler

Event Scheduler

Event Scheduler — hodisa yoki vazifani belgilangan vaqt, interval, ustuvorlik yoki dependency sharti asosida navbatga qo‘yib ishga tushiradigan dasturiy komponent.

Timer tuzilmasi

Timer scheduler deadline bo‘yicha priority queue, heap yoki timing wheel ishlatadi. Event loop eng yaqin timergacha kutadi, I/O readiness kelganda callbacklarni bajaradi. Monotonic clock interval uchun, wall clock kalendar vaqt uchun tanlanadi.

Davriy vazifalar

Periodic task fixed-rate yoki fixed-delay bo‘lishi mumkin. Fixed-rate oldingi rejalashtirilgan vaqtga bog‘lanadi; kechikish yig‘ilsa catch-up siyosati kerak. Fixed-delay oldingi task tugagandan keyin kutadi va overlapni tabiiy cheklaydi.

Distributed bajarish

Distributed scheduler bir taskni bir nechta worker ayni paytda olmasligi uchun lease, fencing token yoki transactional claim ishlatadi. Exactly-once odatda qiyin; idempotent handler va at-least-once delivery amaliyroq.

Vaqt modeli

Clock shift, daylight-saving va timezone kalendar jadvalga ta’sir qiladi. UTC storage va aniq timezone rule kerak. Monotonic timer NTP correctiondan sakramaydi, lekin process restartdan keyin persistent jadval qayta yuklanadi.

Backpressure

Long task event loopni bloklamaydi; worker pool yoki async state machinega beriladi. Backpressure queue o‘sishini cheklaydi. Cancellation task boshlanmagan, running yoki side effectni boshlab bo‘lgan holatlarda turlicha semantikaga ega.

Virtual vaqt sinovi

Test virtual clock bilan vaqtni tez suradi, boundary, overdue, restart, duplicate delivery va clock rollbackni qamraydi. Handler side effecti idempotency key bilan tekshiriladi.

Amaliy boshqaruv

Event Scheduler implementatsiyasida timer queue va delivery semantics alohida va versiyalangan holat sifatida yuritiladi. Qaror uchun zarur inputlar yashirin global taxminga aylantirilmaydi: platforma, konfiguratsiya, identity yoki memory-order sharti tegishli obyekt bilan bog‘lanadi. Shu sabab incremental yangilanish, context almashishi yoki parallel hodisada eskirgan ma’lumotdan foydalanish kamayadi. Debug rejim qarorni hosil qilgan edge, state transition va parametrlarni ko‘rsatadi; production log esa maxfiy qiymatlarni xom shaklda yozmaydi.

Muhim xato sinfi — clock shift, duplicate delivery yoki overlap. Bunday vaziyatda tizim optimistik tarzda davom etmaydi: semantikaga qarab konservativ fallback, bounded retry, taskni bloklash yoki aniq error tanlanadi. Timeout correctness isboti emas; u faqat operatsion limitdir. Queue membership, reference count, lock ownership va visibility kabi invariantlar state bilan atomik yangilanadi. Cancellation yoki failure o‘rtada yuz bersa qisman o‘zgargan holat cleanup protokoli orqali tiklanadi.

Sifat nazorati virtual clock va restart testi orqali bajariladi. Test normal yo‘ldan tashqari bo‘sh navbat, bitta element, yuqori contention, timeout bilan bir vaqtdagi wakeup, resurs limiti va platforma variantlarini qamraydi. To‘g‘rilik performance’dan alohida tekshiriladi; keyin throughput, p99 latency, context switch, cache miss yoki artefakt hajmi kabi mavzuga mos ko‘rsatkichlar baseline bilan solishtiriladi. Topilgan minimal interleaving yoki kirish regressiya to‘plamida doimiy saqlanadi.

Task identity va scheduled fire time execution logida saqlanadi. Worker kech qolsa misfire policy skip, darhol bajarish yoki cheklangan catch-updan birini tanlaydi. Bir taskning oldingi nusxasi ishlayotgan bo‘lsa overlap ruxsati, mutex yoki concurrency limit schedule definitionida aniq yoziladi.

Bog‘liq tushunchalar

event loop, timer, job scheduler, priority queue, cron, idempotency