ما زمانی که api می نویسیم جندین درخواست(request) می فرستیم به سرور اینجوری حجم درخواستها بالا میره و امکان داره سرور هنگ کنه چیکار کنیم این درخواست ها کم بشه
در زبان یا فریم ورکی که api خود را برنامه نویسی کرده اید، بایستی از کتابخانه های rate limit به صورت middle ware و ... استفاده کنید تا یک کاربر بیش از حد درخواست ارسال نکند.
برای مثال در فریم ورک لاراول این کتابخانه وجود دارد:
https://github.com/GrahamCampbell/Laravel-Throttle
یا در Node.js و express:
https://www.npmjs.com/package/express-rate-limit
خب الگوریتم ها رو بهینه کنید تا جایی که کمترین ریکوئست رو لازم باشه بدید
توی میدلورهای لاراول توی کرنل بخش api میتونید تعداد حداکثر ریکوئست یک کاربر رو مشخص کنید که نتونه با ربات سرور رو دان کنه
'api' => [
'throttle:60,1',
'auth:api',
],
این نمونه کدی که آقای صفدری گذاشتن بهترین کار هست که می تونید انجام بدید،
خیلی هم راحته فقط باید توی Route ها Middleware رو فراخوانی کنید.
این دوتا عدد روبه روی throttle هم قابل تغییر هستن
عدد اول تعداد مجاز درخواست هست
عدد دوم برحسب دقیقه نوشته میشه
در کد بالا مشخص کرده که 60 درخواست در یک دقیقه می تونه کاربر درخواست کنه
خوب حساب کنیم ما ۱۰۰۰ کاربر هم زمان در سایت ما هر کدوم یک درخواست میفرسته در کل میشه ۱۰۰۰ requestدر یک ثانیه می دونید چه حجمی از سی پی یو درگیر میشه من میخوام این رو کنترل کنم آیا روشی هست برای بهینه کردن یا ساپورت کردن ۱۰۰۰ نفر در یک ثانیه؟
منظورم اینکه این درخواستها رو میشه بریزیم توی رم تا طرف اول بیاد توی رم اگر ان درخواست در رم بود از رم بخونه در غیر این صورت بره از دیتابیس بخونه فکر کنم اینجوری سی پی یو سرور درگیر نمیشه
بزار یک مثال قابل فهم بزنم من یک فایل تکس دارم داخل این فایل ۲۰۰ تا اسم سایت وجود دارهحالا من برنامه نوشتم که بره برای من اطلاعات whoisاین سایتها رو دربیاره و به من نمایش بده اینجا باعث میشه سیستم کرش کنه یا cpuبیشتر درگیر بشه و کارایی سیستم بیاد پایین.بجز از محدود کردن کاربر به تعداد درخواستها آیا راهی وجود داره برای حل این مشکل
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟