Rate limiting — ma’lum vaqt oralig‘ida foydalanuvchi, IP manzil, token yoki tizim qancha so‘rov yuborishi mumkinligini cheklash mexanizmi. Bu usul web ilovalar, API, login tizimlari va server infratuzilmasida ortiqcha yuk, spam va brute force hujumlarini kamaytirish uchun ishlatiladi.
Rate limiting xavfsizlik va barqarorlik bilan bog‘liq tushuncha hisoblanadi. U foydalanuvchini butunlay bloklash emas, balki so‘rovlar sonini nazorat qilish vazifasini bajaradi.
Vazifasi
Rate limiting quyidagi vazifalarni bajaradi:
- API so‘rovlarini nazorat qilish;
- serverni ortiqcha yukdan himoyalash;
- brute force urinishlarini kamaytirish;
- spam va bot faoliyatini cheklash;
- login va parol tiklash endpointlarini himoyalash;
- pullik tariflarda limitlarni boshqarish;
- bir foydalanuvchi resurslarni haddan tashqari ishlatishini cheklash;
- xizmat barqarorligini saqlash.
Masalan, UzbekDevs API’da bitta foydalanuvchiga bir daqiqada 60 ta so‘rovga ruxsat berilsa, 61-so‘rov vaqtincha rad qilinishi mumkin.
Rate limiting qanday ishlaydi?
Rate limiting har bir so‘rovni hisoblaydi va belgilangan limit bilan solishtiradi.
Oddiy jarayon:
- client serverga so‘rov yuboradi;
- tizim foydalanuvchi, IP yoki tokenni aniqlaydi;
- shu identifikator bo‘yicha vaqt oralig‘idagi so‘rovlar soni tekshiriladi;
- limit oshmagan bo‘lsa, so‘rov bajariladi;
- limit oshgan bo‘lsa, server rad javobi qaytaradi.
Bunday javob odatda HTTP 429 Too Many Requests status kodi bilan beriladi.
Limit mezonlari
Rate limiting turli mezonlar asosida ishlashi mumkin:
- IP manzil;
- foydalanuvchi ID;
- API token;
- session;
- telefon raqami;
- email manzil;
- endpoint;
- user role;
- subscription plan.
Masalan, admin foydalanuvchi va oddiy foydalanuvchi uchun limitlar farqli bo‘lishi mumkin.
Fixed window
Fixed window — vaqtni aniq bo‘laklarga ajratib limit hisoblash usuli. Masalan, har bir daqiqa alohida oyna hisoblanadi.
Xususiyatlari:
- oddiy implementatsiya qilinadi;
- Redis yoki memory counter bilan ishlashi mumkin;
- oynaning boshida counter yangilanadi;
- vaqt chegarasida keskin trafik yig‘ilishi mumkin.
Masalan, 1 daqiqada 100 ta so‘rov limiti bo‘lsa, yangi daqiqa boshlanganda counter qayta nolga tushadi.
Sliding window
Sliding window — oxirgi ma’lum vaqt oralig‘idagi so‘rovlarni hisoblash usuli. Bu fixed windowga qaraganda aniqroq nazorat beradi.
Xususiyatlari:
- oxirgi 60 soniya kabi harakatlanuvchi oraliqni hisoblaydi;
- trafik keskin sakrashini kamaytiradi;
- hisoblash murakkabroq bo‘lishi mumkin;
- API limitlarda ko‘p ishlatiladi.
Sliding window foydalanuvchi harakatini vaqt bo‘yicha silliqroq nazorat qiladi.
Token bucket
Token bucket — har bir so‘rov uchun token sarflanadigan rate limiting modeli. Bucket ma’lum tezlikda token bilan to‘ldirib boriladi.
Jarayon:
- bucket ichida tokenlar bo‘ladi;
- har bir request bitta yoki bir nechta token sarflaydi;
- token mavjud bo‘lsa, request bajariladi;
- token tugasa, request cheklanadi;
- vaqt o‘tishi bilan tokenlar qayta to‘ldiriladi.
Bu model qisqa vaqtli trafik oshishini ma’lum darajada qabul qila oladi.
Leaky bucket
Leaky bucket — so‘rovlarni barqaror tezlikda chiqarishga asoslangan model. U trafikni tartibga solish uchun ishlatiladi.
Xususiyatlari:
- kiruvchi requestlar navbatga tushadi;
- chiqish tezligi nazorat qilinadi;
- ortiqcha requestlar rad qilinishi mumkin;
- trafikni silliqlashtiradi.
Leaky bucket serverga tushadigan yukni barqaror qilishda ishlatiladi.
Login tizimida ishlatilishi
Rate limiting login sahifalarida brute force hujumlariga qarshi qo‘llanadi.
Login uchun cheklovlar:
- IP bo‘yicha urinishlar soni;
- email bo‘yicha urinishlar soni;
- vaqtinchalik bloklash;
- CAPTCHA bilan bog‘lash;
- parol tiklash requestlarini cheklash.
Masalan, bitta email uchun 5 daqiqada 5 ta noto‘g‘ri parol urinishidan keyin vaqtincha kutish talab qilinishi mumkin.
API’da ishlatilishi
API tizimlarida rate limiting resurslardan adolatli foydalanish va serverni himoyalash uchun ishlatiladi.
- 100 request/minute;
- 1000 request/hour;
- 10 request/second;
- tarif bo‘yicha alohida limit;
- endpoint bo‘yicha alohida limit.
API response’da X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After kabi headerlar bo‘lishi mumkin.
Dasturlashdagi o‘rni
Rate limiting web ilova va API’larda xavfsizlik, barqarorlik va resurs boshqaruvi uchun kerak bo‘lgan muhim mexanizmdir. U requestlarni foydalanuvchi, IP, token yoki endpoint bo‘yicha nazorat qiladi.
Bog‘liq tushunchalar
API, HTTP, 429 Too Many Requests, Brute force, Redis, Cache, Security, Authentication, Token, Server