Rate limiting дегеніміз не? Қолданба құрастырушыларға арналған қарапайым нұсқаулық
Rate limiting — біреу белгілі уақыт ішінде жүйеге жасай алатын сұраныстар санын шектейтін ереже, мысалы минутына 5 кіру әрекеті немесе сағатына 100 API шақыруы. Шекке жеткен соң, одан кейінгі сұраныстар уақыт терезесі жаңарғанша қабылданбайды (әдетте 429 Too Many Requests қате коды арқылы). Ол қолданбаны теріс пайдаланудан қорғайды, бір ауыр пайдаланушының барлығын баяулатуын болдырмайды және бақылаусыз шығынның алдын алады.
Rate limiting-ті екі жақтан кездестіресіз: сіз шақыратын қызметтер сізді шектейді, ал сіздің қолданбаңыз өз пайдаланушыларын шектеуі керек.
AI-мен құрғанда rate limiting неге маңызды
AI арқылы құрылған қолданбалар жиі ақылы қызметтерге қосылады — AI модельдер, электрондық пошта, SMS, карталар — және әр шақыру ақша тұрады. Сондықтан rate limiting қауіпсіздік функциясы да, бюджет функциясы да болып табылады.
- Шығынды бақылау. Қолданбада «AI-дан сұра» терезесі бар, ал шек жоқ болса, бот түнде мыңдаған сұраныс жібере алады. Әр бірі үшін ақы төлейсіз.
- Қауіпсіздік. Кіру формасында шек болмаса, шабуылдаушы бір есептік жазбаға мыңдаған құпия сөзді сынай алады. Минутына бірнеше әрекеттің шегі мұны іс жүзінде мүмкін етпейді.
- Онлайн күйде қалу. Бір дұрыс жұмыс істемейтін скрипт — кейде өз кодыңыз цикльде қалып қойса да — дерекқорыңызды асып түсіріп, қолданбаны өшіріп тастауы мүмкін.
- Басқа қызметтердің шектеулерін сақтау. Қолданбаңыз сыртқы API-ді тым жиі шақырса, 429 қателерін сіз аласыз, ал пайдаланушыларыңыздың мүмкіндіктері бұзылады.
AI құрастырғыштар сұрағаныңызды жасайды. Шектерді атамасаңыз, олар жиі түсіп қалады.
Күнделікті салыстыру
Кафенің тегін толықтыру ережесін елестетіңіз: «Әр клиентке бір кіру кезінде бір тегін толықтыру.»
- Ол ешкімнің кофе ішуіне кедергі келтірмейді.
- Бір адамның кеңсе үшін бүкіл күнге термосты толтыруын тоқтатады.
- Төртінші толықтыруды сұраған кезде бариста сыпайы түрде «қазір болмайды» дейді — міне, бұл
429.
Жақсы шектеу қалыпты клиенттерге көрінбейді және тек ерекше әрекет жасаған адамға ғана білінеді.
Rate limiting қалай жұмыс істейді
Rate limiter үш нәрсені қажет етеді:
| Бөлік | Қандай сұраққа жауап береді | Мысалдар |
|---|---|---|
| Кім | Кімнің сұраныстары санала жатыр? | Пайдаланушы есептік жазбасы, IP мекенжайы, API кілті |
| Қанша | Шек қандай? | 5, 60, 1 000 сұраныс |
| Қандай уақытта | Қандай терезеде? | Секунд, минут, сағат, күн сайын |
Сұраныс келгенде, қолданба сол «кімнің» санауышын тексереді. Шектен төмен болса, сұраныс өтеді және санауыш көбейеді. Шектен асса, сұраныс қабылданбайды.
Санаудың бірнеше кең тараған тәсілі бар:
| Әдіс | Қалай жұмыс істейді | Айырбас |
|---|---|---|
| Бекітілген терезе | Санауыш сағат бойынша қайта орнайды — мысалы, әр минут басында | Қарапайым, бірақ екі терезенің шекарасында жарылыс рұқсат етеді |
| Жылжымалы терезе | Қазірден бастап соңғы 60 секундты қарайды | Жұмсақ, есептеуі сәл көбірек |
| Токен бакеті | Әр пайдаланушының тұрақты жылдамдықпен толатын себеті бар; әр сұраныс бір токен алады | Орташа жылдамдықты сақтай отырып қысқа жарылысқа рұқсат береді |
Санауыштар жылдам әрі ортақ жерде сақталуы керек. Бір кішкентай серверде жад жеткілікті. Қолданба бірнеше машинада жұмыс істегенде санауыш әдетте Redis сияқты ортақ қоймада немесе дерекқордың өзінде болады, әйтпесе әр машина өз бетінше санайды және нақты шек бірнеше есе жоғарылайды.
Шектелген жауап қалай көрінеді
Сұраныс шектен асқанда, жақсы API мынаны қайтарады:
429 Too Many Requestsстатус коды.- Көбіне
Retry-Afterтақырыбы, онда күту керек секунд саны көрсетіледі. - Кейде шегіңізді және осы терезеде қанша сұраныс қалғанын көрсететін тақырыптар (аттары провайдерге қарай өзгереді).
Қолданбаңыз 429-ға жауап ретінде күтуі және кейінірек қайта әрекет жасауы керек — мүмкіндігінше экспоненциалды backoff арқылы, яғни әр сәтсіз әрекеттен кейін бірте-бірте ұзағырақ күту (1 секунд, содан кейін 2, 4) және қызметті бірден қайта-қайта соққыға алмау.
Жұмыс мысалы: AI жазу көмекшісі
Пайдаланушылар мәтін қойып, AI-дан қайта жазылған нұсқа алатын қолданба құрдыңыз делік.
Шектеусіз: біреу түнде 20 000 сұраныс жіберетін скрипт жазады. AI провайдер шоты кенеттен көтеріледі, ал сіздің есептік жазбаңыз провайдердің өз rate limit-іне тірелеп, нақты пайдаланушылар таңертеңге дейін қателер көреді.
Ақылға қонымды шектеулермен:
- Кірген пайдаланушыға: тегін тарифте сағатына 30 қайта жазу, ақылыда 300. Шектен асқанда пайдаланушы көреді: «Бұл сағаттық шегіңізге жеттіңіз. 12 минуттан кейін қайта көріңіз немесе тарифті жаңартыңыз.»
- Тіркеу формасында IP мекенжайға: сағатына 5 тіркеу, бот пайдаланушыға шектен айналып, мыңдаған тегін есептік жазба ашпас үшін.
- AI провайдер панелінде орнатылған шығын шегі — бәрі сәтсіз болса, соңғы қорған ретінде.
- Провайдердің шектерін өңдеу: AI провайдер 429 қайтарса, сервер бір-екі рет күтіп қайталайды, содан кейін «қазір бос емес, қайта көріңіз» деген мейірімді хабарлама көрсетеді.
Шектер серверде тексеріледі. Тек браузерде ғана бар шек — мысалы, 30 рет басқаннан кейін түймені өшіру — API-ді тікелей шақыратын кез келген адам айналып өте алады.
Негізгі терминдер
| Термин | Мағынасы |
|---|---|
| Rate limit | Уақыт терезесінде рұқсат етілген сұраныстардың ең көп саны. |
| Квота | Әдетте күн немесе ай сайынғы үлкенірек рұқсат, кейде ақылы тарифпен байланысты. |
| 429 | «Тым көп сұраныс» дегенді білдіретін HTTP статус коды. |
| Retry-After | Қайта әрекет жасамас бұрын қанша уақыт күту керектігін айтатын жауап тақырыбы. |
| Throttling | Шектен асқан сұраныстарды баяулату немесе қабылдамау. Жиі синоним ретінде қолданылады. |
| Экспоненциалды backoff | Қайталаулар арасында біртіндеп ұзағырақ күту. |
| Burst | Бір уақытта көп сұраныстың қысқа шырқау өрлеуі. |
| Brute-force шабуыл | Бірі дұрыс шыққанша көптеген құпия сөздерді немесе кодтарды сынау. |
Жиі кездесетін түсініспеушіліктер
- «Rate limiting тек үлкен қолданбаларға керек». Шағын қолданбалар да нысана болады, себебі ботлар ашық формалар мен AI соңғы нүктелерін іздеп барлық интернетті сканерлейді. Теріс пайдаланудың шығыны сіздің көлеміңізге тәуелді емес.
- «Түймені жасыру жеткілікті». Браузердегі шектер — сыпайылық, қорғаныс емес. Нақты шектер серверде орындалуы керек.
- «IP бойынша шектер әрқашан әділ». Көп адам бір IP мекенжайды бөлісуі мүмкін — кеңсе, мектеп, ұялы желі. Адамдар кірген соң пайдаланушы бойынша шектер әділірек.
- «429 қызметтің бұзылғанын білдіреді». Ол сіз оны тым жиі шақырып жатқаныңызды білдіреді. Кодыңыздағы циклдарды тексеріңіз және жиі өзгермейтін нәтижелерді кэштеңіз — қараңыз: кэштеу дегеніміз не.
- «Rate limiting шығын шегінің орнын басады». Екеуін де қолданыңыз. Қолданбадағы шектерде қате болуы мүмкін; провайдердің шығын шегі — сіздің соңғы сүйеніш нүктеңіз.
AI құрастырғышыңыздан не сұрау керек
- «Кіру, тіркелу, құпия сөзді қалпына келтіру және AI соңғы нүктесіне сервер жағында rate limiting қос. Ақылға қонымды шектерді ұсын.»
- «Әр кірген пайдаланушыға сағатына [N] AI сұранысынан артық рұқсат берме, шекке жеткенде күту уақытын көрсетіп, айқын хабарлама көрсет.»
- «Сыртқы API 429 қайтарса, 3 рет экспоненциалды backoff-пен қайталап, содан кейін мейірімді қате көрсет.»
- «Rate-limit санауыштары қайда сақталады? Қолданба бірнеше машинада жұмыс істесе, олар әлі жұмыс істей ме?»
- «Пайдаланушы немесе IP шекке жеткен сайын жаз, сонда теріс пайдалануды байқай аламын.»
- «Бұл қолданба қандай сыртқы қызметтерді шақырады және олардың rate limit-тері қандай?»
Mythex-те rate limiting
Mythex құжаттары AI мүмкіндіктері үшін мұны анық айтады: сіз құрған қолданбадағы rate limit-тер, қауіпсіздік және шығын бақылауы — сіздің жобалауыңызда. Қараңыз: AI қолданба құру. Мүмкіндікті сұраған сол хабарламада агенттен шектерді қосуын сұраңыз. Pro тарифінде жарияланған қызмет трафик көп болғанда үш машинаға дейін жұмыс істей алады (қараңыз: Хостинг шектері), сондықтан санауыштарды бір сервердің жадында емес, дерекқордағы сақтауды сұраңыз.
Тағы оқыңыз: API дегеніміз не, LLM API-лерін қалай пайдалану керек және AI арқылы құрылған қолданбаларға арналған қауіпсіздік тексеріс парағы.
Сұрақтар
Қарапайым тілмен айтқанда, rate limiting дегеніміз не?
Rate limiting — пайдаланушы, құрылғы немесе қолданба белгілі кезеңде жасай алатын сұраныстар санын шектейтін ереже, мысалы минутына 5 кіру әрекеті немесе сағатына 100 API шақыруы. Шектен асқан сұраныстар терезе жаңарғанша қабылданбайды.
429 Too Many Requests қатесі нені білдіреді?
HTTP 429 статусы тым қысқа уақытта тым көп сұраныс жібергеніңізді және rate limit-ке тап болғаныңызды білдіреді. Жауапта көбіне қанша уақыт күту керектігін айтатын Retry-After тақырыбы болады. Түзету — жылдамдықты азайту, үзіліспен қайталау немесе қолданбаңыздың қызметті шақыру жиілігін төмендету.
AI негізіндегі қолданбама неге rate limiting керек?
Әрбір AI сұранысы токендер арқылы ақша шығындайды. Шектеусіз бір пайдаланушы немесе бот мыңдаған сұраныс жіберіп, үлкен шот туғызуы немесе провайдер квотасын таусып, мүмкіндікті барлығы үшін өшіруі мүмкін. Пайдаланушыға бөлек шектеулер шығынды болжамды етеді.
Rate limiting пен throttling бірдей ме?
Олар тығыз байланысты және жиі бір-бірінің орнында қолданылады. Rate limiting әдетте шектен асқан сұраныстарды қабылдамауды білдіреді, ал throttling оларды бірден бас тартудың орнына баяулатуды немесе кезекке қоюды да білдіруі мүмкін.
Rate limiting DDoS шабуылдарын тоқтата ала ма?
Ол жеке пайдаланушылардың немесе IP мекенжайлардың кішігірім шабуылдары мен теріс пайдалануына көмектеседі, бірақ үлкен таратылған шабуыл көптеген мекенжайлардан бірден келеді. Оған қарсы қорғаныс әдетте трафик қолданбаңызға жетпес бұрын желі немесе CDN деңгейінде жасалады.