Deadline — amal yoki so‘rov yakunlanishi kerak bo‘lgan mutlaq vaqt chegarasidir. Distributed tizimda u qolgan vaqt budgetini xizmatlar zanjiri bo‘ylab uzatib, kech qolgan ish uchun resurs sarflashni to‘xtatadi. Deadline timeoutga yaqin, lekin timeout odatda hozirdan boshlab davomiylik, deadline esa aniq vaqt nuqtasidir.
Vaqt budgeti
Mijoz 500 ms ichida javob kutsa, gateway, service va database har biri alohida 500 ms ishlatmasligi kerak. End-to-end budget parsing, queue, network va processing orasida taqsimlanadi. Upstream qolgan vaqtni downstreamga uzatadi.
Downstream timeout upstream deadline’dan kichik bo‘lib, javobni qayta ishlash va fallback uchun oz zaxira qoldiradi. Har qatlam default timeout qo‘shsa umumiy latency kutilganidan oshishi mumkin.
Mutlaq va nisbiy vaqt
Bir process ichida monotonic clock davomiylik o‘lchash uchun xavfsiz; wall clock NTP correction yoki administrator o‘zgarishi bilan sakrashi mumkin. Network bo‘ylab mutlaq timestamp uzatilsa clock skew hisobga olinadi.
Ko‘p RPC framework deadline’ni receiver tomonda remaining durationga aylantiradi. Protocol qaysi timezone va precisiondan foydalanishini aniq belgilaydi. Juda uzoq yoki allaqachon o‘tgan qiymat input validationdan o‘tadi.
Cancellation
Deadline o‘tganda kutayotgan call cancel qilinadi, ammo remote ish avtomatik to‘xtaganiga kafolat yo‘q. Cancellation signal downstream va database drivergacha tarqalishi kerak. Aks holda client ketganidan keyin server qimmat queryni davom ettiradi.
Cleanup cancellation-safe bo‘ladi. Lock bo‘shatiladi, temporary file o‘chiriladi, partial transaction rollback qilinadi. Critical commit bosqichi cancel bilan noaniq natija bersa, client operation statusni idempotency key orqali tekshiradi.
Queue va scheduling
Queue’da deadline’ning katta qismi sarflanishi mumkin. Worker ishni boshlashdan oldin qolgan budget foydali bajarishga yetishini tekshiradi. Earliest Deadline First real-time schedulingda eng yaqin deadline’li vazifani ustun qo‘yadi.
Hard real-time tizimda deadline buzilishi qabul qilib bo‘lmas xato, soft real-time’da esa sifat pasayishi hisoblanadi. Worst-case execution time va admission control hard deadline kafolati uchun zarur.
Retry
Retry umumiy deadline ichida bajariladi. Har urinishga to‘liq original timeout berish request storm va kech javob yaratadi. Backoff, urinish soni va connection setup qolgan budgetga moslanadi.
Hedged request tail latency’ni kamaytirish uchun birinchi so‘rov sekinlashganda ikkinchi nusxani yuboradi, ammo dependency yukini oshiradi. Faqat idempotent amalda va qat’iy budget bilan qo‘llanadi.
Kuzatuv
Tracing span deadline, queue time, processing va cancellation sababini ko‘rsatadi. deadline_exceeded server xatosi, client cancellation va connect timeoutdan ajratiladi. Histogram percentile’lari SLO bilan solishtiriladi; o‘rtacha qiymat deadline buziladigan tail’ni yashirishi mumkin.
Deadline tarqalishi
Taqsimlangan chaqiruvda qolgan vaqt quyi xizmatga metadata sifatida uzatiladi. Har bir qatlam o‘z timeoutini boshlang‘ich to‘liq muddatdan emas, qolgan budgetdan hisoblaydi; aks holda zanjirning har bosqichi alohida uzoq kutib, foydalanuvchi deadline’i o‘tgandan keyin ham ishni davom ettiradi. Server deadline tugaganda hisoblashni, ma’lumotlar bazasi so‘rovini va keyingi RPC’larni cancellation orqali to‘xtatishi kerak. Monotonik soat davomiylikni o‘lchash uchun devor soatidan ishonchliroq, chunki tizim vaqti sinxronlash sabab sakrashi mumkin. Telemetriyada boshlang‘ich budget va tugash paytidagi qolgan vaqt bottleneckni ko‘rsatadi.
Fon vazifasida foydalanuvchi so‘rovidan mustaqil yangi deadline kerak bo‘lishi mumkin. Aks holda ota so‘rov bekor bo‘lgach zarur tasdiqlash yoki tozalash amali yarim qoladi.
Bog‘liq tushunchalar
Timeout, Cancellation, Time budget, Real-time system, Retry, Tail latency